13:54:31.240 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:54:31.241 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=5.1ms idle=0.0ms UPDATE "oban_jobs" AS o0 SET "state" = ? WHERE (o0."state" = 'executing') ["retryable"] 13:54:31.241 [info] Reset 0 executing jobs 13:54:31.241 [info] Creating blank file: /config/extras/cookies.txt 13:54:31.241 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:54:31.242 [info] Creating blank file: /config/extras/yt-dlp-configs/base-config.txt 13:54:31.242 [info] Creating blank file and making it executable: /config/extras/user-scripts/lifecycle 13:54:31.243 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:54:31.243 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 13:54:31.244 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:54:31.248 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:54:32.131 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2025.09.26 13:54:32.131 [info] [command_wrapper]: /usr/local/bin/apprise called with: --version 13:54:32.290 [debug] [command_wrapper]: /usr/local/bin/apprise called with: --version exited: 0 with: Apprise v1.9.4 Copyright (C) 2025 Chris Caron This code is licensed under the BSD 2-Clause License. 13:54:32.290 [debug] QUERY OK source="settings" db=0.0ms queue=0.1ms idle=1049.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:32.291 [debug] QUERY OK source="settings" db=0.9ms idle=1048.6ms UPDATE "settings" SET "yt_dlp_version" = ? WHERE "id" = ? ["2025.09.26", 1] 13:54:32.292 [debug] QUERY OK source="settings" db=0.2ms idle=1048.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:32.292 [debug] QUERY OK source="settings" db=0.3ms idle=1043.9ms UPDATE "settings" SET "apprise_version" = ? WHERE "id" = ? ["v1.9.4", 1] 13:54:32.292 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:54:32.295 [info] {"message":"notifier only receiving messages from its own node, functionality may be degraded","source":"oban","event":"notifier:switch","connectivity_status":"solitary"} 13:54:32.300 [info] Running PinchflatWeb.Endpoint with cowboy 2.13.0 at 0.0.0.0:8945 (http) 13:54:32.301 [info] Access PinchflatWeb.Endpoint at http://localhost:8945 13:54:32.307 [info] {"args":{},"id":1,"meta":{},"system_time":1784894072307820110,"max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","event":"job:start","attempt":1,"tags":["local_data"]} 13:54:32.308 [info] Updating yt-dlp 13:54:32.308 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update 13:54:34.234 [debug] Tzdata polling for update. 13:54:34.391 [info] tzdata release in place is from a file last modified Thu, 16 Jan 2025 17:10:51 GMT. Release file on server was last modified Wed, 08 Jul 2026 18:02:48 GMT. 13:54:34.391 [debug] Tzdata downloading new data from https://data.iana.org/time-zones/tzdata-latest.tar.gz 13:54:34.474 [debug] Tzdata data downloaded. Release version 2026c. 13:54:34.604 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update exited: 0 with: Current version: stable@2025.09.26 from yt-dlp/yt-dlp Latest version: stable@2026.07.04 from yt-dlp/yt-dlp Current Build Hash: d2f07382138f4bd882254996502636f5a67a8c5ee5ab8a25807e2784a4878642 Updating to stable@2026.07.04 from yt-dlp/yt-dlp ... Updated yt-dlp to stable@2026.07.04 from yt-dlp/yt-dlp 13:54:34.604 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 13:54:35.034 [info] Tzdata has updated the release from 2025a to 2026c 13:54:35.034 [debug] Tzdata deleting ETS table for version 2025a 13:54:35.036 [debug] Tzdata deleting ETS table file for version 2025a 13:54:35.553 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2026.07.04 13:54:35.554 [debug] QUERY OK source="settings" db=0.6ms idle=1318.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:54:35.554 [debug] QUERY OK source="settings" db=0.2ms idle=1318.8ms UPDATE "settings" SET "yt_dlp_version" = ? WHERE "id" = ? ["2026.07.04", 1] 13:54:35.555 [info] {"args":{},"id":1,"meta":{},"state":"success","max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","duration":3246964,"event":"job:stop","queue_time":307036,"attempt":1,"tags":["local_data"]} 13:55:00.296 [info] {"source":"oban","duration":206,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:55:02.296 [info] {"source":"oban","duration":567,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:32.297 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:43.649 [notice] SIGTERM received - shutting down 13:55:43.674 [notice] :alarm_handler: {:clear, :system_memory_high_watermark} 13:55:43.675 [notice] :alarm_handler: {:clear, {:disk_almost_full, ~c"/"}} 13:55:43.675 [notice] :alarm_handler: {:clear, {:disk_almost_full, ~c"/downloads"}} 13:55:47.038 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:55:47.038 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:55:47.038 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:55:47.038 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:55:47.038 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 13:55:47.039 [debug] QUERY OK source="oban_jobs" db=0.3ms queue=4.5ms idle=0.0ms UPDATE "oban_jobs" AS o0 SET "state" = ? WHERE (o0."state" = 'executing') ["retryable"] 13:55:47.039 [info] Reset 0 executing jobs 13:55:47.040 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 13:55:47.915 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2025.09.26 13:55:47.916 [info] [command_wrapper]: /usr/local/bin/apprise called with: --version 13:55:48.068 [debug] [command_wrapper]: /usr/local/bin/apprise called with: --version exited: 0 with: Apprise v1.9.4 Copyright (C) 2025 Chris Caron This code is licensed under the BSD 2-Clause License. 13:55:48.070 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1030.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:48.070 [debug] QUERY OK source="settings" db=0.6ms idle=1030.8ms UPDATE "settings" SET "yt_dlp_version" = ? WHERE "id" = ? ["2025.09.26", 1] 13:55:48.071 [debug] QUERY OK source="settings" db=0.3ms idle=1031.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:48.071 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:55:48.073 [info] {"message":"notifier only receiving messages from its own node, functionality may be degraded","source":"oban","event":"notifier:switch","connectivity_status":"solitary"} 13:55:48.077 [info] Running PinchflatWeb.Endpoint with cowboy 2.13.0 at 0.0.0.0:8945 (http) 13:55:48.078 [info] Access PinchflatWeb.Endpoint at http://localhost:8945 13:55:48.085 [info] {"args":{},"id":2,"meta":{},"system_time":1784894148085329283,"max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","event":"job:start","attempt":1,"tags":["local_data"]} 13:55:48.085 [info] Updating yt-dlp 13:55:48.085 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update 13:55:50.010 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update exited: 0 with: Current version: stable@2025.09.26 from yt-dlp/yt-dlp Latest version: stable@2026.07.04 from yt-dlp/yt-dlp Current Build Hash: d2f07382138f4bd882254996502636f5a67a8c5ee5ab8a25807e2784a4878642 Updating to stable@2026.07.04 from yt-dlp/yt-dlp ... Updated yt-dlp to stable@2026.07.04 from yt-dlp/yt-dlp 13:55:50.011 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 13:55:51.031 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2026.07.04 13:55:51.032 [debug] QUERY OK source="settings" db=0.6ms idle=998.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:55:51.032 [debug] QUERY OK source="settings" db=0.3ms idle=998.9ms UPDATE "settings" SET "yt_dlp_version" = ? WHERE "id" = ? ["2026.07.04", 1] 13:55:51.033 [info] {"args":{},"id":2,"meta":{},"state":"success","max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","duration":2947593,"event":"job:stop","queue_time":84538,"attempt":1,"tags":["local_data"]} 13:56:00.074 [info] {"source":"oban","duration":257,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:56:03.579 [info] GET / 13:56:03.579 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:56:03.580 [debug] QUERY OK source="settings" db=0.2ms idle=1546.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:03.581 [debug] QUERY OK source="settings" db=0.6ms idle=1547.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:03.581 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1492.5ms SELECT 1 FROM "media_profiles" AS m0 LIMIT 1 [] 13:56:03.582 [debug] QUERY OK source="sources" db=0.0ms idle=548.3ms SELECT 1 FROM "sources" AS s0 LIMIT 1 [] 13:56:03.582 [debug] QUERY OK source="settings" db=0.2ms idle=491.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:03.582 [debug] QUERY OK source="settings" db=0.3ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:03.585 [info] Sent 200 in 5ms 13:56:07.391 [info] GET /media_profiles/new 13:56:07.391 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 13:56:07.392 [debug] QUERY OK source="settings" db=0.1ms idle=358.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:07.392 [debug] QUERY OK source="settings" db=0.1ms idle=358.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:07.392 [debug] QUERY OK source="settings" db=0.0ms idle=359.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:07.393 [debug] QUERY OK source="settings" db=0.1ms idle=359.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:56:07.394 [info] Sent 200 in 2ms 13:56:18.075 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:48.076 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:00.075 [info] {"source":"oban","duration":156,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:57:15.911 [info] POST /media_profiles 13:57:15.912 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.create/2 Parameters: %{"_csrf_token" => "OjAPWV8zLgcjNBkQLBIwTQsjIUpCAjE6Icht4PDdDQkyuSVtRJoyz3Yy", "media_profile" => %{"audio_track" => "", "download_auto_subs" => "false", "download_metadata" => "false", "download_nfo" => "false", "download_source_images" => "false", "download_subs" => "false", "download_thumbnail" => "false", "embed_metadata" => "false", "embed_subs" => "false", "embed_thumbnail" => "false", "livestream_behaviour" => "include", "media_container" => "", "name" => "Podcasts", "output_path_template" => "/{{ source_custom_name }}/{{ upload_yyyy_mm_dd }} {{ title }}/{{ title }} [{{ id }}].{{ ext }}", "preferred_resolution" => "1080p", "redownload_delay_days" => "", "shorts_behaviour" => "exclude", "sponsorblock_behaviour" => "mark", "sponsorblock_categories" => ["sponsor", "intro", "outro", "selfpromo", "preview", "filler", "interaction", "music_offtopic"], "sub_langs" => "en"}, "media_profile_preset" => "default"} Pipelines: [:browser] 13:57:15.913 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1879.1ms INSERT INTO "media_profiles" ("name","output_path_template","sponsorblock_categories","sponsorblock_behaviour","download_thumbnail","embed_thumbnail","download_auto_subs","download_subs","embed_subs","sub_langs","preferred_resolution","download_metadata","embed_metadata","download_nfo","download_source_images","livestream_behaviour","shorts_behaviour","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19) RETURNING "id" ["Podcasts", "/{{ source_custom_name }}/{{ upload_yyyy_mm_dd }} {{ title }}/{{ title }} [{{ id }}].{{ ext }}", ["sponsor", "intro", "outro", "selfpromo", "preview", "filler", "interaction", "music_offtopic"], :mark, false, false, false, false, false, "en", :"1080p", false, false, false, false, :include, :exclude, ~U[2026-07-24 11:57:15Z], ~U[2026-07-24 11:57:15Z]] 13:57:15.914 [debug] QUERY OK source="settings" db=0.4ms idle=1742.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:15.914 [info] Sent 302 in 2ms 13:57:15.927 [info] GET / 13:57:15.927 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"onboarding" => "1"} Pipelines: [:browser] 13:57:15.927 [debug] QUERY OK source="settings" db=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 [] 13:57:15.928 [debug] QUERY OK source="media_profiles" db=0.0ms idle=894.3ms SELECT 1 FROM "media_profiles" AS m0 LIMIT 1 [] 13:57:15.928 [debug] QUERY OK source="sources" db=0.0ms idle=756.0ms SELECT 1 FROM "sources" AS s0 LIMIT 1 [] 13:57:15.928 [debug] QUERY OK source="settings" db=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 [] 13:57:15.928 [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 [] 13:57:15.929 [info] Sent 200 in 2ms 13:57:18.076 [info] {"source":"oban","duration":497,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:18.356 [info] GET /sources/new 13:57:18.356 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 13:57:18.357 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1323.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:57:18.357 [debug] QUERY OK source="settings" db=0.1ms idle=1323.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:18.358 [debug] QUERY OK source="settings" db=0.2ms idle=1183.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:18.358 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=281.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:18.359 [debug] QUERY OK source="settings" db=0.3ms idle=183.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:57:18.361 [info] Sent 200 in 5ms 13:57:48.078 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:00.077 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:58:11.099 [info] POST /sources 13:58:11.099 [debug] Processing with PinchflatWeb.Sources.SourceController.create/2 Parameters: %{"_csrf_token" => "PDQDQwMaLCpKMBlcOhtXTBAGN2JWdBkmOgdnhyFI-Uk5cZ1uIoyQnEqe", "download_cutoff_date_preset" => "", "source" => %{"cookie_behaviour" => "disabled", "custom_name" => "The Standup", "download_cutoff_date" => "", "download_media" => "true", "fast_index" => "false", "index_frequency_minutes" => "1440", "max_duration_seconds" => "", "media_profile_id" => "1", "min_duration_seconds" => "", "original_url" => "https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P", "output_path_template_override" => "", "retention_period_days" => "", "title_filter_regex" => ""}} Pipelines: [:browser] 13:58:11.099 [debug] Running yt-dlp command for action: get_source_details 13:58:11.100 [debug] QUERY OK source="settings" db=0.1ms idle=1066.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:11.100 [debug] QUERY OK source="settings" db=0.0ms idle=1066.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:11.100 [debug] QUERY OK source="settings" db=0.1ms idle=1067.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:11.101 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/00/3c/003cafa9ef8f3555c785505a7fc2594c6f3f8f8ecb528dc153ce0b234c4afc57.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:15.266 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/00/3c/003cafa9ef8f3555c785505a7fc2594c6f3f8f8ecb528dc153ce0b234c4afc57.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:15.267 [debug] QUERY OK source="sources" db=0.6ms idle=1027.6ms INSERT INTO "sources" ("enabled","uuid","original_url","media_profile_id","custom_name","collection_id","collection_name","collection_type","download_media","fast_index","index_frequency_minutes","cookie_behaviour","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14) RETURNING "id" [true, "6d6132e3-0434-4a17-9843-fab099fbe97d", "https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P", 1, "The Standup", "PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk", "The Standup", :playlist, true, false, 1440, :disabled, ~U[2026-07-24 11:58:15Z], ~U[2026-07-24 11:58:15Z]] 13:58:15.268 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=234.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."worker" LIKE ?) AND (o1."state" IN (?,?,?,?)) [1, "%.MediaCollectionIndexingWorker", "available", "scheduled", "retryable", "executing"] 13:58:15.269 [debug] QUERY OK source="tasks" db=0.2ms idle=28.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [3, 1, ~U[2026-07-24 11:58:15Z], ~U[2026-07-24 11:58:15Z]] 13:58:15.270 [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" [4, 1, ~U[2026-07-24 11:58:15Z], ~U[2026-07-24 11:58:15Z]] 13:58:15.270 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:15.270 [info] Sent 302 in 4171ms 13:58:15.276 [info] {"args":{"id":1},"id":4,"meta":{},"system_time":1784894295276306113,"max_attempts":3,"queue":"remote_metadata","worker":"Pinchflat.Metadata.SourceMetadataStorageWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","source_metadata","remote_metadata","show_in_dashboard"]} 13:58:15.277 [debug] QUERY OK source="sources" db=0.1ms queue=0.4ms 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" = ?) [1] 13:58:15.278 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.6ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:15.278 [debug] QUERY OK source="source_metadata" db=0.4ms queue=0.2ms idle=7.7ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [1] 13:58:15.279 [debug] Running yt-dlp command for action: get_source_details 13:58:15.280 [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 [] 13:58:15.280 [debug] QUERY OK source="settings" db=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:15.280 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:15.281 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/e7/1d/e71dbc6cf1bea92b92e244f3e4b508b6f6e228866c0c3ca38f4a883621b7492c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:15.290 [info] GET / 13:58:15.290 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"onboarding" => "1"} Pipelines: [:browser] 13:58:15.290 [debug] QUERY OK source="settings" db=0.5ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:15.291 [debug] QUERY OK source="media_profiles" db=0.2ms idle=12.3ms SELECT 1 FROM "media_profiles" AS m0 LIMIT 1 [] 13:58:15.291 [debug] QUERY OK source="sources" db=0.0ms idle=11.1ms SELECT 1 FROM "sources" AS s0 LIMIT 1 [] 13:58:15.291 [debug] QUERY OK source="settings" db=0.2ms idle=11.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:15.292 [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 [] 13:58:15.292 [info] Sent 200 in 2ms 13:58:16.248 [info] {"args":{"id":1},"id":3,"meta":{},"system_time":1784894296248205340,"max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 13:58:16.249 [debug] QUERY OK source="sources" db=1.0ms idle=956.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:16.249 [debug] QUERY OK source="settings" db=0.2ms idle=957.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:16.250 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=958.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")))) [1] 13:58:16.251 [debug] QUERY OK source="media_items" db=0.5ms idle=9.3ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:58:16.251 [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] 13:58:16.252 [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 [] 13:58:16.252 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:16.253 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 13:58:16.253 [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 [] 13:58:16.253 [debug] Current batch of media processed. Will check again in 1000ms 13:58:16.253 [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 [] 13:58:16.254 [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 [] 13:58:16.254 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/e2/8a/e28a2e3e030769f1760d9ed80a5ad54873d3bffc9c67bf4fdc74ba7cec097910.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:17.237 [info] GET / 13:58:17.237 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"onboarding" => "0"} Pipelines: [:browser] 13:58:17.237 [debug] QUERY OK source="settings" db=0.3ms idle=985.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:17.238 [debug] QUERY OK source="settings" db=0.1ms idle=985.2ms UPDATE "settings" SET "onboarding" = ? WHERE "id" = ? [false, 1] 13:58:17.238 [debug] QUERY OK source="settings" db=0.1ms idle=984.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:17.238 [debug] QUERY OK source="media_profiles" db=0.1ms idle=985.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:58:17.239 [debug] QUERY OK source="sources" db=0.0ms idle=984.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:58:17.239 [debug] QUERY OK source="media_items" db=0.1ms idle=1.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:17.239 [debug] QUERY OK source="media_items" db=0.0ms queue=0.1ms idle=1.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:17.239 [debug] QUERY OK source="settings" db=0.1ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:17.240 [debug] QUERY OK source="settings" db=0.1ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:17.241 [debug] QUERY OK source="settings" db=0.5ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:17.242 [debug] QUERY OK source="tasks" db=0.3ms idle=2.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", 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:58:17.242 [debug] QUERY OK source="sources" db=0.0ms queue=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:17.243 [debug] QUERY OK source="media_items" db=0.0ms queue=0.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:17.244 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=2.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:58:17.245 [debug] QUERY OK source="media_items" db=0.1ms queue=0.4ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:58:17.246 [debug] QUERY OK source="media_items" db=0.4ms queue=0.9ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:58:17.247 [info] Sent 200 in 10ms 13:58:17.254 [debug] Current batch of media processed. Will check again in 1000ms 13:58:17.412 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "PR0UGi4UOBsBUwgPYXA0DCgCI2NweAQWNNs7EwRxf6zf81R5qkmPHIlU", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:17.440 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded"} 13:58:17.441 [debug] QUERY OK source="media_items" db=0.2ms idle=197.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:58:17.441 [debug] QUERY OK source="media_items" db=0.5ms 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 INNER JOIN "sources" AS s1 ON s1."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:58:17.441 [debug] Replied in 1ms 13:58:17.442 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending"} 13:58:17.443 [debug] QUERY OK source="media_items" db=0.6ms idle=198.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"))) [] 13:58:17.444 [debug] QUERY OK source="media_items" db=0.8ms idle=198.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:58:17.444 [debug] Replied in 1ms 13:58:17.444 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:17.446 [debug] QUERY OK source="tasks" db=1.0ms idle=198.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:58:17.446 [debug] QUERY OK source="sources" db=0.3ms idle=5.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:17.447 [debug] Replied in 2ms 13:58:17.447 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:17.447 [debug] Replied in 74µs 13:58:18.079 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:18.255 [debug] Current batch of media processed. Will check again in 1000ms 13:58:19.191 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/e7/1d/e71dbc6cf1bea92b92e244f3e4b508b6f6e228866c0c3ca38f4a883621b7492c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:19.192 [debug] Running yt-dlp command for action: get_source_metadata 13:58:19.195 [debug] QUERY OK source="settings" db=0.9ms idle=1115.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:19.197 [debug] QUERY OK source="settings" db=1.5ms idle=951.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:19.199 [debug] QUERY OK source="settings" db=2.0ms idle=163.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:19.199 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --skip-download --convert-thumbnails jpg --output /tmp/pinchflat/data/063f0ea4f46ebde0/source_image.%(ext)S --write-thumbnail --playlist-items 1 --print-to-file playlist:%()j /tmp/pinchflat/data/68/9c/689c94540125a0a1c17bedfa07f3c36c4e46268adf5f733f0e140aa2cbdcea40.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:19.256 [debug] Current batch of media processed. Will check again in 1000ms 13:58:20.257 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Don’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nFull Episode:\nYoutube: https://youtu.be/PxNr7k1v-Rk\nSpotify: https://open.spotify.com/episode/4VOHebTzXEThro58G1ArKp\n\n[Description]\nWe dive deep into technical performance debates, specifically the nuances of floating-point math—is multiplying by a reciprocal actually faster than division on modern CPUs?\n\nWe also break down the latest from Microsoft and NVIDIA, including the \"RTX Spark\" and the vision of \"unmetered intelligence.\" Plus, don't miss \"Trash Facts\" about professional bowling and the latest \"Snack Picks.\"\n\n[Chapters]\n00:00:00 - Intro\n00:03:32 - CodeRabbit\n00:05:28 - Prime Blocker\n00:27:48 - Outro\n\n[Partners]\nLinear: https://trm.sh/linear\nSentry: https://trm.sh/sentry\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 1693, "filename" => "/downloads/The Standup/2026-06-07 Casey Destroys Optimization Myths | TheStandup/Casey Destroys Optimization Myths | TheStandup [pslodI0Mh_0].mp4", "id" => "pslodI0Mh_0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=pslodI0Mh_0", "playlist_index" => 1, "timestamp" => 1780837211, "title" => "Casey Destroys Optimization Myths | TheStandup", "upload_date" => "20260607"} 13:58:20.259 [debug] QUERY OK source="sources" db=1.4ms idle=1062.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:20.261 [debug] QUERY OK source="sources" db=0.7ms queue=1.0ms idle=1062.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:20.264 [debug] QUERY OK source="media_items" db=0.4ms queue=1.9ms idle=1062.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-07 13:00:11Z], 1] 13:58:20.268 [debug] QUERY OK source="media_items" db=2.5ms idle=1019.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Don’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nFull Episode:\nYoutube: https://youtu.be/PxNr7k1v-Rk\nSpotify: https://open.spotify.com/episode/4VOHebTzXEThro58G1ArKp\n\n[Description]\nWe dive deep into technical performance debates, specifically the nuances of floating-point math—is multiplying by a reciprocal actually faster than division on modern CPUs?\n\nWe also break down the latest from Microsoft and NVIDIA, including the \"RTX Spark\" and the vision of \"unmetered intelligence.\" Plus, don't miss \"Trash Facts\" about professional bowling and the latest \"Snack Picks.\"\n\n[Chapters]\n00:00:00 - Intro\n00:03:32 - CodeRabbit\n00:05:28 - Prime Blocker\n00:27:48 - Outro\n\n[Partners]\nLinear: https://trm.sh/linear\nSentry: https://trm.sh/sentry\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Casey Destroys Optimization Myths | TheStandup", "00f5a2e5-0a5b-4e47-8531-2be60054e052", 1693, false, "pslodI0Mh_0", "https://www.youtube.com/watch?v=pslodI0Mh_0", 1, "/downloads/The Standup/2026-06-07 Casey Destroys Optimization Myths | TheStandup/Casey Destroys Optimization Myths | TheStandup [pslodI0Mh_0].mp4", false, false, false, 1, [], 0, ~U[2026-06-07 13:00:11Z], ~U[2026-07-24 11:58:20Z], ~U[2026-07-24 11:58:20Z], "Don’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nFull Episode:\nYoutube: https://youtu.be/PxNr7k1v-Rk\nSpotify: https://open.spotify.com/episode/4VOHebTzXEThro58G1ArKp\n\n[Description]\nWe dive deep into technical performance debates, specifically the nuances of floating-point math—is multiplying by a reciprocal actually faster than division on modern CPUs?\n\nWe also break down the latest from Microsoft and NVIDIA, including the \"RTX Spark\" and the vision of \"unmetered intelligence.\" Plus, don't miss \"Trash Facts\" about professional bowling and the latest \"Snack Picks.\"\n\n[Chapters]\n00:00:00 - Intro\n00:03:32 - CodeRabbit\n00:05:28 - Prime Blocker\n00:27:48 - Outro\n\n[Partners]\nLinear: https://trm.sh/linear\nSentry: https://trm.sh/sentry\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Casey Destroys Optimization Myths | TheStandup", 1693, false, "pslodI0Mh_0", "https://www.youtube.com/watch?v=pslodI0Mh_0", "/downloads/The Standup/2026-06-07 Casey Destroys Optimization Myths | TheStandup/Casey Destroys Optimization Myths | TheStandup [pslodI0Mh_0].mp4", false, 1, ~U[2026-06-07 13:00:11Z]] 13:58:20.270 [debug] QUERY OK source="sources" db=0.5ms queue=0.3ms 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" = ?) [1] 13:58:20.273 [debug] QUERY OK source="media_profiles" db=1.6ms queue=0.5ms idle=11.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:20.274 [debug] QUERY OK source="media_items" db=0.2ms queue=1.1ms idle=11.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1] 13:58:20.274 [info] Kicking off download for media item #1 (pslodI0Mh_0) 13:58:20.277 [debug] QUERY OK source="tasks" db=0.4ms idle=5.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [5, 1, ~U[2026-07-24 11:58:20Z], ~U[2026-07-24 11:58:20Z]] 13:58:20.277 [debug] Current batch of media processed. Will check again in 1000ms 13:58:20.283 [info] {"args":{"id":1},"id":5,"meta":{},"system_time":1784894300283192039,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:58:20.284 [debug] QUERY OK source="media_items" db=0.3ms queue=0.2ms 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" = ?) [1] 13:58:20.285 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=8.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:58:20.285 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:58:20.285 [debug] QUERY OK source="sources" db=0.2ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:20.286 [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] 13:58:20.286 [debug] QUERY OK source="media_items" db=0.6ms queue=0.3ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" = ?) [1] 13:58:20.287 [debug] QUERY OK source="sources" db=1.5ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:20.287 [debug] QUERY OK source="media_items" db=1.0ms idle=1.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1] 13:58:20.289 [debug] QUERY OK source="media_metadata" db=0.5ms queue=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" = ?) [1] 13:58:20.290 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:20.290 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:20.290 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:20.291 [debug] Running yt-dlp command for action: get_downloadable_status 13:58:20.293 [debug] QUERY OK source="settings" db=0.2ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:20.293 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:20.294 [debug] QUERY OK source="settings" db=0.7ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:20.294 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pslodI0Mh_0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/44/3f44cafd3c04c4698b901436aeb0f135bc19737f555a736260ea37a984ff8538.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:21.277 [debug] Current batch of media processed. Will check again in 1000ms 13:58:22.280 [debug] Current batch of media processed. Will check again in 1000ms 13:58:23.281 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nFull Episode\nSpotify: https://open.spotify.com/episode/7xcNgaZ7d0PgCNqNk9v1ge?si=BoDbRw6rRuSfhQ48wlGTkA\nYoutube: https://youtu.be/AapTIwXPztM\n\nPeep Trash’s Dotfiles: https://github.com/bautistaaa/dotfiles\n\nTrash takes us through his \"hell on earth\" first week switching from Mac to Linux. From battling Wi-Fi drivers on an ancient MacBook Air to discovering the aesthetic joy of Hyperland and custom dot files, this episode covers the highs and lows of the Linux desktop experience. We also dive into the messy definitions of AGI, the utility of efficiency cores in modern CPUs, and why everyone needs a dedicated snack officer.\n\nChapters\n00:00:00 - Intro\n00:00:22 - Choosing a Linux Distro\n00:03:41 - MergeCop\n00:05:32 - Back to Distros\n00:08:42 - Hyprland\n00:11:37 - Scuffed Demo\n00:19:47 - Compositors\n00:22:31 - Linux Pilled\n00:23:46 - Configuration for Everything\n00:25:47 - Picking a Laptop for Linux\n00:29:35 - More Distros\n00:31:06 - Packages and User land\n00:48:17 - DirectX\n00:50:15 - Distro differences and Install experiences\n00:54:57 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3359, "filename" => "/downloads/The Standup/2026-05-30 Trash VS Linux | TheStandup/Trash VS Linux | TheStandup [kSuMjLbjqsI].mp4", "id" => "kSuMjLbjqsI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kSuMjLbjqsI", "playlist_index" => 2, "timestamp" => 1780146014, "title" => "Trash VS Linux | TheStandup", "upload_date" => "20260530"} 13:58:23.283 [debug] QUERY OK source="sources" db=0.9ms decode=0.1ms queue=0.1ms idle=1248.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:23.284 [debug] QUERY OK source="sources" db=0.9ms idle=1249.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:23.285 [debug] QUERY OK source="media_items" db=0.6ms idle=1030.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-30 13:00:14Z], 1] 13:58:23.292 [debug] QUERY OK source="media_items" db=6.3ms idle=252.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nFull Episode\nSpotify: https://open.spotify.com/episode/7xcNgaZ7d0PgCNqNk9v1ge?si=BoDbRw6rRuSfhQ48wlGTkA\nYoutube: https://youtu.be/AapTIwXPztM\n\nPeep Trash’s Dotfiles: https://github.com/bautistaaa/dotfiles\n\nTrash takes us through his \"hell on earth\" first week switching from Mac to Linux. From battling Wi-Fi drivers on an ancient MacBook Air to discovering the aesthetic joy of Hyperland and custom dot files, this episode covers the highs and lows of the Linux desktop experience. We also dive into the messy definitions of AGI, the utility of efficiency cores in modern CPUs, and why everyone needs a dedicated snack officer.\n\nChapters\n00:00:00 - Intro\n00:00:22 - Choosing a Linux Distro\n00:03:41 - MergeCop\n00:05:32 - Back to Distros\n00:08:42 - Hyprland\n00:11:37 - Scuffed Demo\n00:19:47 - Compositors\n00:22:31 - Linux Pilled\n00:23:46 - Configuration for Everything\n00:25:47 - Picking a Laptop for Linux\n00:29:35 - More Distros\n00:31:06 - Packages and User land\n00:48:17 - DirectX\n00:50:15 - Distro differences and Install experiences\n00:54:57 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash VS Linux | TheStandup", "25d90035-5c66-40d4-8581-754a85e77bfc", 3359, false, "kSuMjLbjqsI", "https://www.youtube.com/watch?v=kSuMjLbjqsI", 2, "/downloads/The Standup/2026-05-30 Trash VS Linux | TheStandup/Trash VS Linux | TheStandup [kSuMjLbjqsI].mp4", false, false, false, 1, [], 0, ~U[2026-05-30 13:00:14Z], ~U[2026-07-24 11:58:23Z], ~U[2026-07-24 11:58:23Z], "Thanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nFull Episode\nSpotify: https://open.spotify.com/episode/7xcNgaZ7d0PgCNqNk9v1ge?si=BoDbRw6rRuSfhQ48wlGTkA\nYoutube: https://youtu.be/AapTIwXPztM\n\nPeep Trash’s Dotfiles: https://github.com/bautistaaa/dotfiles\n\nTrash takes us through his \"hell on earth\" first week switching from Mac to Linux. From battling Wi-Fi drivers on an ancient MacBook Air to discovering the aesthetic joy of Hyperland and custom dot files, this episode covers the highs and lows of the Linux desktop experience. We also dive into the messy definitions of AGI, the utility of efficiency cores in modern CPUs, and why everyone needs a dedicated snack officer.\n\nChapters\n00:00:00 - Intro\n00:00:22 - Choosing a Linux Distro\n00:03:41 - MergeCop\n00:05:32 - Back to Distros\n00:08:42 - Hyprland\n00:11:37 - Scuffed Demo\n00:19:47 - Compositors\n00:22:31 - Linux Pilled\n00:23:46 - Configuration for Everything\n00:25:47 - Picking a Laptop for Linux\n00:29:35 - More Distros\n00:31:06 - Packages and User land\n00:48:17 - DirectX\n00:50:15 - Distro differences and Install experiences\n00:54:57 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash VS Linux | TheStandup", 3359, false, "kSuMjLbjqsI", "https://www.youtube.com/watch?v=kSuMjLbjqsI", "/downloads/The Standup/2026-05-30 Trash VS Linux | TheStandup/Trash VS Linux | TheStandup [kSuMjLbjqsI].mp4", false, 1, ~U[2026-05-30 13:00:14Z]] 13:58:23.295 [debug] QUERY OK source="sources" db=1.4ms queue=0.4ms 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" = ?) [1] 13:58:23.297 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.9ms idle=12.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:23.299 [debug] QUERY OK source="media_items" db=0.9ms queue=0.3ms idle=13.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 [2] 13:58:23.299 [info] Kicking off download for media item #2 (kSuMjLbjqsI) 13:58:23.307 [debug] QUERY OK source="tasks" db=0.6ms idle=11.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [6, 2, ~U[2026-07-24 11:58:23Z], ~U[2026-07-24 11:58:23Z]] 13:58:23.307 [debug] Current batch of media processed. Will check again in 1000ms 13:58:23.314 [info] {"args":{"id":2},"id":6,"meta":{},"system_time":1784894303314033979,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:58:23.315 [debug] QUERY OK source="media_items" db=1.1ms idle=14.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2] 13:58:23.316 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:58:23.317 [debug] QUERY OK source="sources" db=0.6ms queue=0.3ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:23.318 [debug] QUERY OK source="tasks" db=4.3ms idle=11.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:58:23.319 [debug] QUERY OK source="media_profiles" db=1.6ms queue=0.2ms 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] 13:58:23.320 [debug] QUERY OK source="sources" db=1.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" = ?) [1] 13:58:23.321 [debug] QUERY OK source="media_items" db=1.8ms idle=5.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [1, 2] 13:58:23.321 [debug] QUERY OK source="media_items" db=2.2ms idle=2.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [2] 13:58:23.331 [debug] QUERY OK source="media_metadata" db=0.5ms 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" = ?) [2] 13:58:23.332 [debug] QUERY OK source="media_profiles" db=0.5ms idle=12.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:23.334 [debug] QUERY OK source="settings" db=1.8ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:23.335 [debug] QUERY OK source="settings" db=0.7ms 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 [] 13:58:23.336 [debug] Running yt-dlp command for action: get_downloadable_status 13:58:23.338 [debug] QUERY OK source="settings" db=0.5ms idle=16.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:23.339 [debug] QUERY OK source="settings" db=1.0ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:23.341 [debug] QUERY OK source="settings" db=1.6ms idle=7.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:23.341 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kSuMjLbjqsI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ea/51/ea514f046bfbcc05b1d99b41c6b5f90a111617909b3aaf972a327ed141861aa2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:23.727 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --skip-download --convert-thumbnails jpg --output /tmp/pinchflat/data/063f0ea4f46ebde0/source_image.%(ext)S --write-thumbnail --playlist-items 1 --print-to-file playlist:%()j /tmp/pinchflat/data/68/9c/689c94540125a0a1c17bedfa07f3c36c4e46268adf5f733f0e140aa2cbdcea40.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:23.762 [debug] QUERY OK db=0.1ms queue=0.3ms idle=427.9ms begin [] 13:58:23.763 [debug] QUERY OK source="sources" db=0.1ms UPDATE "sources" SET "description" = ?, "updated_at" = ? WHERE "id" = ? ["The Standup is exactly like your standup, except you look forward to it. We don't get any work done. We talk about random stuff. You see your favorite people on the internet. Nothing too crazy, but it's always fun. We talk tech news, programming opinions and apparently bird knowledge thanks to Casey. Regular guests include Casey Muratori, Trash_dev, Dax, and more!", ~U[2026-07-24 11:58:23Z], 1] 13:58:23.765 [debug] QUERY OK source="source_metadata" db=1.6ms INSERT INTO "source_metadata" ("metadata_filepath","source_id","poster_filepath","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/sources/1/metadata.json.gz", 1, "/config/metadata/sources/1/poster.jpg", ~U[2026-07-24 11:58:23Z], ~U[2026-07-24 11:58:23Z]] 13:58:23.766 [debug] QUERY OK db=0.8ms commit [] 13:58:23.768 [info] {"args":{"id":1},"id":4,"meta":{},"state":"success","max_attempts":3,"queue":"remote_metadata","worker":"Pinchflat.Metadata.SourceMetadataStorageWorker","source":"oban","duration":8490419,"event":"job:stop","queue_time":275484,"attempt":1,"tags":["media_source","source_metadata","remote_metadata","show_in_dashboard"]} 13:58:23.769 [debug] QUERY OK source="tasks" db=1.0ms idle=430.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:58:23.771 [debug] QUERY OK source="media_items" db=0.5ms queue=1.3ms idle=430.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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [1, 2] 13:58:23.772 [debug] QUERY OK source="sources" db=0.5ms idle=429.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:24.035 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pslodI0Mh_0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3f/44/3f44cafd3c04c4698b901436aeb0f135bc19737f555a736260ea37a984ff8538.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:24.035 [debug] Running yt-dlp command for action: download 13:58:24.036 [debug] QUERY OK source="settings" db=0.6ms idle=267.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:24.036 [debug] QUERY OK source="settings" db=0.2ms idle=266.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:24.036 [debug] QUERY OK source="settings" db=0.2ms idle=264.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:24.038 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pslodI0Mh_0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0b/12/0b12ed7336ea0746db6123f41c5ae7dc1ceb4412b4db0ea0341375efdae84ade.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:24.308 [debug] Current batch of media processed. Will check again in 1000ms 13:58:25.309 [debug] Current batch of media processed. Will check again in 1000ms 13:58:26.312 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop \nYes, seriously, this is my company, and we selected and found some of the worlds best coffee. US only (for now (the world is hard when you dont do crappy influencer coffee))\n\nFull Ep on Spotify: https://open.spotify.com/episode/2aWwsR6wUnxFZx0Y8YadPK\nFull Ep on Youtube: https://www.youtube.com/watch?v=NvZmBF9YL5o\n\nChapters\n00:00:00 - Intro\n00:00:59 - Windows Run Dialog\n00:04:23 - Terminal Ad\n00:05:31 - FPS or ms\n00:10:49 - Latency\n00:16:39 - Casey Haters\n00:18:37 - FPS in the Web World\n00:32:35 - Red vs Blue\n00:33:21 - Microsoft Problems\n00:37:39 - The median\n00:40:16 - Windows Start Menu\n00:47:20 - Minecraft Machine\n00:48:19 - Windows is OVER\n00:54:14 - Windows 1\n00:54:45 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3311, "filename" => "/downloads/The Standup/2026-05-09 Microsoft doesn't understand FPS/Microsoft doesn't understand FPS [znRHdCDw9tQ].mp4", "id" => "znRHdCDw9tQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=znRHdCDw9tQ", "playlist_index" => 3, "timestamp" => 1778331720, "title" => "Microsoft doesn't understand FPS", "upload_date" => "20260509"} 13:58:26.312 [debug] QUERY OK source="sources" db=0.3ms idle=1051.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:26.313 [debug] QUERY OK source="sources" db=0.2ms idle=279.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:26.313 [debug] QUERY OK source="media_items" db=0.3ms idle=279.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-09 13:02:00Z], 1] 13:58:26.317 [debug] QUERY OK source="media_items" db=1.7ms queue=0.7ms idle=280.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \nYes, seriously, this is my company, and we selected and found some of the worlds best coffee. US only (for now (the world is hard when you dont do crappy influencer coffee))\n\nFull Ep on Spotify: https://open.spotify.com/episode/2aWwsR6wUnxFZx0Y8YadPK\nFull Ep on Youtube: https://www.youtube.com/watch?v=NvZmBF9YL5o\n\nChapters\n00:00:00 - Intro\n00:00:59 - Windows Run Dialog\n00:04:23 - Terminal Ad\n00:05:31 - FPS or ms\n00:10:49 - Latency\n00:16:39 - Casey Haters\n00:18:37 - FPS in the Web World\n00:32:35 - Red vs Blue\n00:33:21 - Microsoft Problems\n00:37:39 - The median\n00:40:16 - Windows Start Menu\n00:47:20 - Minecraft Machine\n00:48:19 - Windows is OVER\n00:54:14 - Windows 1\n00:54:45 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Microsoft doesn't understand FPS", "e6b2f8e1-ec22-4ed7-a374-c985815c4e75", 3311, false, "znRHdCDw9tQ", "https://www.youtube.com/watch?v=znRHdCDw9tQ", 3, "/downloads/The Standup/2026-05-09 Microsoft doesn't understand FPS/Microsoft doesn't understand FPS [znRHdCDw9tQ].mp4", false, false, false, 1, [], 0, ~U[2026-05-09 13:02:00Z], ~U[2026-07-24 11:58:26Z], ~U[2026-07-24 11:58:26Z], "ssh terminal.shop \nYes, seriously, this is my company, and we selected and found some of the worlds best coffee. US only (for now (the world is hard when you dont do crappy influencer coffee))\n\nFull Ep on Spotify: https://open.spotify.com/episode/2aWwsR6wUnxFZx0Y8YadPK\nFull Ep on Youtube: https://www.youtube.com/watch?v=NvZmBF9YL5o\n\nChapters\n00:00:00 - Intro\n00:00:59 - Windows Run Dialog\n00:04:23 - Terminal Ad\n00:05:31 - FPS or ms\n00:10:49 - Latency\n00:16:39 - Casey Haters\n00:18:37 - FPS in the Web World\n00:32:35 - Red vs Blue\n00:33:21 - Microsoft Problems\n00:37:39 - The median\n00:40:16 - Windows Start Menu\n00:47:20 - Minecraft Machine\n00:48:19 - Windows is OVER\n00:54:14 - Windows 1\n00:54:45 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Microsoft doesn't understand FPS", 3311, false, "znRHdCDw9tQ", "https://www.youtube.com/watch?v=znRHdCDw9tQ", "/downloads/The Standup/2026-05-09 Microsoft doesn't understand FPS/Microsoft doesn't understand FPS [znRHdCDw9tQ].mp4", false, 1, ~U[2026-05-09 13:02:00Z]] 13:58:26.320 [debug] QUERY OK source="sources" db=2.7ms idle=51.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:26.322 [debug] QUERY OK source="media_profiles" db=1.9ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:26.324 [debug] QUERY OK source="media_items" db=1.7ms 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 [3] 13:58:26.324 [info] Kicking off download for media item #3 (znRHdCDw9tQ) 13:58:26.332 [debug] QUERY OK source="tasks" db=3.6ms idle=8.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7, 3, ~U[2026-07-24 11:58:26Z], ~U[2026-07-24 11:58:26Z]] 13:58:26.333 [debug] Current batch of media processed. Will check again in 1000ms 13:58:26.642 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kSuMjLbjqsI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ea/51/ea514f046bfbcc05b1d99b41c6b5f90a111617909b3aaf972a327ed141861aa2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:26.642 [debug] Running yt-dlp command for action: download 13:58:26.643 [debug] QUERY OK source="settings" db=0.4ms idle=320.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:26.644 [debug] QUERY OK source="settings" db=1.0ms idle=318.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:26.645 [debug] QUERY OK source="settings" db=1.2ms idle=316.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:26.645 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kSuMjLbjqsI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ad/d1/add1a65441ab8147e2e3956fa598846a88dd0a116272fb756c6c874cdf9ef9f5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:27.333 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Full Ep on Spotify: https://open.spotify.com/episode/3Jrvpidho5r5JjosPWSmYh\nFull Ep on Youtube: https://www.youtube.com/watch?v=IGXvCMuDE9s\n\nDon’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nThe crew debates the internet’s latest impossible question: red button or blue button, and somehow turns it into a full philosophical breakdown of trust, self-preservation, group behavior, and whether Trash would doom humanity because he hates red cars. They also get into Pokémon card chaos, Wikipedia drama, Odin’s deleted page, and why modern “notability” might be broken.\n\nChapters\n00:00:00 - Intro\n00:00:21 - Blockers\n00:03:12 - Odin Wikipedia Drama\n00:16:51 - Merge Cop\n00:19:39 - More Wikipedia\n00:31:37 - Blue or Red Button\n00:45:40 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus I make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 2768, "filename" => "/downloads/The Standup/2026-05-02 Wikipedia Pressed the Red button on Odin | TheStandup/Wikipedia Pressed the Red button on Odin | TheStandup [uo1I6lS5DYU].mp4", "id" => "uo1I6lS5DYU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uo1I6lS5DYU", "playlist_index" => 4, "timestamp" => 1777726904, "title" => "Wikipedia Pressed the Red button on Odin | TheStandup", "upload_date" => "20260502"} 13:58:27.334 [debug] QUERY OK source="sources" db=0.5ms idle=1001.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:27.335 [debug] QUERY OK source="sources" db=0.7ms idle=691.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:27.336 [debug] QUERY OK source="media_items" db=0.5ms idle=691.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-02 13:01:44Z], 1] 13:58:27.338 [debug] QUERY OK source="media_items" db=1.4ms idle=690.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Full Ep on Spotify: https://open.spotify.com/episode/3Jrvpidho5r5JjosPWSmYh\nFull Ep on Youtube: https://www.youtube.com/watch?v=IGXvCMuDE9s\n\nDon’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nThe crew debates the internet’s latest impossible question: red button or blue button, and somehow turns it into a full philosophical breakdown of trust, self-preservation, group behavior, and whether Trash would doom humanity because he hates red cars. They also get into Pokémon card chaos, Wikipedia drama, Odin’s deleted page, and why modern “notability” might be broken.\n\nChapters\n00:00:00 - Intro\n00:00:21 - Blockers\n00:03:12 - Odin Wikipedia Drama\n00:16:51 - Merge Cop\n00:19:39 - More Wikipedia\n00:31:37 - Blue or Red Button\n00:45:40 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus I make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Wikipedia Pressed the Red button on Odin | TheStandup", "80083be9-3197-49d2-a500-734d34252555", 2768, false, "uo1I6lS5DYU", "https://www.youtube.com/watch?v=uo1I6lS5DYU", 4, "/downloads/The Standup/2026-05-02 Wikipedia Pressed the Red button on Odin | TheStandup/Wikipedia Pressed the Red button on Odin | TheStandup [uo1I6lS5DYU].mp4", false, false, false, 1, [], 0, ~U[2026-05-02 13:01:44Z], ~U[2026-07-24 11:58:27Z], ~U[2026-07-24 11:58:27Z], "Full Ep on Spotify: https://open.spotify.com/episode/3Jrvpidho5r5JjosPWSmYh\nFull Ep on Youtube: https://www.youtube.com/watch?v=IGXvCMuDE9s\n\nDon’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nThe crew debates the internet’s latest impossible question: red button or blue button, and somehow turns it into a full philosophical breakdown of trust, self-preservation, group behavior, and whether Trash would doom humanity because he hates red cars. They also get into Pokémon card chaos, Wikipedia drama, Odin’s deleted page, and why modern “notability” might be broken.\n\nChapters\n00:00:00 - Intro\n00:00:21 - Blockers\n00:03:12 - Odin Wikipedia Drama\n00:16:51 - Merge Cop\n00:19:39 - More Wikipedia\n00:31:37 - Blue or Red Button\n00:45:40 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus I make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Wikipedia Pressed the Red button on Odin | TheStandup", 2768, false, "uo1I6lS5DYU", "https://www.youtube.com/watch?v=uo1I6lS5DYU", "/downloads/The Standup/2026-05-02 Wikipedia Pressed the Red button on Odin | TheStandup/Wikipedia Pressed the Red button on Odin | TheStandup [uo1I6lS5DYU].mp4", false, 1, ~U[2026-05-02 13:01:44Z]] 13:58:27.338 [debug] QUERY OK source="sources" db=0.6ms idle=70.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:27.339 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:27.341 [debug] QUERY OK source="media_items" db=0.7ms 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 [4] 13:58:27.341 [info] Kicking off download for media item #4 (uo1I6lS5DYU) 13:58:27.344 [debug] QUERY OK source="tasks" db=0.4ms idle=4.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [8, 4, ~U[2026-07-24 11:58:27Z], ~U[2026-07-24 11:58:27Z]] 13:58:27.344 [debug] Current batch of media processed. Will check again in 1000ms 13:58:28.345 [debug] Current batch of media processed. Will check again in 1000ms 13:58:29.346 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Sentry: Catch, trace, and fix bugs across your entire stack. Use code: prime for $100 in free sentry credits → https://trm.sh/sentry\n\nAI, zero-days, and a whole lot of hot takes. The crew dives into the controversy around powerful new AI models and whether they’re making cybersecurity better or way more dangerous. From bug bounties to “anyone can hack now” fears, it’s a mix of serious debate, wild hypotheticals, and classic Standup chaos. \n\n00:00:00 - GeoHot Zero Day\n00:04:02 - CyberGym\n00:05:42 - The Claude Mythos Situation\n00:09:00 - Hacking Econ\n00:13:10 - 50 good programmers\n00:16:48 - AI Company Behaviour\n00:22:47 - Redbull and false claims\n00:25:41 - Opensource and reverse engineering\n00:29:20 - Model withholding and token costs\n00:33:24 - ARC-AGI Benchmarks\n00:37:51 - Vulnerability Research\n00:42:41 - Outro\n\n\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 2786, "filename" => "/downloads/The Standup/2026-04-19 The Mythos Situation | TheStandup/The Mythos Situation | TheStandup [6szQxMGX5JI].mp4", "id" => "6szQxMGX5JI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6szQxMGX5JI", "playlist_index" => 5, "timestamp" => 1776603620, "title" => "The Mythos Situation | TheStandup", "upload_date" => "20260419"} 13:58:29.347 [debug] QUERY OK source="sources" db=0.2ms idle=313.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:29.347 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=313.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:29.348 [debug] QUERY OK source="media_items" db=0.2ms idle=314.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-19 13:00:20Z], 1] 13:58:29.349 [debug] QUERY OK source="media_items" db=0.8ms idle=314.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sentry: Catch, trace, and fix bugs across your entire stack. Use code: prime for $100 in free sentry credits → https://trm.sh/sentry\n\nAI, zero-days, and a whole lot of hot takes. The crew dives into the controversy around powerful new AI models and whether they’re making cybersecurity better or way more dangerous. From bug bounties to “anyone can hack now” fears, it’s a mix of serious debate, wild hypotheticals, and classic Standup chaos. \n\n00:00:00 - GeoHot Zero Day\n00:04:02 - CyberGym\n00:05:42 - The Claude Mythos Situation\n00:09:00 - Hacking Econ\n00:13:10 - 50 good programmers\n00:16:48 - AI Company Behaviour\n00:22:47 - Redbull and false claims\n00:25:41 - Opensource and reverse engineering\n00:29:20 - Model withholding and token costs\n00:33:24 - ARC-AGI Benchmarks\n00:37:51 - Vulnerability Research\n00:42:41 - Outro\n\n\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Mythos Situation | TheStandup", "d8974825-b3ae-4e08-80cd-c71407b419d1", 2786, false, "6szQxMGX5JI", "https://www.youtube.com/watch?v=6szQxMGX5JI", 5, "/downloads/The Standup/2026-04-19 The Mythos Situation | TheStandup/The Mythos Situation | TheStandup [6szQxMGX5JI].mp4", false, false, false, 1, [], 0, ~U[2026-04-19 13:00:20Z], ~U[2026-07-24 11:58:29Z], ~U[2026-07-24 11:58:29Z], "Sentry: Catch, trace, and fix bugs across your entire stack. Use code: prime for $100 in free sentry credits → https://trm.sh/sentry\n\nAI, zero-days, and a whole lot of hot takes. The crew dives into the controversy around powerful new AI models and whether they’re making cybersecurity better or way more dangerous. From bug bounties to “anyone can hack now” fears, it’s a mix of serious debate, wild hypotheticals, and classic Standup chaos. \n\n00:00:00 - GeoHot Zero Day\n00:04:02 - CyberGym\n00:05:42 - The Claude Mythos Situation\n00:09:00 - Hacking Econ\n00:13:10 - 50 good programmers\n00:16:48 - AI Company Behaviour\n00:22:47 - Redbull and false claims\n00:25:41 - Opensource and reverse engineering\n00:29:20 - Model withholding and token costs\n00:33:24 - ARC-AGI Benchmarks\n00:37:51 - Vulnerability Research\n00:42:41 - Outro\n\n\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Mythos Situation | TheStandup", 2786, false, "6szQxMGX5JI", "https://www.youtube.com/watch?v=6szQxMGX5JI", "/downloads/The Standup/2026-04-19 The Mythos Situation | TheStandup/The Mythos Situation | TheStandup [6szQxMGX5JI].mp4", false, 1, ~U[2026-04-19 13:00:20Z]] 13:58:29.349 [debug] QUERY OK source="sources" db=0.2ms idle=79.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:29.350 [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] 13:58:29.350 [debug] QUERY OK source="media_items" db=0.1ms idle=2.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [5] 13:58:29.350 [info] Kicking off download for media item #5 (6szQxMGX5JI) 13:58:29.353 [debug] QUERY OK source="tasks" db=0.2ms idle=3.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [9, 5, ~U[2026-07-24 11:58:29Z], ~U[2026-07-24 11:58:29Z]] 13:58:29.353 [debug] Current batch of media processed. Will check again in 1000ms 13:58:29.754 [debug] HANDLE EVENT "reload_page" in Pinchflat.Pages.HistoryTableLive Parameters: %{"value" => ""} 13:58:29.755 [debug] QUERY OK source="media_items" db=1.0ms idle=404.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:29.756 [debug] QUERY OK source="media_items" db=0.6ms idle=405.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:58:29.756 [debug] Replied in 2ms 13:58:30.354 [debug] Current batch of media processed. Will check again in 1000ms 13:58:31.355 [debug] Current batch of media processed. Will check again in 1000ms 13:58:32.356 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Download Trash’s App Receipts Here: https://apps.apple.com/us/app/got-receipts/id6760623464\n\nFull episode on Spotify: https://open.spotify.com/episode/4wAFjFkbSPwoTkL6vClhsT\nFull episode on Youtube: https://youtu.be/QD-USE_Vzvs\n\nThanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nChocolate carrots, ghost hunting, and an app that might end marriages. We kick things off with Easter stories and a late-night haunted hotel adventure… then spiral into “Receipts” — a fully vibe-coded app designed to track every petty argument in your life. Yeah. It’s exactly what it sounds like.\n\nChapters\n00:00:00 - Lets get Started (Real intro)\n00:00:25 - Youtube Announcement\n00:01:18 - Trashs Explains His App\n00:03:32 - Merge Cop Ep 4 ends\n00:05:27 - Receipts App Demo\n00:17:34 - Feedback\n00:20:49 - Feature requests\n00:26:39 - Its a black mirror episode\n00:29:55 - The original Idea\n00:32:12 - Did this fix anything?\n00:36:01 - Wife challenge\n00:37:44 - Achievements and badges\n00:38:32 - App AI Dev Experience\n00:39:23 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 2441, "filename" => "/downloads/The Standup/2026-04-12 Trash Made a Black Mirror App | The Standup/Trash Made a Black Mirror App | The Standup [CCBe1shjGOw].mp4", "id" => "CCBe1shjGOw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CCBe1shjGOw", "playlist_index" => 6, "timestamp" => 1775998816, "title" => "Trash Made a Black Mirror App | The Standup", "upload_date" => "20260412"} 13:58:32.357 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1323.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:32.358 [debug] QUERY OK source="sources" db=0.6ms idle=1324.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:32.359 [debug] QUERY OK source="media_items" db=0.5ms idle=1325.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-12 13:00:16Z], 1] 13:58:32.361 [debug] QUERY OK source="media_items" db=1.3ms idle=1081.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Download Trash’s App Receipts Here: https://apps.apple.com/us/app/got-receipts/id6760623464\n\nFull episode on Spotify: https://open.spotify.com/episode/4wAFjFkbSPwoTkL6vClhsT\nFull episode on Youtube: https://youtu.be/QD-USE_Vzvs\n\nThanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nChocolate carrots, ghost hunting, and an app that might end marriages. We kick things off with Easter stories and a late-night haunted hotel adventure… then spiral into “Receipts” — a fully vibe-coded app designed to track every petty argument in your life. Yeah. It’s exactly what it sounds like.\n\nChapters\n00:00:00 - Lets get Started (Real intro)\n00:00:25 - Youtube Announcement\n00:01:18 - Trashs Explains His App\n00:03:32 - Merge Cop Ep 4 ends\n00:05:27 - Receipts App Demo\n00:17:34 - Feedback\n00:20:49 - Feature requests\n00:26:39 - Its a black mirror episode\n00:29:55 - The original Idea\n00:32:12 - Did this fix anything?\n00:36:01 - Wife challenge\n00:37:44 - Achievements and badges\n00:38:32 - App AI Dev Experience\n00:39:23 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash Made a Black Mirror App | The Standup", "bd39c63c-9dd6-48b6-87ae-70ecf78d9c48", 2441, false, "CCBe1shjGOw", "https://www.youtube.com/watch?v=CCBe1shjGOw", 6, "/downloads/The Standup/2026-04-12 Trash Made a Black Mirror App | The Standup/Trash Made a Black Mirror App | The Standup [CCBe1shjGOw].mp4", false, false, false, 1, [], 0, ~U[2026-04-12 13:00:16Z], ~U[2026-07-24 11:58:32Z], ~U[2026-07-24 11:58:32Z], "Download Trash’s App Receipts Here: https://apps.apple.com/us/app/got-receipts/id6760623464\n\nFull episode on Spotify: https://open.spotify.com/episode/4wAFjFkbSPwoTkL6vClhsT\nFull episode on Youtube: https://youtu.be/QD-USE_Vzvs\n\nThanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nChocolate carrots, ghost hunting, and an app that might end marriages. We kick things off with Easter stories and a late-night haunted hotel adventure… then spiral into “Receipts” — a fully vibe-coded app designed to track every petty argument in your life. Yeah. It’s exactly what it sounds like.\n\nChapters\n00:00:00 - Lets get Started (Real intro)\n00:00:25 - Youtube Announcement\n00:01:18 - Trashs Explains His App\n00:03:32 - Merge Cop Ep 4 ends\n00:05:27 - Receipts App Demo\n00:17:34 - Feedback\n00:20:49 - Feature requests\n00:26:39 - Its a black mirror episode\n00:29:55 - The original Idea\n00:32:12 - Did this fix anything?\n00:36:01 - Wife challenge\n00:37:44 - Achievements and badges\n00:38:32 - App AI Dev Experience\n00:39:23 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash Made a Black Mirror App | The Standup", 2441, false, "CCBe1shjGOw", "https://www.youtube.com/watch?v=CCBe1shjGOw", "/downloads/The Standup/2026-04-12 Trash Made a Black Mirror App | The Standup/Trash Made a Black Mirror App | The Standup [CCBe1shjGOw].mp4", false, 1, ~U[2026-04-12 13:00:16Z]] 13:58:32.361 [debug] QUERY OK source="sources" db=0.3ms idle=82.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:32.362 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:32.362 [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 [6] 13:58:32.363 [info] Kicking off download for media item #6 (CCBe1shjGOw) 13:58:32.364 [debug] QUERY OK source="tasks" db=0.3ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [10, 6, ~U[2026-07-24 11:58:32Z], ~U[2026-07-24 11:58:32Z]] 13:58:32.364 [debug] Current batch of media processed. Will check again in 1000ms 13:58:32.619 [info] GET /sources 13:58:32.619 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 13:58:32.621 [debug] QUERY OK source="settings" db=1.1ms idle=257.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:32.621 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=258.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:32.623 [debug] QUERY OK source="settings" db=0.6ms idle=258.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:32.625 [debug] QUERY OK source="settings" db=0.5ms idle=260.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:32.625 [debug] QUERY OK source="settings" db=0.7ms idle=260.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:32.627 [debug] QUERY OK source="sources" db=0.3ms queue=0.9ms idle=5.3ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:58:32.630 [debug] QUERY OK source="sources" db=0.8ms queue=1.2ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:58:32.632 [info] Sent 200 in 12ms 13:58:32.800 [info] CONNECTED TO Phoenix.LiveView.Socket in 52µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "ID0LZwU5Bw83JAFabisgWhMGH3BqYRk1SnlJnZmlPAs37jFcJoQCRPqv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:32.828 [debug] MOUNT PinchflatWeb.Sources.SourceLive.IndexTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "initial_sort_direction" => :asc, "initial_sort_key" => :custom_name, "results_per_page" => 10} 13:58:32.829 [debug] QUERY OK source="sources" db=0.6ms idle=204.9ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:58:32.830 [debug] QUERY OK source="sources" db=1.1ms idle=204.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:58:32.830 [debug] Replied in 2ms 13:58:32.832 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:32.832 [debug] Replied in 112µs 13:58:33.365 [debug] Current batch of media processed. Will check again in 1000ms 13:58:34.366 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/5JF055lquoK8LHjYuz3eJI\n\nThis week on The Standup, we sit down with the team behind Cloudflare’s “Vinext” experiment an attempt to bring the Next.js API surface onto a completely different runtime. What starts as a simple “why does this exist?” quickly turns into a deep dive on AI-driven development, open source in the age of agents, and what happens when an intern is told to “just build Next.js” .\n\nDane Knecht, Steve Faulkner, and Dillon Mulroy walk through how the project went from a half-finished intern prototype to a full-blown AI-assisted experiment complete with bots reviewing PRs, triaging issues, and even maintaining parity with the Next.js repo itself. Along the way, we get into the realities of maintaining a “not-a-fork-but-kind-of-a-fork,” why developers keep depending on undocumented behavior anyway, and how AI both creates and fixes its own messes .\n\nChapters\n00:00:00 - Intro\n00:01:41 - NextJs\n00:03:28 - Sentry\n00:04:27 - Interns and AI bots\n00:06:42 - Opensource in the AI world\n00:07:46 - Fork or not\n00:10:38 - Surface Area\n00:14:43 - Post Experiment\n00:15:53 - Mitigating Slop\n00:18:10 - Agentic Development\n00:27:37 - Reception\n00:31:13 - What is Vite?\n00:36:49 - Sentiment\n00:38:47 - Managing AI\n00:43:32 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 2644, "filename" => "/downloads/The Standup/2026-04-04 Maintaining a codebase with AI | The Standup/Maintaining a codebase with AI | The Standup [1o74a8a0rBw].mp4", "id" => "1o74a8a0rBw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1o74a8a0rBw", "playlist_index" => 7, "timestamp" => 1775307604, "title" => "Maintaining a codebase with AI | The Standup", "upload_date" => "20260404"} 13:58:34.368 [debug] QUERY OK source="sources" db=0.9ms idle=333.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:34.368 [debug] QUERY OK source="sources" db=0.3ms idle=334.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:34.369 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=335.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-04 13:00:04Z], 1] 13:58:34.373 [debug] QUERY OK source="media_items" db=2.8ms idle=336.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/5JF055lquoK8LHjYuz3eJI\n\nThis week on The Standup, we sit down with the team behind Cloudflare’s “Vinext” experiment an attempt to bring the Next.js API surface onto a completely different runtime. What starts as a simple “why does this exist?” quickly turns into a deep dive on AI-driven development, open source in the age of agents, and what happens when an intern is told to “just build Next.js” .\n\nDane Knecht, Steve Faulkner, and Dillon Mulroy walk through how the project went from a half-finished intern prototype to a full-blown AI-assisted experiment complete with bots reviewing PRs, triaging issues, and even maintaining parity with the Next.js repo itself. Along the way, we get into the realities of maintaining a “not-a-fork-but-kind-of-a-fork,” why developers keep depending on undocumented behavior anyway, and how AI both creates and fixes its own messes .\n\nChapters\n00:00:00 - Intro\n00:01:41 - NextJs\n00:03:28 - Sentry\n00:04:27 - Interns and AI bots\n00:06:42 - Opensource in the AI world\n00:07:46 - Fork or not\n00:10:38 - Surface Area\n00:14:43 - Post Experiment\n00:15:53 - Mitigating Slop\n00:18:10 - Agentic Development\n00:27:37 - Reception\n00:31:13 - What is Vite?\n00:36:49 - Sentiment\n00:38:47 - Managing AI\n00:43:32 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Maintaining a codebase with AI | The Standup", "1ce503d6-7c8e-4003-8616-eb8b7d78fd3d", 2644, false, "1o74a8a0rBw", "https://www.youtube.com/watch?v=1o74a8a0rBw", 7, "/downloads/The Standup/2026-04-04 Maintaining a codebase with AI | The Standup/Maintaining a codebase with AI | The Standup [1o74a8a0rBw].mp4", false, false, false, 1, [], 0, ~U[2026-04-04 13:00:04Z], ~U[2026-07-24 11:58:34Z], ~U[2026-07-24 11:58:34Z], "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/5JF055lquoK8LHjYuz3eJI\n\nThis week on The Standup, we sit down with the team behind Cloudflare’s “Vinext” experiment an attempt to bring the Next.js API surface onto a completely different runtime. What starts as a simple “why does this exist?” quickly turns into a deep dive on AI-driven development, open source in the age of agents, and what happens when an intern is told to “just build Next.js” .\n\nDane Knecht, Steve Faulkner, and Dillon Mulroy walk through how the project went from a half-finished intern prototype to a full-blown AI-assisted experiment complete with bots reviewing PRs, triaging issues, and even maintaining parity with the Next.js repo itself. Along the way, we get into the realities of maintaining a “not-a-fork-but-kind-of-a-fork,” why developers keep depending on undocumented behavior anyway, and how AI both creates and fixes its own messes .\n\nChapters\n00:00:00 - Intro\n00:01:41 - NextJs\n00:03:28 - Sentry\n00:04:27 - Interns and AI bots\n00:06:42 - Opensource in the AI world\n00:07:46 - Fork or not\n00:10:38 - Surface Area\n00:14:43 - Post Experiment\n00:15:53 - Mitigating Slop\n00:18:10 - Agentic Development\n00:27:37 - Reception\n00:31:13 - What is Vite?\n00:36:49 - Sentiment\n00:38:47 - Managing AI\n00:43:32 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Maintaining a codebase with AI | The Standup", 2644, false, "1o74a8a0rBw", "https://www.youtube.com/watch?v=1o74a8a0rBw", "/downloads/The Standup/2026-04-04 Maintaining a codebase with AI | The Standup/Maintaining a codebase with AI | The Standup [1o74a8a0rBw].mp4", false, 1, ~U[2026-04-04 13:00:04Z]] 13:58:34.373 [debug] QUERY OK source="sources" db=0.3ms idle=92.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:34.374 [debug] QUERY OK source="media_profiles" db=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] 13:58:34.374 [debug] QUERY OK source="media_items" db=0.4ms 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 [7] 13:58:34.374 [info] Kicking off download for media item #7 (1o74a8a0rBw) 13:58:34.376 [debug] QUERY OK source="tasks" db=0.1ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [11, 7, ~U[2026-07-24 11:58:34Z], ~U[2026-07-24 11:58:34Z]] 13:58:34.376 [debug] Current batch of media processed. Will check again in 1000ms 13:58:34.888 [info] GET /sources/1 13:58:34.888 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:58:34.889 [debug] QUERY OK source="sources" db=0.5ms idle=514.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:34.889 [debug] QUERY OK source="media_profiles" db=0.1ms idle=514.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:34.890 [debug] QUERY OK source="tasks" db=0.2ms idle=513.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 (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 13:58:34.890 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=0.1ms idle=514.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" = ?) [3] 13:58:34.891 [debug] QUERY OK source="settings" db=1.2ms idle=514.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:34.892 [debug] QUERY OK source="settings" db=0.4ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:34.893 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:34.894 [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" = ?) [1] 13:58:34.895 [debug] QUERY OK source="media_items" db=0.1ms queue=0.2ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:58:34.896 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms 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 ? [1, 10, 0] 13:58:34.897 [debug] QUERY OK source="sources" db=0.8ms 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" = ?) [1] 13:58:34.898 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=4.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:58:34.899 [debug] QUERY OK source="media_items" db=0.3ms queue=0.5ms idle=4.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:58:34.900 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:34.902 [debug] QUERY OK source="media_items" db=0.5ms queue=0.4ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 13:58:34.904 [debug] QUERY OK source="media_items" db=0.4ms queue=1.1ms idle=4.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:58:34.905 [info] Sent 200 in 16ms 13:58:35.083 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "JzkefFIMWwYJKRcoLgUEUjotJUpbUlwITjyQ9o1enLeAwDbkcDkycc4K", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:35.108 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending", "source_id" => 1} 13:58:35.110 [debug] QUERY OK source="sources" db=1.9ms idle=209.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:35.112 [debug] QUERY OK source="media_items" db=1.1ms idle=211.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")))) [1] 13:58:35.116 [debug] QUERY OK source="media_items" db=3.2ms idle=211.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 ? [1, 10, 0] 13:58:35.116 [debug] Replied in 7ms 13:58:35.117 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded", "source_id" => 1} 13:58:35.118 [debug] QUERY OK source="sources" db=0.3ms idle=215.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:35.119 [debug] QUERY OK source="media_items" db=0.8ms idle=214.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:58:35.119 [debug] QUERY OK source="media_items" db=0.3ms idle=8.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 ? [1, 10, 0] 13:58:35.119 [debug] Replied in 2ms 13:58:35.120 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "other", "source_id" => 1} 13:58:35.121 [debug] QUERY OK source="sources" db=0.5ms idle=8.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:35.122 [debug] QUERY OK source="media_items" db=0.4ms queue=0.4ms idle=5.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"))))) [1] 13:58:35.123 [debug] QUERY OK source="media_items" db=0.6ms queue=0.2ms idle=4.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:58:35.124 [debug] Replied in 3ms 13:58:35.124 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:35.125 [debug] Replied in 72µs 13:58:35.377 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/11fZy7K1Fu488QMRNLQqZo?si=7e9861c2397d4f09 \n\nThis week on The Standup, we start with snack addictions and somehow spiral into one of the most unhinged breakdowns of tech, startups, and internet culture yet. TJ, DV, Casey, and Trash Dev are back—debating failed Apple products, LinkedIn nonsense, terrible data visualizations, and wild AI takes. Somewhere in the chaos, we even touch on algorithms, complexity, and why most of it doesn’t mean what people think it does. Chaotic, honest, and pretty much how developers actually talk. If you’ve ever questioned the tech industry… this one’s for you.\n\nChapters\n00:00:00 - Introduction\n00:01:45 - Teej was wrong\n00:03:50 - Sentry\n00:05:15 - Apple buyers\n00:06:43 - LinkedIn Translator\n00:10:57 - Complexity\n00:31:55 - Gratitude\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 2768, "filename" => "/downloads/The Standup/2026-03-22 Thanks for all your hard work you are no longer needed | TheStandup/Thanks for all your hard work you are no longer needed | TheStandup [effIaRawUdA].mp4", "id" => "effIaRawUdA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=effIaRawUdA", "playlist_index" => 8, "timestamp" => 1774184468, "title" => "Thanks for all your hard work you are no longer needed | TheStandup", "upload_date" => "20260322"} 13:58:35.378 [debug] QUERY OK source="sources" db=0.7ms idle=258.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:35.379 [debug] QUERY OK source="sources" db=0.2ms idle=257.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:35.379 [debug] QUERY OK source="media_items" db=0.1ms idle=256.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-22 13:01:08Z], 1] 13:58:35.381 [debug] QUERY OK source="media_items" db=0.9ms idle=255.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/11fZy7K1Fu488QMRNLQqZo?si=7e9861c2397d4f09 \n\nThis week on The Standup, we start with snack addictions and somehow spiral into one of the most unhinged breakdowns of tech, startups, and internet culture yet. TJ, DV, Casey, and Trash Dev are back—debating failed Apple products, LinkedIn nonsense, terrible data visualizations, and wild AI takes. Somewhere in the chaos, we even touch on algorithms, complexity, and why most of it doesn’t mean what people think it does. Chaotic, honest, and pretty much how developers actually talk. If you’ve ever questioned the tech industry… this one’s for you.\n\nChapters\n00:00:00 - Introduction\n00:01:45 - Teej was wrong\n00:03:50 - Sentry\n00:05:15 - Apple buyers\n00:06:43 - LinkedIn Translator\n00:10:57 - Complexity\n00:31:55 - Gratitude\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanks for all your hard work you are no longer needed | TheStandup", "093e9b74-909c-4322-a5a5-2a20b0d5896e", 2768, false, "effIaRawUdA", "https://www.youtube.com/watch?v=effIaRawUdA", 8, "/downloads/The Standup/2026-03-22 Thanks for all your hard work you are no longer needed | TheStandup/Thanks for all your hard work you are no longer needed | TheStandup [effIaRawUdA].mp4", false, false, false, 1, [], 0, ~U[2026-03-22 13:01:08Z], ~U[2026-07-24 11:58:35Z], ~U[2026-07-24 11:58:35Z], "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/11fZy7K1Fu488QMRNLQqZo?si=7e9861c2397d4f09 \n\nThis week on The Standup, we start with snack addictions and somehow spiral into one of the most unhinged breakdowns of tech, startups, and internet culture yet. TJ, DV, Casey, and Trash Dev are back—debating failed Apple products, LinkedIn nonsense, terrible data visualizations, and wild AI takes. Somewhere in the chaos, we even touch on algorithms, complexity, and why most of it doesn’t mean what people think it does. Chaotic, honest, and pretty much how developers actually talk. If you’ve ever questioned the tech industry… this one’s for you.\n\nChapters\n00:00:00 - Introduction\n00:01:45 - Teej was wrong\n00:03:50 - Sentry\n00:05:15 - Apple buyers\n00:06:43 - LinkedIn Translator\n00:10:57 - Complexity\n00:31:55 - Gratitude\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanks for all your hard work you are no longer needed | TheStandup", 2768, false, "effIaRawUdA", "https://www.youtube.com/watch?v=effIaRawUdA", "/downloads/The Standup/2026-03-22 Thanks for all your hard work you are no longer needed | TheStandup/Thanks for all your hard work you are no longer needed | TheStandup [effIaRawUdA].mp4", false, 1, ~U[2026-03-22 13:01:08Z]] 13:58:35.381 [debug] QUERY OK source="sources" db=0.1ms idle=98.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:35.381 [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] 13:58:35.382 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8] 13:58:35.382 [info] Kicking off download for media item #8 (effIaRawUdA) 13:58:35.383 [debug] QUERY OK source="tasks" db=0.1ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [12, 8, ~U[2026-07-24 11:58:35Z], ~U[2026-07-24 11:58:35Z]] 13:58:35.383 [debug] Current batch of media processed. Will check again in 1000ms 13:58:36.384 [debug] Current batch of media processed. Will check again in 1000ms 13:58:37.385 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nssh terminal.shop\n\nWishlist Insignia NOW: https://store.steampowered.com/app/1127370/Insignia In this episode we talk with indie game developers Nolan and Adam about the weird and creative side of game development. From viral projects like 1 Million Checkboxes to building pixel art games and experimental multiplayer ideas, we dive into how developers actually make games, where ideas come from, and why making lots of small projects can lead to big breakthroughs. We also discuss indie game dev culture, programming tools, game jams, and the unexpected paths that lead people into creating games.\n\nMentioned Adam Links\nWishlist Insignia on steam: https://store.steampowered.com/app/1127370/Insignia/ \n\nAdam's Ludum Dare 49 Entry: Trauma: https://uppon-hill.itch.io/trauma \n\nMentioned Nolan (eieio) links\nOne Million checkboxes blog: https://eieio.games/blog/one-million-checkboxes/ \nSSH Snake: https://snake.eieio.games/\nPatching GO's SSH Library: https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/ \n\nAdditional Shoutouts:\nCakez77 Game TangyTD: https://store.steampowered.com/app/2245620/Tangy_TD/\n\n\nChapters\n00:00:00 - Intro\n00:00:18 - Intro to Game Dev\n00:03:28 - Sentry\n00:04:06 - Back to Intro to Game Dev\n00:10:16 - Personal win conditions\n00:16:00 - Game Jams and Inspiration\n00:19:11 - 1 million checkboxes\n00:22:29 - Developing for the Terminal\n00:32:35 - Old Internet Tech\n00:33:08 - iframes", "duration" => 2205, "filename" => "/downloads/The Standup/2026-03-21 The Reality of Making Indie Games | The Standup/The Reality of Making Indie Games | The Standup [FbmkW8EpNaY].mp4", "id" => "FbmkW8EpNaY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=FbmkW8EpNaY", "playlist_index" => 9, "timestamp" => 1774098022, "title" => "The Reality of Making Indie Games | The Standup", "upload_date" => "20260321"} 13:58:37.386 [debug] QUERY OK source="sources" db=0.5ms idle=352.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:37.386 [debug] QUERY OK source="sources" db=0.1ms idle=353.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:37.387 [debug] QUERY OK source="media_items" db=0.2ms idle=353.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-21 13:00:22Z], 1] 13:58:37.389 [debug] QUERY OK source="media_items" db=1.3ms idle=353.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nssh terminal.shop\n\nWishlist Insignia NOW: https://store.steampowered.com/app/1127370/Insignia In this episode we talk with indie game developers Nolan and Adam about the weird and creative side of game development. From viral projects like 1 Million Checkboxes to building pixel art games and experimental multiplayer ideas, we dive into how developers actually make games, where ideas come from, and why making lots of small projects can lead to big breakthroughs. We also discuss indie game dev culture, programming tools, game jams, and the unexpected paths that lead people into creating games.\n\nMentioned Adam Links\nWishlist Insignia on steam: https://store.steampowered.com/app/1127370/Insignia/ \n\nAdam's Ludum Dare 49 Entry: Trauma: https://uppon-hill.itch.io/trauma \n\nMentioned Nolan (eieio) links\nOne Million checkboxes blog: https://eieio.games/blog/one-million-checkboxes/ \nSSH Snake: https://snake.eieio.games/\nPatching GO's SSH Library: https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/ \n\nAdditional Shoutouts:\nCakez77 Game TangyTD: https://store.steampowered.com/app/2245620/Tangy_TD/\n\n\nChapters\n00:00:00 - Intro\n00:00:18 - Intro to Game Dev\n00:03:28 - Sentry\n00:04:06 - Back to Intro to Game Dev\n00:10:16 - Personal win conditions\n00:16:00 - Game Jams and Inspiration\n00:19:11 - 1 million checkboxes\n00:22:29 - Developing for the Terminal\n00:32:35 - Old Internet Tech\n00:33:08 - iframes", "The Reality of Making Indie Games | The Standup", "49471b95-f122-4638-af21-b002a4f7d55d", 2205, false, "FbmkW8EpNaY", "https://www.youtube.com/watch?v=FbmkW8EpNaY", 9, "/downloads/The Standup/2026-03-21 The Reality of Making Indie Games | The Standup/The Reality of Making Indie Games | The Standup [FbmkW8EpNaY].mp4", false, false, false, 1, [], 0, ~U[2026-03-21 13:00:22Z], ~U[2026-07-24 11:58:37Z], ~U[2026-07-24 11:58:37Z], "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nssh terminal.shop\n\nWishlist Insignia NOW: https://store.steampowered.com/app/1127370/Insignia In this episode we talk with indie game developers Nolan and Adam about the weird and creative side of game development. From viral projects like 1 Million Checkboxes to building pixel art games and experimental multiplayer ideas, we dive into how developers actually make games, where ideas come from, and why making lots of small projects can lead to big breakthroughs. We also discuss indie game dev culture, programming tools, game jams, and the unexpected paths that lead people into creating games.\n\nMentioned Adam Links\nWishlist Insignia on steam: https://store.steampowered.com/app/1127370/Insignia/ \n\nAdam's Ludum Dare 49 Entry: Trauma: https://uppon-hill.itch.io/trauma \n\nMentioned Nolan (eieio) links\nOne Million checkboxes blog: https://eieio.games/blog/one-million-checkboxes/ \nSSH Snake: https://snake.eieio.games/\nPatching GO's SSH Library: https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/ \n\nAdditional Shoutouts:\nCakez77 Game TangyTD: https://store.steampowered.com/app/2245620/Tangy_TD/\n\n\nChapters\n00:00:00 - Intro\n00:00:18 - Intro to Game Dev\n00:03:28 - Sentry\n00:04:06 - Back to Intro to Game Dev\n00:10:16 - Personal win conditions\n00:16:00 - Game Jams and Inspiration\n00:19:11 - 1 million checkboxes\n00:22:29 - Developing for the Terminal\n00:32:35 - Old Internet Tech\n00:33:08 - iframes", "The Reality of Making Indie Games | The Standup", 2205, false, "FbmkW8EpNaY", "https://www.youtube.com/watch?v=FbmkW8EpNaY", "/downloads/The Standup/2026-03-21 The Reality of Making Indie Games | The Standup/The Reality of Making Indie Games | The Standup [FbmkW8EpNaY].mp4", false, 1, ~U[2026-03-21 13:00:22Z]] 13:58:37.389 [debug] QUERY OK source="sources" db=0.6ms idle=103.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:37.390 [debug] QUERY OK source="media_profiles" db=0.8ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:37.391 [debug] QUERY OK source="media_items" db=0.5ms 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 [9] 13:58:37.391 [info] Kicking off download for media item #9 (FbmkW8EpNaY) 13:58:37.393 [debug] QUERY OK source="tasks" db=0.2ms queue=0.2ms idle=3.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [13, 9, ~U[2026-07-24 11:58:37Z], ~U[2026-07-24 11:58:37Z]] 13:58:37.393 [debug] Current batch of media processed. Will check again in 1000ms 13:58:38.394 [debug] Current batch of media processed. Will check again in 1000ms 13:58:39.395 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop \n\nCHECK OUT THEIR NEW PODCAST ON CASEY'S YOUTUBE: @MollyRocket \n\nAI researcher Dimitri joins the show to talk about the real impact of AI on software engineering. We discuss token costs, AI coding tools, the future of developers, and whether engineers are heading toward a world of reviewing AI-generated code instead of writing it. It’s a grounded conversation about the hype, the risks, and where AI might actually be taking the industry.\n\n\n00:00:00 - Intro\n00:03:57 - Terminal Coffee\n00:04:31 - Wading Through AI\n00:07:00 - Who is Demetri\n00:09:00 - AIs Impact on the Industry\n00:11:43 - Token cost\n00:21:22 - Orbital Data Centers\n00:28:04 - Is my future Reviewing Code \n00:33:51 - Tokenomics\n00:37:51 - Amazon Kiro and Token Metric\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 2541, "filename" => "/downloads/The Standup/2026-03-14 What's really going on with AI, Expert weighs in | TheStandup/What's really going on with AI, Expert weighs in | TheStandup [TtX3jDaZG8Y].mp4", "id" => "TtX3jDaZG8Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=TtX3jDaZG8Y", "playlist_index" => 10, "timestamp" => 1773493251, "title" => "What's really going on with AI, Expert weighs in | TheStandup", "upload_date" => "20260314"} 13:58:39.396 [debug] QUERY OK source="sources" db=0.6ms idle=362.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:39.397 [debug] QUERY OK source="sources" db=0.4ms idle=363.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:39.398 [debug] QUERY OK source="media_items" db=0.6ms idle=363.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-14 13:00:51Z], 1] 13:58:39.399 [debug] QUERY OK source="media_items" db=1.0ms idle=364.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\nCHECK OUT THEIR NEW PODCAST ON CASEY'S YOUTUBE: @MollyRocket \n\nAI researcher Dimitri joins the show to talk about the real impact of AI on software engineering. We discuss token costs, AI coding tools, the future of developers, and whether engineers are heading toward a world of reviewing AI-generated code instead of writing it. It’s a grounded conversation about the hype, the risks, and where AI might actually be taking the industry.\n\n\n00:00:00 - Intro\n00:03:57 - Terminal Coffee\n00:04:31 - Wading Through AI\n00:07:00 - Who is Demetri\n00:09:00 - AIs Impact on the Industry\n00:11:43 - Token cost\n00:21:22 - Orbital Data Centers\n00:28:04 - Is my future Reviewing Code \n00:33:51 - Tokenomics\n00:37:51 - Amazon Kiro and Token Metric\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "What's really going on with AI, Expert weighs in | TheStandup", "aea4420a-0cbf-4553-b5e7-2d6479b4b226", 2541, false, "TtX3jDaZG8Y", "https://www.youtube.com/watch?v=TtX3jDaZG8Y", 10, "/downloads/The Standup/2026-03-14 What's really going on with AI, Expert weighs in | TheStandup/What's really going on with AI, Expert weighs in | TheStandup [TtX3jDaZG8Y].mp4", false, false, false, 1, [], 0, ~U[2026-03-14 13:00:51Z], ~U[2026-07-24 11:58:39Z], ~U[2026-07-24 11:58:39Z], "ssh terminal.shop \n\nCHECK OUT THEIR NEW PODCAST ON CASEY'S YOUTUBE: @MollyRocket \n\nAI researcher Dimitri joins the show to talk about the real impact of AI on software engineering. We discuss token costs, AI coding tools, the future of developers, and whether engineers are heading toward a world of reviewing AI-generated code instead of writing it. It’s a grounded conversation about the hype, the risks, and where AI might actually be taking the industry.\n\n\n00:00:00 - Intro\n00:03:57 - Terminal Coffee\n00:04:31 - Wading Through AI\n00:07:00 - Who is Demetri\n00:09:00 - AIs Impact on the Industry\n00:11:43 - Token cost\n00:21:22 - Orbital Data Centers\n00:28:04 - Is my future Reviewing Code \n00:33:51 - Tokenomics\n00:37:51 - Amazon Kiro and Token Metric\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "What's really going on with AI, Expert weighs in | TheStandup", 2541, false, "TtX3jDaZG8Y", "https://www.youtube.com/watch?v=TtX3jDaZG8Y", "/downloads/The Standup/2026-03-14 What's really going on with AI, Expert weighs in | TheStandup/What's really going on with AI, Expert weighs in | TheStandup [TtX3jDaZG8Y].mp4", false, 1, ~U[2026-03-14 13:00:51Z]] 13:58:39.400 [debug] QUERY OK source="sources" db=0.5ms idle=112.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:39.400 [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] 13:58:39.401 [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 [10] 13:58:39.401 [info] Kicking off download for media item #10 (TtX3jDaZG8Y) 13:58:39.403 [debug] QUERY OK source="tasks" db=0.3ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [14, 10, ~U[2026-07-24 11:58:39Z], ~U[2026-07-24 11:58:39Z]] 13:58:39.403 [debug] Current batch of media processed. Will check again in 1000ms 13:58:39.451 [info] GET / 13:58:39.451 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:58:39.453 [debug] QUERY OK source="settings" db=0.6ms idle=51.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:39.454 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.3ms idle=51.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:58:39.454 [debug] QUERY OK source="sources" db=0.1ms idle=51.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:58:39.455 [debug] QUERY OK source="media_items" db=0.1ms idle=52.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:39.455 [debug] QUERY OK source="media_items" db=0.1ms idle=51.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:39.456 [debug] QUERY OK source="settings" db=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:39.456 [debug] QUERY OK source="settings" db=0.4ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:39.457 [debug] QUERY OK source="settings" db=0.4ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:39.459 [debug] QUERY OK source="tasks" db=0.4ms 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:58:39.460 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:39.460 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [1, 2] 13:58:39.462 [debug] QUERY OK source="media_items" db=1.3ms idle=4.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:39.463 [debug] QUERY OK source="media_items" db=0.5ms idle=5.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:58:39.464 [debug] QUERY OK source="media_items" db=0.6ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:58:39.466 [debug] QUERY OK source="media_items" db=1.2ms 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] 13:58:39.468 [debug] QUERY OK source="sources" db=1.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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:39.469 [info] Sent 200 in 17ms 13:58:39.667 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "JQIxfjENHDcJV0I_Gw0QfBAiCnpRRAQBVQVSZnvTn20VBLvEIKDIiulB", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:39.693 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded"} 13:58:39.694 [debug] QUERY OK source="media_items" db=0.7ms idle=230.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:58:39.696 [debug] QUERY OK source="media_items" db=2.0ms idle=231.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:58:39.696 [debug] Replied in 3ms 13:58:39.697 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending"} 13:58:39.700 [debug] QUERY OK source="media_items" db=1.4ms queue=1.2ms idle=233.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:58:39.712 [debug] QUERY OK source="media_items" db=11.8ms idle=234.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] 13:58:39.715 [debug] QUERY OK source="sources" db=1.7ms queue=0.3ms idle=245.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:39.715 [debug] Replied in 17ms 13:58:39.718 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:39.719 [debug] QUERY OK source="tasks" db=0.4ms idle=24.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:58:39.720 [debug] QUERY OK source="media_items" db=0.6ms idle=23.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [1, 2] 13:58:39.720 [debug] QUERY OK source="sources" db=0.4ms idle=19.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:39.721 [debug] Replied in 2ms 13:58:39.723 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:39.723 [debug] Replied in 93µs 13:58:40.198 [info] GET /sources 13:58:40.198 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 13:58:40.199 [debug] QUERY OK source="settings" db=0.8ms idle=485.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.200 [debug] QUERY OK source="settings" db=0.8ms idle=484.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.201 [debug] QUERY OK source="settings" db=0.8ms idle=481.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.202 [debug] QUERY OK source="settings" db=0.8ms idle=481.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.203 [debug] QUERY OK source="settings" db=0.1ms idle=482.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.203 [debug] QUERY OK source="sources" db=0.3ms idle=4.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)) [] 13:58:40.204 [debug] QUERY OK source="sources" db=0.8ms 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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:58:40.206 [info] Sent 200 in 8ms 13:58:40.371 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "JgsfYgYxJQwJADkHCDQzTWE4Ol1Rax0KUXxOmROoneKnQuUt8QtniZuI", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:40.375 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pslodI0Mh_0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0b/12/0b12ed7336ea0746db6123f41c5ae7dc1ceb4412b4db0ea0341375efdae84ade.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:40.396 [debug] Running yt-dlp command for action: download_thumbnail 13:58:40.397 [debug] QUERY OK source="settings" db=0.2ms idle=194.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.397 [debug] QUERY OK source="settings" db=0.0ms idle=194.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.398 [debug] QUERY OK source="settings" db=0.0ms idle=194.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:40.398 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pslodI0Mh_0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/1/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/21/7e/217e788ff9758ebb032d49d53d7665e286f216afbfb8093b3b508dd67b65dad9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:40.400 [debug] MOUNT PinchflatWeb.Sources.SourceLive.IndexTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "initial_sort_direction" => :asc, "initial_sort_key" => :custom_name, "results_per_page" => 10} 13:58:40.401 [debug] QUERY OK source="sources" db=0.6ms idle=196.1ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:58:40.403 [debug] QUERY OK source="sources" db=1.6ms idle=113.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:58:40.403 [debug] Replied in 3ms 13:58:40.405 [debug] Current batch of media processed. Will check again in 1000ms 13:58:40.406 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:40.406 [debug] Replied in 76µs 13:58:41.098 [info] GET / 13:58:41.098 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:58:41.100 [debug] QUERY OK source="settings" db=1.4ms idle=701.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:41.100 [debug] QUERY OK source="media_profiles" db=0.5ms idle=702.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:58:41.101 [debug] QUERY OK source="sources" db=0.5ms idle=703.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:58:41.102 [debug] QUERY OK source="media_items" db=0.3ms idle=700.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:41.102 [debug] QUERY OK source="media_items" db=0.3ms idle=698.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:41.103 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:41.103 [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 [] 13:58:41.103 [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 [] 13:58:41.105 [debug] QUERY OK source="tasks" db=0.8ms idle=2.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:58:41.106 [debug] QUERY OK source="media_items" db=0.9ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [1, 2] 13:58:41.108 [debug] QUERY OK source="sources" db=2.4ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:41.111 [debug] QUERY OK source="media_items" db=1.5ms idle=6.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:58:41.112 [debug] QUERY OK source="media_items" db=1.3ms idle=7.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:58:41.114 [debug] QUERY OK source="media_items" db=1.2ms idle=7.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:58:41.116 [debug] QUERY OK source="media_items" db=2.1ms idle=7.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:58:41.122 [debug] QUERY OK source="sources" db=1.7ms idle=12.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:41.123 [info] Sent 200 in 25ms 13:58:41.290 [info] CONNECTED TO Phoenix.LiveView.Socket in 16µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "QDBXRRkLXyJQIxUYKwoxYRIMCB5wAjgR3c0hrh5A7FgqrKWXKeF-H3PR", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:41.331 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded"} 13:58:41.332 [debug] QUERY OK source="media_items" db=0.7ms idle=219.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:58:41.333 [debug] QUERY OK source="media_items" db=0.4ms idle=219.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:58:41.333 [debug] Replied in 2ms 13:58:41.335 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending"} 13:58:41.335 [debug] QUERY OK source="media_items" db=0.4ms idle=218.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:58:41.338 [debug] QUERY OK source="media_items" db=2.5ms idle=214.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:58:41.340 [debug] QUERY OK source="sources" db=1.3ms idle=49.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:41.340 [debug] Replied in 5ms 13:58:41.342 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:41.343 [debug] QUERY OK source="tasks" db=0.3ms idle=10.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:58:41.345 [debug] QUERY OK source="sources" db=0.5ms idle=8.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:41.345 [debug] QUERY OK source="media_items" db=0.8ms idle=10.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [1, 2] 13:58:41.345 [debug] Replied in 2ms 13:58:41.348 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:41.348 [debug] Replied in 84µs 13:58:41.406 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Chapters\n00:00:00 - Intro\n00:03:42 - ssh terminal.shop\n00:04:16 - Notepad Exploit\n00:14:47 - Notepad++ Exploit\n00:30:16 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n\nThe crew talks about one of the biggest debates in programming right now: do lines of code actually matter? They dive into AI coding tools, developer productivity, and why measuring engineers by code output might be completely broken. Along the way they roast the viral “burned out my USB-C ports using Claude Code” tweet, share stories about gamifying developer metrics, and break down some surprisingly wild security vulnerabilities in both Windows Notepad and Notepad++. A mix of tech insight, developer culture, and plenty of chaos.", "duration" => 1842, "filename" => "/downloads/The Standup/2026-03-07 Why is Microsoft updating their text editors!? | TheStandup/Why is Microsoft updating their text editors!? | TheStandup [OgfdyH4iaps].mp4", "id" => "OgfdyH4iaps", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OgfdyH4iaps", "playlist_index" => 11, "timestamp" => 1772892026, "title" => "Why is Microsoft updating their text editors!? | TheStandup", "upload_date" => "20260307"} 13:58:41.410 [debug] QUERY OK source="sources" db=3.1ms idle=68.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:41.410 [debug] QUERY OK source="sources" db=0.1ms idle=69.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:41.411 [debug] QUERY OK source="media_items" db=0.2ms idle=66.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-07 14:00:26Z], 1] 13:58:41.414 [debug] QUERY OK source="media_items" db=2.4ms idle=67.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Chapters\n00:00:00 - Intro\n00:03:42 - ssh terminal.shop\n00:04:16 - Notepad Exploit\n00:14:47 - Notepad++ Exploit\n00:30:16 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n\nThe crew talks about one of the biggest debates in programming right now: do lines of code actually matter? They dive into AI coding tools, developer productivity, and why measuring engineers by code output might be completely broken. Along the way they roast the viral “burned out my USB-C ports using Claude Code” tweet, share stories about gamifying developer metrics, and break down some surprisingly wild security vulnerabilities in both Windows Notepad and Notepad++. A mix of tech insight, developer culture, and plenty of chaos.", "Why is Microsoft updating their text editors!? | TheStandup", "c597e591-e045-41bf-b467-4da4a3975d6d", 1842, false, "OgfdyH4iaps", "https://www.youtube.com/watch?v=OgfdyH4iaps", 11, "/downloads/The Standup/2026-03-07 Why is Microsoft updating their text editors!? | TheStandup/Why is Microsoft updating their text editors!? | TheStandup [OgfdyH4iaps].mp4", false, false, false, 1, [], 0, ~U[2026-03-07 14:00:26Z], ~U[2026-07-24 11:58:41Z], ~U[2026-07-24 11:58:41Z], "Chapters\n00:00:00 - Intro\n00:03:42 - ssh terminal.shop\n00:04:16 - Notepad Exploit\n00:14:47 - Notepad++ Exploit\n00:30:16 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n\nThe crew talks about one of the biggest debates in programming right now: do lines of code actually matter? They dive into AI coding tools, developer productivity, and why measuring engineers by code output might be completely broken. Along the way they roast the viral “burned out my USB-C ports using Claude Code” tweet, share stories about gamifying developer metrics, and break down some surprisingly wild security vulnerabilities in both Windows Notepad and Notepad++. A mix of tech insight, developer culture, and plenty of chaos.", "Why is Microsoft updating their text editors!? | TheStandup", 1842, false, "OgfdyH4iaps", "https://www.youtube.com/watch?v=OgfdyH4iaps", "/downloads/The Standup/2026-03-07 Why is Microsoft updating their text editors!? | TheStandup/Why is Microsoft updating their text editors!? | TheStandup [OgfdyH4iaps].mp4", false, 1, ~U[2026-03-07 14:00:26Z]] 13:58:41.415 [debug] QUERY OK source="sources" db=0.8ms idle=69.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:41.416 [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] 13:58:41.417 [debug] QUERY OK source="media_items" db=0.9ms 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 [11] 13:58:41.417 [info] Kicking off download for media item #11 (OgfdyH4iaps) 13:58:41.421 [debug] QUERY OK source="tasks" db=0.2ms idle=5.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [15, 11, ~U[2026-07-24 11:58:41Z], ~U[2026-07-24 11:58:41Z]] 13:58:41.421 [debug] Current batch of media processed. Will check again in 1000ms 13:58:42.422 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop \n\nWe break down the Open Claw insanity taking over Silicon Valley, including the head of AI safety accidentally nuking her own inbox, developers wiring autonomous agents directly into their lives, and the growing trend of giving AI sudo access like that’s a normal thing to do.\n\nTrash admits he’s vibe-coding secret iOS apps, including one that may or may not speedrun divorce. We debate AI personal assistants, spam calls, self-hosting myths, Mac mini bot farms, and whether anyone is actually running these models locally.\n\nWe also dissect the most awkward AI summit moment of the year: Sam Altman and Dario Amodei refusing to hold hands on stage next to the Prime Minister of India. Theater kid energy meets billion-dollar rivalry.\n\n\n\nRead the Harper’s piece we reference in this episode — a deep dive into AI startup culture and the hype surrounding it: https://harpers.org/archive/2026/03/childs-play-sam-kriss-ai-startup-roy-lee/\n\n\n00:00:00 - Intro\n00:02:20 - Terminal Coffee\n00:02:54 - AI Personal Assistants\n00:08:53 - Vibing iOS Apps\n00:11:38 - Bash's projects\n00:13:38 - Primes old Netflix codebase\n00:16:00 - Meta AI safety blunder\n00:21:01 - OpenClaw Mac Minis\n00:24:38 - AI Impact Summit", "duration" => 2125, "filename" => "/downloads/The Standup/2026-02-28 AI Personal Assistants are ruining people lives | TheStandup/AI Personal Assistants are ruining people lives | TheStandup [LpMn08jW02A].mp4", "id" => "LpMn08jW02A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=LpMn08jW02A", "playlist_index" => 12, "timestamp" => 1772287236, "title" => "AI Personal Assistants are ruining people lives | TheStandup", "upload_date" => "20260228"} 13:58:42.423 [debug] QUERY OK source="sources" db=0.3ms idle=1005.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:42.424 [debug] QUERY OK source="sources" db=0.6ms 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" = ?) [1] 13:58:42.424 [debug] QUERY OK source="media_items" db=0.2ms idle=1003.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-28 14:00:36Z], 1] 13:58:42.426 [debug] QUERY OK source="media_items" db=1.0ms idle=1003.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\nWe break down the Open Claw insanity taking over Silicon Valley, including the head of AI safety accidentally nuking her own inbox, developers wiring autonomous agents directly into their lives, and the growing trend of giving AI sudo access like that’s a normal thing to do.\n\nTrash admits he’s vibe-coding secret iOS apps, including one that may or may not speedrun divorce. We debate AI personal assistants, spam calls, self-hosting myths, Mac mini bot farms, and whether anyone is actually running these models locally.\n\nWe also dissect the most awkward AI summit moment of the year: Sam Altman and Dario Amodei refusing to hold hands on stage next to the Prime Minister of India. Theater kid energy meets billion-dollar rivalry.\n\n\n\nRead the Harper’s piece we reference in this episode — a deep dive into AI startup culture and the hype surrounding it: https://harpers.org/archive/2026/03/childs-play-sam-kriss-ai-startup-roy-lee/\n\n\n00:00:00 - Intro\n00:02:20 - Terminal Coffee\n00:02:54 - AI Personal Assistants\n00:08:53 - Vibing iOS Apps\n00:11:38 - Bash's projects\n00:13:38 - Primes old Netflix codebase\n00:16:00 - Meta AI safety blunder\n00:21:01 - OpenClaw Mac Minis\n00:24:38 - AI Impact Summit", "AI Personal Assistants are ruining people lives | TheStandup", "5e545a5f-6a48-418e-a97c-975ad486cae2", 2125, false, "LpMn08jW02A", "https://www.youtube.com/watch?v=LpMn08jW02A", 12, "/downloads/The Standup/2026-02-28 AI Personal Assistants are ruining people lives | TheStandup/AI Personal Assistants are ruining people lives | TheStandup [LpMn08jW02A].mp4", false, false, false, 1, [], 0, ~U[2026-02-28 14:00:36Z], ~U[2026-07-24 11:58:42Z], ~U[2026-07-24 11:58:42Z], "ssh terminal.shop \n\nWe break down the Open Claw insanity taking over Silicon Valley, including the head of AI safety accidentally nuking her own inbox, developers wiring autonomous agents directly into their lives, and the growing trend of giving AI sudo access like that’s a normal thing to do.\n\nTrash admits he’s vibe-coding secret iOS apps, including one that may or may not speedrun divorce. We debate AI personal assistants, spam calls, self-hosting myths, Mac mini bot farms, and whether anyone is actually running these models locally.\n\nWe also dissect the most awkward AI summit moment of the year: Sam Altman and Dario Amodei refusing to hold hands on stage next to the Prime Minister of India. Theater kid energy meets billion-dollar rivalry.\n\n\n\nRead the Harper’s piece we reference in this episode — a deep dive into AI startup culture and the hype surrounding it: https://harpers.org/archive/2026/03/childs-play-sam-kriss-ai-startup-roy-lee/\n\n\n00:00:00 - Intro\n00:02:20 - Terminal Coffee\n00:02:54 - AI Personal Assistants\n00:08:53 - Vibing iOS Apps\n00:11:38 - Bash's projects\n00:13:38 - Primes old Netflix codebase\n00:16:00 - Meta AI safety blunder\n00:21:01 - OpenClaw Mac Minis\n00:24:38 - AI Impact Summit", "AI Personal Assistants are ruining people lives | TheStandup", 2125, false, "LpMn08jW02A", "https://www.youtube.com/watch?v=LpMn08jW02A", "/downloads/The Standup/2026-02-28 AI Personal Assistants are ruining people lives | TheStandup/AI Personal Assistants are ruining people lives | TheStandup [LpMn08jW02A].mp4", false, 1, ~U[2026-02-28 14:00:36Z]] 13:58:42.426 [debug] QUERY OK source="sources" db=0.2ms idle=135.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:42.427 [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] 13:58:42.427 [debug] QUERY OK source="media_items" db=0.5ms 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 [12] 13:58:42.427 [info] Kicking off download for media item #12 (LpMn08jW02A) 13:58:42.430 [debug] QUERY OK source="tasks" db=0.1ms idle=3.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [16, 12, ~U[2026-07-24 11:58:42Z], ~U[2026-07-24 11:58:42Z]] 13:58:42.430 [debug] Current batch of media processed. Will check again in 1000ms 13:58:43.430 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop\n\nBen and Alexis join the show to talk about their new sketch comedy series, the creative chaos behind it, and what it actually takes to ship something big online. From quitting tech jobs to filming 12-hour shoot days, unreleased music videos, and creative mental breakdowns, this episode is a behind-the-scenes look at building something ambitious with friends.\n\n\nIt’s comedy, tech, risk, and a whole lot of “just make the thing.”\n\n\n\nCHAPTERS\n00:00:00 - Intro\n00:03:00 - BIG KRAZAM Project\n00:04:25 - Terminal Coffee\n00:05:00 - The Tease\n00:05:36 - Output and Delays\n00:08:08 - THE ANNOUCEMENT\n00:11:30 - Why now\n00:20:00 - What it takes to make something like this\n00:26:55 - Teej says something nice\n00:28:10 - Whats different about a making a sketch show\n00:30:50 - Quiting SWE\n00:39:29 - Agentic Life\n00:41:25 - Begins stolen Valor and making a band\n00:43:42 - Instruments\n00:47:00 - We should be making a band!\n00:51:23 - Outro", "duration" => 2979, "filename" => "/downloads/The Standup/2026-02-21 Big KRAZAM Announcement | TheStandup/Big KRAZAM Announcement | TheStandup [uhlBpEkdxhM].mp4", "id" => "uhlBpEkdxhM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uhlBpEkdxhM", "playlist_index" => 13, "timestamp" => 1771687683, "title" => "Big KRAZAM Announcement | TheStandup", "upload_date" => "20260221"} 13:58:43.431 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1002.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:43.432 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [1] 13:58:43.432 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-21 15:28:03Z], 1] 13:58:43.433 [debug] QUERY OK source="media_items" db=0.9ms idle=1002.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop\n\nBen and Alexis join the show to talk about their new sketch comedy series, the creative chaos behind it, and what it actually takes to ship something big online. From quitting tech jobs to filming 12-hour shoot days, unreleased music videos, and creative mental breakdowns, this episode is a behind-the-scenes look at building something ambitious with friends.\n\n\nIt’s comedy, tech, risk, and a whole lot of “just make the thing.”\n\n\n\nCHAPTERS\n00:00:00 - Intro\n00:03:00 - BIG KRAZAM Project\n00:04:25 - Terminal Coffee\n00:05:00 - The Tease\n00:05:36 - Output and Delays\n00:08:08 - THE ANNOUCEMENT\n00:11:30 - Why now\n00:20:00 - What it takes to make something like this\n00:26:55 - Teej says something nice\n00:28:10 - Whats different about a making a sketch show\n00:30:50 - Quiting SWE\n00:39:29 - Agentic Life\n00:41:25 - Begins stolen Valor and making a band\n00:43:42 - Instruments\n00:47:00 - We should be making a band!\n00:51:23 - Outro", "Big KRAZAM Announcement | TheStandup", "da57bd02-c7cd-491c-bc6b-51cb7ccf6270", 2979, false, "uhlBpEkdxhM", "https://www.youtube.com/watch?v=uhlBpEkdxhM", 13, "/downloads/The Standup/2026-02-21 Big KRAZAM Announcement | TheStandup/Big KRAZAM Announcement | TheStandup [uhlBpEkdxhM].mp4", false, false, false, 1, [], 0, ~U[2026-02-21 15:28:03Z], ~U[2026-07-24 11:58:43Z], ~U[2026-07-24 11:58:43Z], "ssh terminal.shop\n\nBen and Alexis join the show to talk about their new sketch comedy series, the creative chaos behind it, and what it actually takes to ship something big online. From quitting tech jobs to filming 12-hour shoot days, unreleased music videos, and creative mental breakdowns, this episode is a behind-the-scenes look at building something ambitious with friends.\n\n\nIt’s comedy, tech, risk, and a whole lot of “just make the thing.”\n\n\n\nCHAPTERS\n00:00:00 - Intro\n00:03:00 - BIG KRAZAM Project\n00:04:25 - Terminal Coffee\n00:05:00 - The Tease\n00:05:36 - Output and Delays\n00:08:08 - THE ANNOUCEMENT\n00:11:30 - Why now\n00:20:00 - What it takes to make something like this\n00:26:55 - Teej says something nice\n00:28:10 - Whats different about a making a sketch show\n00:30:50 - Quiting SWE\n00:39:29 - Agentic Life\n00:41:25 - Begins stolen Valor and making a band\n00:43:42 - Instruments\n00:47:00 - We should be making a band!\n00:51:23 - Outro", "Big KRAZAM Announcement | TheStandup", 2979, false, "uhlBpEkdxhM", "https://www.youtube.com/watch?v=uhlBpEkdxhM", "/downloads/The Standup/2026-02-21 Big KRAZAM Announcement | TheStandup/Big KRAZAM Announcement | TheStandup [uhlBpEkdxhM].mp4", false, 1, ~U[2026-02-21 15:28:03Z]] 13:58:43.434 [debug] QUERY OK source="sources" db=0.6ms idle=141.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:43.435 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:43.436 [debug] QUERY OK source="media_items" db=0.4ms 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 [13] 13:58:43.436 [info] Kicking off download for media item #13 (uhlBpEkdxhM) 13:58:43.438 [debug] QUERY OK source="tasks" db=0.1ms idle=3.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [17, 13, ~U[2026-07-24 11:58:43Z], ~U[2026-07-24 11:58:43Z]] 13:58:43.438 [debug] Current batch of media processed. Will check again in 1000ms 13:58:44.201 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pslodI0Mh_0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/1/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/21/7e/217e788ff9758ebb032d49d53d7665e286f216afbfb8093b3b508dd67b65dad9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:44.202 [debug] QUERY OK db=0.0ms idle=766.7ms begin [] 13:58:44.202 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 11:58:40Z], "/downloads/The Standup/2026-06-07 Casey Destroys Optimization Myths | TheStandup/Casey Destroys Optimization Myths | TheStandup [pslodI0Mh_0].mp4", ~U[2026-07-24 11:58:44Z], 1] 13:58:44.203 [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/1/metadata.json.gz", "/config/metadata/media_items/1/thumbnail.jpg", 1, ~U[2026-07-24 11:58:44Z], ~U[2026-07-24 11:58:44Z]] 13:58:44.203 [debug] QUERY OK db=0.1ms commit [] 13:58:44.204 [debug] QUERY OK source="media_items" db=0.8ms idle=767.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [235134137, ~U[2026-07-24 11:58:44Z], 1] 13:58:44.204 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:58:44.204 [info] {"args":{"id":1},"id":5,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":23921464,"event":"job:stop","queue_time":282462,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:58:44.205 [debug] QUERY OK source="tasks" db=0.3ms idle=767.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:58:44.206 [debug] QUERY OK source="media_items" db=0.4ms idle=767.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2] 13:58:44.206 [debug] QUERY OK source="sources" db=0.5ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:44.211 [info] {"args":{"id":3},"id":7,"meta":{},"system_time":1784894324211614148,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:58:44.212 [debug] QUERY OK source="tasks" db=0.6ms idle=6.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:58:44.213 [debug] QUERY OK source="media_items" db=1.3ms idle=6.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [3] 13:58:44.213 [debug] QUERY OK source="media_items" db=0.8ms idle=6.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [2, 3] 13:58:44.213 [debug] QUERY OK source="sources" db=0.9ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:44.213 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:58:44.215 [debug] QUERY OK source="sources" db=0.9ms idle=2.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:44.215 [debug] QUERY OK source="media_profiles" db=0.4ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:44.216 [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 [3] 13:58:44.218 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [3] 13:58:44.218 [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] 13:58:44.219 [debug] QUERY OK source="settings" db=0.2ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:44.219 [debug] QUERY OK source="settings" db=0.6ms 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:58:44.220 [debug] Running yt-dlp command for action: get_downloadable_status 13:58:44.223 [debug] QUERY OK source="settings" db=1.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:58:44.223 [debug] QUERY OK source="settings" db=0.4ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:44.223 [debug] QUERY OK source="settings" db=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:44.224 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=znRHdCDw9tQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/62/7a6267836869339aff3bb087f375ed54b72b2e8f1eebbe22e9b8de9f33887b7b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:44.438 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nChapters \n00:00:00 - Intro\n00:01:04 - Begins Current Game\n00:04:18 - Terminal Coffee\n00:04:52 - Terraria plugins\n00:07:26 - Primes Current Game\n00:09:25 - Begin Ruins Magic\n00:13:19 - Back to Primes Game\n00:15:50 - Tostitos\n00:18:57 - Trashs Current Game\n00:26:14 - Trash pro gamer lore\n00:28:49 - Replacing toxic gaming with coding\n00:32:13 - Perfect Dark VS 007 Golden Gun\n00:33:07 - Old School Cheating and Retro Games\n00:36:22 - Educational games\n00:38:16 - DOTA\n00:45:00 - Zelda\n00:46:48 - Teejs Current game\n00:47:58 - Games we are excited for\n00:53:48 - Age Of Empires\n00:57:58 - LOTR\n00:59:19 - Outro\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3629, "filename" => "/downloads/The Standup/2026-02-14 We used to be gamers | TheStandup/We used to be gamers | TheStandup [FBvB1MQis4Y].mp4", "id" => "FBvB1MQis4Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=FBvB1MQis4Y", "playlist_index" => 14, "timestamp" => 1771089775, "title" => "We used to be gamers | TheStandup", "upload_date" => "20260214"} 13:58:44.439 [debug] QUERY OK source="sources" db=0.4ms idle=219.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:44.440 [debug] QUERY OK source="sources" db=0.4ms idle=216.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:44.440 [debug] QUERY OK source="media_items" db=0.3ms idle=216.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-14 17:22:55Z], 1] 13:58:44.444 [debug] QUERY OK source="media_items" db=3.7ms idle=216.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nChapters \n00:00:00 - Intro\n00:01:04 - Begins Current Game\n00:04:18 - Terminal Coffee\n00:04:52 - Terraria plugins\n00:07:26 - Primes Current Game\n00:09:25 - Begin Ruins Magic\n00:13:19 - Back to Primes Game\n00:15:50 - Tostitos\n00:18:57 - Trashs Current Game\n00:26:14 - Trash pro gamer lore\n00:28:49 - Replacing toxic gaming with coding\n00:32:13 - Perfect Dark VS 007 Golden Gun\n00:33:07 - Old School Cheating and Retro Games\n00:36:22 - Educational games\n00:38:16 - DOTA\n00:45:00 - Zelda\n00:46:48 - Teejs Current game\n00:47:58 - Games we are excited for\n00:53:48 - Age Of Empires\n00:57:58 - LOTR\n00:59:19 - Outro\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We used to be gamers | TheStandup", "9100ebd6-c1ec-44fe-bb98-3a8186a4720d", 3629, false, "FBvB1MQis4Y", "https://www.youtube.com/watch?v=FBvB1MQis4Y", 14, "/downloads/The Standup/2026-02-14 We used to be gamers | TheStandup/We used to be gamers | TheStandup [FBvB1MQis4Y].mp4", false, false, false, 1, [], 0, ~U[2026-02-14 17:22:55Z], ~U[2026-07-24 11:58:44Z], ~U[2026-07-24 11:58:44Z], "https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nChapters \n00:00:00 - Intro\n00:01:04 - Begins Current Game\n00:04:18 - Terminal Coffee\n00:04:52 - Terraria plugins\n00:07:26 - Primes Current Game\n00:09:25 - Begin Ruins Magic\n00:13:19 - Back to Primes Game\n00:15:50 - Tostitos\n00:18:57 - Trashs Current Game\n00:26:14 - Trash pro gamer lore\n00:28:49 - Replacing toxic gaming with coding\n00:32:13 - Perfect Dark VS 007 Golden Gun\n00:33:07 - Old School Cheating and Retro Games\n00:36:22 - Educational games\n00:38:16 - DOTA\n00:45:00 - Zelda\n00:46:48 - Teejs Current game\n00:47:58 - Games we are excited for\n00:53:48 - Age Of Empires\n00:57:58 - LOTR\n00:59:19 - Outro\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We used to be gamers | TheStandup", 3629, false, "FBvB1MQis4Y", "https://www.youtube.com/watch?v=FBvB1MQis4Y", "/downloads/The Standup/2026-02-14 We used to be gamers | TheStandup/We used to be gamers | TheStandup [FBvB1MQis4Y].mp4", false, 1, ~U[2026-02-14 17:22:55Z]] 13:58:44.445 [debug] QUERY OK source="sources" db=0.3ms idle=151.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:44.446 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:44.446 [debug] QUERY OK source="media_items" db=0.4ms 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 [14] 13:58:44.447 [info] Kicking off download for media item #14 (FBvB1MQis4Y) 13:58:44.449 [debug] QUERY OK source="tasks" db=0.3ms queue=0.2ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [18, 14, ~U[2026-07-24 11:58:44Z], ~U[2026-07-24 11:58:44Z]] 13:58:44.449 [debug] Current batch of media processed. Will check again in 1000ms 13:58:45.292 [info] GET /sources 13:58:45.292 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 13:58:45.293 [debug] QUERY OK source="settings" db=0.3ms idle=846.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:45.294 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=846.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:45.310 [debug] QUERY OK source="settings" db=14.2ms idle=847.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:45.312 [debug] QUERY OK source="settings" db=0.7ms idle=861.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:45.313 [debug] QUERY OK source="settings" db=0.8ms 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 [] 13:58:45.314 [debug] QUERY OK source="sources" db=0.4ms idle=19.4ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:58:45.317 [debug] QUERY OK source="sources" db=2.4ms 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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:58:45.318 [info] Sent 200 in 25ms 13:58:45.450 [debug] Current batch of media processed. Will check again in 1000ms 13:58:45.487 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "K2oGfFIZIyZXDRkZIwAjdRMrAWF2Rip7X9aQ9zIE0hkpzAELJBORNwB8", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:45.520 [debug] MOUNT PinchflatWeb.Sources.SourceLive.IndexTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "initial_sort_direction" => :asc, "initial_sort_key" => :custom_name, "results_per_page" => 10} 13:58:45.521 [debug] QUERY OK source="sources" db=0.4ms idle=208.7ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:58:45.524 [debug] QUERY OK source="sources" db=2.5ms idle=209.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:58:45.524 [debug] Replied in 3ms 13:58:45.526 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:45.526 [debug] Replied in 82µs 13:58:46.451 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop \n\nThis week on The Standup, the crew digs into the chaos of AI “skills,” agent tooling, and the growing security risks nobody seems to be paying attention to. From hallucinated commands spreading across GitHub to supply-chain nightmares and wild real-world examples, it’s a funny, slightly terrifying look at where AI tooling is headed. Laughs, hot takes, and a reality check for anyone letting agents run loose on their machine.\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:04:01 - Terminal Coffee\n00:04:34 - Skills & Hallucinated npx Commands\n00:14:26 - Hiding commands in Skill.md\n00:18:52 - What Would Elon Do?\n00:24:46 - Skills.sh\n00:33:00 - AI Social Networks\n00:35:41 - Simulation Theory\n00:40:31 - Moltbook\n00:47:50 - Outro", "duration" => 2891, "filename" => "/downloads/The Standup/2026-02-08 AGI Achieved?! | TheStandup/AGI Achieved?! | TheStandup [_CzEmKTk5Rs].mp4", "id" => "_CzEmKTk5Rs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_CzEmKTk5Rs", "playlist_index" => 15, "timestamp" => 1770559253, "title" => "AGI Achieved?! | TheStandup", "upload_date" => "20260208"} 13:58:46.452 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1137.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:46.452 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=1135.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:46.453 [debug] QUERY OK source="media_items" db=0.3ms idle=931.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-08 14:00:53Z], 1] 13:58:46.455 [debug] QUERY OK source="media_items" db=1.0ms idle=929.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\nThis week on The Standup, the crew digs into the chaos of AI “skills,” agent tooling, and the growing security risks nobody seems to be paying attention to. From hallucinated commands spreading across GitHub to supply-chain nightmares and wild real-world examples, it’s a funny, slightly terrifying look at where AI tooling is headed. Laughs, hot takes, and a reality check for anyone letting agents run loose on their machine.\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:04:01 - Terminal Coffee\n00:04:34 - Skills & Hallucinated npx Commands\n00:14:26 - Hiding commands in Skill.md\n00:18:52 - What Would Elon Do?\n00:24:46 - Skills.sh\n00:33:00 - AI Social Networks\n00:35:41 - Simulation Theory\n00:40:31 - Moltbook\n00:47:50 - Outro", "AGI Achieved?! | TheStandup", "7f063c6f-a314-46c2-9a7a-90ea33627210", 2891, false, "_CzEmKTk5Rs", "https://www.youtube.com/watch?v=_CzEmKTk5Rs", 15, "/downloads/The Standup/2026-02-08 AGI Achieved?! | TheStandup/AGI Achieved?! | TheStandup [_CzEmKTk5Rs].mp4", false, false, false, 1, [], 0, ~U[2026-02-08 14:00:53Z], ~U[2026-07-24 11:58:46Z], ~U[2026-07-24 11:58:46Z], "ssh terminal.shop \n\nThis week on The Standup, the crew digs into the chaos of AI “skills,” agent tooling, and the growing security risks nobody seems to be paying attention to. From hallucinated commands spreading across GitHub to supply-chain nightmares and wild real-world examples, it’s a funny, slightly terrifying look at where AI tooling is headed. Laughs, hot takes, and a reality check for anyone letting agents run loose on their machine.\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:04:01 - Terminal Coffee\n00:04:34 - Skills & Hallucinated npx Commands\n00:14:26 - Hiding commands in Skill.md\n00:18:52 - What Would Elon Do?\n00:24:46 - Skills.sh\n00:33:00 - AI Social Networks\n00:35:41 - Simulation Theory\n00:40:31 - Moltbook\n00:47:50 - Outro", "AGI Achieved?! | TheStandup", 2891, false, "_CzEmKTk5Rs", "https://www.youtube.com/watch?v=_CzEmKTk5Rs", "/downloads/The Standup/2026-02-08 AGI Achieved?! | TheStandup/AGI Achieved?! | TheStandup [_CzEmKTk5Rs].mp4", false, 1, ~U[2026-02-08 14:00:53Z]] 13:58:46.455 [debug] QUERY OK source="sources" db=0.2ms idle=140.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:46.456 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:46.457 [debug] QUERY OK source="media_items" db=0.4ms 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 [15] 13:58:46.457 [info] Kicking off download for media item #15 (_CzEmKTk5Rs) 13:58:46.458 [debug] QUERY OK source="tasks" db=0.1ms idle=2.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [19, 15, ~U[2026-07-24 11:58:46Z], ~U[2026-07-24 11:58:46Z]] 13:58:46.458 [debug] Current batch of media processed. Will check again in 1000ms 13:58:47.459 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\n00:00:00 - Intro\n00:02:16 - The RAM Situation\n00:04:25 - Merge Cop Ep 3\n00:06:16 - RAM FABS\n00:07:19 - DDR5 not for the consumer\n00:10:30 - Primes Windows Issues\n00:12:43 - The Great RAMming\n00:35:40 - Is Other hardware pricing effected\n00:40:46 - Is Renting a computer the future?\n00:44:40 - What about Phones\n00:48:40 - Hiring at LTT in an AI world\n00:53:08 - Developers at LTT\n01:02:04 - Is Tech Youtube Changing?\n01:17:34 - Year of the Linux Desktop\n01:19:08 - Outro", "duration" => 4808, "filename" => "/downloads/The Standup/2026-02-03 Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup/Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup [kD7CRXRbcrw].mp4", "id" => "kD7CRXRbcrw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kD7CRXRbcrw", "playlist_index" => 16, "timestamp" => 1770127280, "title" => "Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup", "upload_date" => "20260203"} 13:58:47.460 [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 (?)) [1] 13:58:47.461 [debug] QUERY OK source="sources" db=0.2ms idle=1002.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:47.462 [debug] QUERY OK source="media_items" db=0.8ms idle=1002.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-03 14:01:20Z], 1] 13:58:47.464 [debug] QUERY OK source="media_items" db=1.9ms idle=1003.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\n00:00:00 - Intro\n00:02:16 - The RAM Situation\n00:04:25 - Merge Cop Ep 3\n00:06:16 - RAM FABS\n00:07:19 - DDR5 not for the consumer\n00:10:30 - Primes Windows Issues\n00:12:43 - The Great RAMming\n00:35:40 - Is Other hardware pricing effected\n00:40:46 - Is Renting a computer the future?\n00:44:40 - What about Phones\n00:48:40 - Hiring at LTT in an AI world\n00:53:08 - Developers at LTT\n01:02:04 - Is Tech Youtube Changing?\n01:17:34 - Year of the Linux Desktop\n01:19:08 - Outro", "Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup", "07c0f3ea-051d-4fb2-ae31-0c928f201619", 4808, false, "kD7CRXRbcrw", "https://www.youtube.com/watch?v=kD7CRXRbcrw", 16, "/downloads/The Standup/2026-02-03 Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup/Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup [kD7CRXRbcrw].mp4", false, false, false, 1, [], 0, ~U[2026-02-03 14:01:20Z], ~U[2026-07-24 11:58:47Z], ~U[2026-07-24 11:58:47Z], "Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\n00:00:00 - Intro\n00:02:16 - The RAM Situation\n00:04:25 - Merge Cop Ep 3\n00:06:16 - RAM FABS\n00:07:19 - DDR5 not for the consumer\n00:10:30 - Primes Windows Issues\n00:12:43 - The Great RAMming\n00:35:40 - Is Other hardware pricing effected\n00:40:46 - Is Renting a computer the future?\n00:44:40 - What about Phones\n00:48:40 - Hiring at LTT in an AI world\n00:53:08 - Developers at LTT\n01:02:04 - Is Tech Youtube Changing?\n01:17:34 - Year of the Linux Desktop\n01:19:08 - Outro", "Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup", 4808, false, "kD7CRXRbcrw", "https://www.youtube.com/watch?v=kD7CRXRbcrw", "/downloads/The Standup/2026-02-03 Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup/Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup [kD7CRXRbcrw].mp4", false, 1, ~U[2026-02-03 14:01:20Z]] 13:58:47.465 [debug] QUERY OK source="sources" db=0.6ms idle=148.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:47.466 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:47.466 [debug] QUERY OK source="media_items" db=0.5ms 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 [16] 13:58:47.466 [info] Kicking off download for media item #16 (kD7CRXRbcrw) 13:58:47.469 [debug] QUERY OK source="tasks" db=0.5ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [20, 16, ~U[2026-07-24 11:58:47Z], ~U[2026-07-24 11:58:47Z]] 13:58:47.469 [debug] Current batch of media processed. Will check again in 1000ms 13:58:47.845 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=znRHdCDw9tQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/62/7a6267836869339aff3bb087f375ed54b72b2e8f1eebbe22e9b8de9f33887b7b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:58:47.845 [debug] Running yt-dlp command for action: download 13:58:47.846 [debug] QUERY OK source="settings" db=0.2ms idle=380.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:47.846 [debug] QUERY OK source="settings" db=0.3ms idle=379.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:47.847 [debug] QUERY OK source="settings" db=0.1ms idle=378.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:47.847 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=znRHdCDw9tQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a2/3d/a23d26b8983497acc31a5e36a41b9e3d37ded418c161d3aae9ec46f3cc6b729d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:58:48.080 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:48.431 [info] GET /sources/1 13:58:48.431 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:58:48.432 [debug] QUERY OK source="sources" db=0.3ms idle=585.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.432 [debug] QUERY OK source="media_profiles" db=0.2ms idle=585.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:48.433 [debug] QUERY OK source="tasks" db=0.2ms idle=585.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 13:58:48.433 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=353.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" = ?) [3] 13:58:48.433 [debug] QUERY OK source="settings" db=0.2ms idle=116.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:58:48.433 [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 [] 13:58:48.434 [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 [] 13:58:48.435 [debug] QUERY OK source="sources" db=0.5ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.436 [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 (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:58:48.437 [debug] QUERY OK source="media_items" db=1.0ms 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 ? [1, 10, 0] 13:58:48.439 [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" = ?) [1] 13:58:48.439 [debug] QUERY OK source="media_items" db=0.0ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:58:48.439 [debug] QUERY OK source="media_items" db=0.1ms 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 ? [1, 10, 0] 13:58:48.440 [debug] QUERY OK source="sources" db=0.4ms idle=3.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.441 [debug] QUERY OK source="media_items" db=0.2ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 13:58:48.441 [debug] QUERY OK source="media_items" db=0.3ms idle=2.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:58:48.442 [info] Sent 200 in 10ms 13:58:48.471 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop \n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:02:17 - Disclaimer\n00:02:51 - Terminal Coffee\n00:03:25 - Quote from 'Sam'\n00:04:48 - How worldcoin started\n00:08:59 - How to prove you're human\n00:12:29 - How to get it\n00:14:59 - what is it\n00:19:45 - Privacy\n00:21:15 - Teejs concerns\n00:23:58 - Tools for Humanity\n00:26:55 - Early rollout\n00:31:37 - Analytics\n00:37:48 - Digital Adoption without scans\n00:40:05 - End of Presentation (Questions?)\n00:56:55 - AI will solve this\n01:00:52 - Outro", "duration" => 3691, "filename" => "/downloads/The Standup/2026-01-22 Scam Altman's Crypto Currency | The standup/Scam Altman's Crypto Currency | The standup [vbmcHjZWI_U].mp4", "id" => "vbmcHjZWI_U", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vbmcHjZWI_U", "playlist_index" => 17, "timestamp" => 1769109263, "title" => "Scam Altman's Crypto Currency | The standup", "upload_date" => "20260122"} 13:58:48.472 [debug] QUERY OK source="sources" db=0.7ms idle=31.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:48.473 [debug] QUERY OK source="sources" db=1.1ms idle=32.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.474 [debug] QUERY OK source="media_items" db=0.5ms idle=32.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-22 19:14:23Z], 1] 13:58:48.477 [debug] QUERY OK source="media_items" db=2.4ms idle=33.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:02:17 - Disclaimer\n00:02:51 - Terminal Coffee\n00:03:25 - Quote from 'Sam'\n00:04:48 - How worldcoin started\n00:08:59 - How to prove you're human\n00:12:29 - How to get it\n00:14:59 - what is it\n00:19:45 - Privacy\n00:21:15 - Teejs concerns\n00:23:58 - Tools for Humanity\n00:26:55 - Early rollout\n00:31:37 - Analytics\n00:37:48 - Digital Adoption without scans\n00:40:05 - End of Presentation (Questions?)\n00:56:55 - AI will solve this\n01:00:52 - Outro", "Scam Altman's Crypto Currency | The standup", "f3e279f7-7ce5-4446-9aee-763736a052a7", 3691, false, "vbmcHjZWI_U", "https://www.youtube.com/watch?v=vbmcHjZWI_U", 17, "/downloads/The Standup/2026-01-22 Scam Altman's Crypto Currency | The standup/Scam Altman's Crypto Currency | The standup [vbmcHjZWI_U].mp4", false, false, false, 1, [], 0, ~U[2026-01-22 19:14:23Z], ~U[2026-07-24 11:58:48Z], ~U[2026-07-24 11:58:48Z], "ssh terminal.shop \n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:02:17 - Disclaimer\n00:02:51 - Terminal Coffee\n00:03:25 - Quote from 'Sam'\n00:04:48 - How worldcoin started\n00:08:59 - How to prove you're human\n00:12:29 - How to get it\n00:14:59 - what is it\n00:19:45 - Privacy\n00:21:15 - Teejs concerns\n00:23:58 - Tools for Humanity\n00:26:55 - Early rollout\n00:31:37 - Analytics\n00:37:48 - Digital Adoption without scans\n00:40:05 - End of Presentation (Questions?)\n00:56:55 - AI will solve this\n01:00:52 - Outro", "Scam Altman's Crypto Currency | The standup", 3691, false, "vbmcHjZWI_U", "https://www.youtube.com/watch?v=vbmcHjZWI_U", "/downloads/The Standup/2026-01-22 Scam Altman's Crypto Currency | The standup/Scam Altman's Crypto Currency | The standup [vbmcHjZWI_U].mp4", false, 1, ~U[2026-01-22 19:14:23Z]] 13:58:48.477 [debug] QUERY OK source="sources" db=0.1ms idle=35.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.478 [debug] QUERY OK source="media_profiles" db=0.5ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:48.479 [debug] QUERY OK source="media_items" db=0.5ms 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 [17] 13:58:48.479 [info] Kicking off download for media item #17 (vbmcHjZWI_U) 13:58:48.482 [debug] QUERY OK source="tasks" db=0.4ms idle=4.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [21, 17, ~U[2026-07-24 11:58:48Z], ~U[2026-07-24 11:58:48Z]] 13:58:48.482 [debug] Current batch of media processed. Will check again in 1000ms 13:58:48.608 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BBkvSiArLTcCMhgDPSoQWGk8NEoMBgZxwJHgKHGTeWjjdkva0Uzy47n2", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:58:48.639 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending", "source_id" => 1} 13:58:48.640 [debug] QUERY OK source="sources" db=0.7ms idle=161.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.641 [debug] QUERY OK source="media_items" db=0.2ms idle=162.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:58:48.643 [debug] QUERY OK source="media_items" db=1.4ms idle=160.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 ? [1, 10, 0] 13:58:48.643 [debug] Replied in 3ms 13:58:48.644 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded", "source_id" => 1} 13:58:48.645 [debug] QUERY OK source="sources" db=0.4ms idle=163.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.645 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=163.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:58:48.652 [debug] QUERY OK source="media_items" db=6.0ms idle=5.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 ? [1, 10, 0] 13:58:48.652 [debug] Replied in 7ms 13:58:48.652 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "other", "source_id" => 1} 13:58:48.653 [debug] QUERY OK source="sources" db=0.5ms idle=11.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:48.657 [debug] QUERY OK source="media_items" db=3.2ms idle=10.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 13:58:48.659 [debug] QUERY OK source="media_items" db=1.8ms idle=12.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 ? [1, 10, 0] 13:58:48.659 [debug] Replied in 6ms 13:58:48.659 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:58:48.659 [debug] Replied in 74µs 13:58:49.483 [debug] Current batch of media processed. Will check again in 1000ms 13:58:50.484 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!", "duration" => 3056, "filename" => "/downloads/The Standup/2026-01-16 Casey Breaks Down AWS Outage | The Standup/Casey Breaks Down AWS Outage | The Standup [gstn9qcNdlc].mp4", "id" => "gstn9qcNdlc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gstn9qcNdlc", "playlist_index" => 18, "timestamp" => 1768564885, "title" => "Casey Breaks Down AWS Outage | The Standup", "upload_date" => "20260116"} 13:58:50.485 [debug] QUERY OK source="sources" db=0.2ms idle=451.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:50.485 [debug] QUERY OK source="sources" db=0.4ms idle=451.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:50.486 [debug] QUERY OK source="media_items" db=0.4ms idle=452.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-16 12:01:25Z], 1] 13:58:50.487 [debug] QUERY OK source="media_items" db=0.9ms idle=453.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!", "Casey Breaks Down AWS Outage | The Standup", "3e7b7353-1c06-479e-91e3-24bab9d25938", 3056, false, "gstn9qcNdlc", "https://www.youtube.com/watch?v=gstn9qcNdlc", 18, "/downloads/The Standup/2026-01-16 Casey Breaks Down AWS Outage | The Standup/Casey Breaks Down AWS Outage | The Standup [gstn9qcNdlc].mp4", false, false, false, 1, [], 0, ~U[2026-01-16 12:01:25Z], ~U[2026-07-24 11:58:50Z], ~U[2026-07-24 11:58:50Z], "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!", "Casey Breaks Down AWS Outage | The Standup", 3056, false, "gstn9qcNdlc", "https://www.youtube.com/watch?v=gstn9qcNdlc", "/downloads/The Standup/2026-01-16 Casey Breaks Down AWS Outage | The Standup/Casey Breaks Down AWS Outage | The Standup [gstn9qcNdlc].mp4", false, 1, ~U[2026-01-16 12:01:25Z]] 13:58:50.488 [debug] QUERY OK source="sources" db=0.2ms idle=168.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:50.488 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:50.489 [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 [18] 13:58:50.489 [info] Kicking off download for media item #18 (gstn9qcNdlc) 13:58:50.490 [debug] QUERY OK source="tasks" db=0.1ms idle=2.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [22, 18, ~U[2026-07-24 11:58:50Z], ~U[2026-07-24 11:58:50Z]] 13:58:50.490 [debug] Current batch of media processed. Will check again in 1000ms 13:58:51.491 [debug] Current batch of media processed. Will check again in 1000ms 13:58:52.492 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\nWant more predictions, listen to the full episode here: https://open.spotify.com/episode/3L3FpdwyFrMklX6yFUYDD5?si=wugl7a9cSImRRTBJtvuWHg\n\n\n00:00:00 - Intro\n00:02:03 - Merge Cop Ep 2\n00:04:50 - Caseys 1st Prediction\n00:07:27 - Teejs 1st Prediction\n00:09:18 - Primes 1st Prediction\n00:16:22 - Trashs 1st Prediction\n00:19:06 - Trashs 2nd Prediction\n00:20:34 - Primes 2nd Prediction\n00:23:38 - Teejs 2nd Prediction\n00:25:45 - Caseys 2nd Prediction\n00:35:47 - Caseys 3rd Prediction\n00:42:00 - Teejs 3rd Prediction\n00:45:41 - Primes 3rd Prediction\n00:48:17 - Trashes 3rd Prediction\n00:51:51 - Side Quest Predictions\n00:52:58 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nMore Standup - \nClips: @TheStandupPodClips\nFull Length Podcasts: https://trm.sh/thestandup", "duration" => 3209, "filename" => "/downloads/The Standup/2026-01-08 Spiciest 2026 Predictions | The Standup/Spiciest 2026 Predictions | The Standup [vFcgXdm-0yY].mp4", "id" => "vFcgXdm-0yY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vFcgXdm-0yY", "playlist_index" => 19, "timestamp" => 1767877315, "title" => "Spiciest 2026 Predictions | The Standup", "upload_date" => "20260108"} 13:58:52.493 [debug] QUERY OK source="sources" db=0.3ms idle=459.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:52.493 [debug] QUERY OK source="sources" db=0.2ms idle=459.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:52.494 [debug] QUERY OK source="media_items" db=0.2ms idle=460.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-08 13:01:55Z], 1] 13:58:52.496 [debug] QUERY OK source="media_items" db=1.2ms idle=461.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\nWant more predictions, listen to the full episode here: https://open.spotify.com/episode/3L3FpdwyFrMklX6yFUYDD5?si=wugl7a9cSImRRTBJtvuWHg\n\n\n00:00:00 - Intro\n00:02:03 - Merge Cop Ep 2\n00:04:50 - Caseys 1st Prediction\n00:07:27 - Teejs 1st Prediction\n00:09:18 - Primes 1st Prediction\n00:16:22 - Trashs 1st Prediction\n00:19:06 - Trashs 2nd Prediction\n00:20:34 - Primes 2nd Prediction\n00:23:38 - Teejs 2nd Prediction\n00:25:45 - Caseys 2nd Prediction\n00:35:47 - Caseys 3rd Prediction\n00:42:00 - Teejs 3rd Prediction\n00:45:41 - Primes 3rd Prediction\n00:48:17 - Trashes 3rd Prediction\n00:51:51 - Side Quest Predictions\n00:52:58 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nMore Standup - \nClips: @TheStandupPodClips\nFull Length Podcasts: https://trm.sh/thestandup", "Spiciest 2026 Predictions | The Standup", "8624c883-0b4f-41ef-939e-8e44acb12da2", 3209, false, "vFcgXdm-0yY", "https://www.youtube.com/watch?v=vFcgXdm-0yY", 19, "/downloads/The Standup/2026-01-08 Spiciest 2026 Predictions | The Standup/Spiciest 2026 Predictions | The Standup [vFcgXdm-0yY].mp4", false, false, false, 1, [], 0, ~U[2026-01-08 13:01:55Z], ~U[2026-07-24 11:58:52Z], ~U[2026-07-24 11:58:52Z], "Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\nWant more predictions, listen to the full episode here: https://open.spotify.com/episode/3L3FpdwyFrMklX6yFUYDD5?si=wugl7a9cSImRRTBJtvuWHg\n\n\n00:00:00 - Intro\n00:02:03 - Merge Cop Ep 2\n00:04:50 - Caseys 1st Prediction\n00:07:27 - Teejs 1st Prediction\n00:09:18 - Primes 1st Prediction\n00:16:22 - Trashs 1st Prediction\n00:19:06 - Trashs 2nd Prediction\n00:20:34 - Primes 2nd Prediction\n00:23:38 - Teejs 2nd Prediction\n00:25:45 - Caseys 2nd Prediction\n00:35:47 - Caseys 3rd Prediction\n00:42:00 - Teejs 3rd Prediction\n00:45:41 - Primes 3rd Prediction\n00:48:17 - Trashes 3rd Prediction\n00:51:51 - Side Quest Predictions\n00:52:58 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nMore Standup - \nClips: @TheStandupPodClips\nFull Length Podcasts: https://trm.sh/thestandup", "Spiciest 2026 Predictions | The Standup", 3209, false, "vFcgXdm-0yY", "https://www.youtube.com/watch?v=vFcgXdm-0yY", "/downloads/The Standup/2026-01-08 Spiciest 2026 Predictions | The Standup/Spiciest 2026 Predictions | The Standup [vFcgXdm-0yY].mp4", false, 1, ~U[2026-01-08 13:01:55Z]] 13:58:52.497 [debug] QUERY OK source="sources" db=0.3ms idle=175.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:52.497 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:52.498 [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 [19] 13:58:52.498 [info] Kicking off download for media item #19 (vFcgXdm-0yY) 13:58:52.500 [debug] QUERY OK source="tasks" db=0.1ms idle=2.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [23, 19, ~U[2026-07-24 11:58:52Z], ~U[2026-07-24 11:58:52Z]] 13:58:52.500 [debug] Current batch of media processed. Will check again in 1000ms 13:58:53.501 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Chapters\n00:00:00 - Intro\n00:01:38 - Teej Interupts\n00:03:30 - Intro Again\n00:05:46 - Trashs Pick\n00:09:09 - Teejs Band Dream\n00:10:18 - Marimba\n00:14:59 - Caseys Pick\n00:28:38 - Teejs Pick\n00:44:17 - More Marimba\n00:48:03 - Primes Pick\n00:53:00 - Twitch Pick\n00:57:52 - Youtubes Pick\n01:03:55 - Bonus Pick\n01:07:39 - Neovim Donation\n01:09:07 - PlanetScale\n01:14:53 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 4028, "filename" => "/downloads/The Standup/2025-12-31 We gave $50,000 to OSS! Merry Christmas | The Standup/We gave $50,000 to OSS! Merry Christmas | The Standup [5Hs4Ikwphe0].mp4", "id" => "5Hs4Ikwphe0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=5Hs4Ikwphe0", "playlist_index" => 20, "timestamp" => 1767182410, "title" => "We gave $50,000 to OSS! Merry Christmas | The Standup", "upload_date" => "20251231"} 13:58:53.502 [debug] QUERY OK source="sources" db=0.4ms 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 (?)) [1] 13:58:53.502 [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" = ?) [1] 13:58:53.503 [debug] QUERY OK source="media_items" db=0.1ms idle=1003.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-31 12:00:10Z], 1] 13:58:53.504 [debug] QUERY OK source="media_items" db=0.7ms idle=1003.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Chapters\n00:00:00 - Intro\n00:01:38 - Teej Interupts\n00:03:30 - Intro Again\n00:05:46 - Trashs Pick\n00:09:09 - Teejs Band Dream\n00:10:18 - Marimba\n00:14:59 - Caseys Pick\n00:28:38 - Teejs Pick\n00:44:17 - More Marimba\n00:48:03 - Primes Pick\n00:53:00 - Twitch Pick\n00:57:52 - Youtubes Pick\n01:03:55 - Bonus Pick\n01:07:39 - Neovim Donation\n01:09:07 - PlanetScale\n01:14:53 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We gave $50,000 to OSS! Merry Christmas | The Standup", "493ba4d0-db5d-4efc-b058-17f2cc9617b6", 4028, false, "5Hs4Ikwphe0", "https://www.youtube.com/watch?v=5Hs4Ikwphe0", 20, "/downloads/The Standup/2025-12-31 We gave $50,000 to OSS! Merry Christmas | The Standup/We gave $50,000 to OSS! Merry Christmas | The Standup [5Hs4Ikwphe0].mp4", false, false, false, 1, [], 0, ~U[2025-12-31 12:00:10Z], ~U[2026-07-24 11:58:53Z], ~U[2026-07-24 11:58:53Z], "Chapters\n00:00:00 - Intro\n00:01:38 - Teej Interupts\n00:03:30 - Intro Again\n00:05:46 - Trashs Pick\n00:09:09 - Teejs Band Dream\n00:10:18 - Marimba\n00:14:59 - Caseys Pick\n00:28:38 - Teejs Pick\n00:44:17 - More Marimba\n00:48:03 - Primes Pick\n00:53:00 - Twitch Pick\n00:57:52 - Youtubes Pick\n01:03:55 - Bonus Pick\n01:07:39 - Neovim Donation\n01:09:07 - PlanetScale\n01:14:53 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We gave $50,000 to OSS! Merry Christmas | The Standup", 4028, false, "5Hs4Ikwphe0", "https://www.youtube.com/watch?v=5Hs4Ikwphe0", "/downloads/The Standup/2025-12-31 We gave $50,000 to OSS! Merry Christmas | The Standup/We gave $50,000 to OSS! Merry Christmas | The Standup [5Hs4Ikwphe0].mp4", false, 1, ~U[2025-12-31 12:00:10Z]] 13:58:53.504 [debug] QUERY OK source="sources" db=0.1ms idle=182.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:53.505 [debug] QUERY OK source="media_profiles" db=0.8ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:53.506 [debug] QUERY OK source="media_items" db=0.3ms 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 [20] 13:58:53.506 [info] Kicking off download for media item #20 (5Hs4Ikwphe0) 13:58:53.508 [debug] QUERY OK source="tasks" db=0.5ms idle=3.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [24, 20, ~U[2026-07-24 11:58:53Z], ~U[2026-07-24 11:58:53Z]] 13:58:53.508 [debug] Current batch of media processed. Will check again in 1000ms 13:58:54.509 [debug] Current batch of media processed. Will check again in 1000ms 13:58:55.510 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Chapters \n00:00:00 - Intro\n00:00:12 - Order of the Sinking Star Trailer\n00:02:33 - Casey helped come up with the idea for Braid - part1 \n00:05:12 - Terminal Coffee\n00:05:46 - Casey helped come up with the idea for Braid - part2\n00:10:32 - Questions\n00:11:11 - Where did the design idea for sinking star come from / game design\n00:19:26 - Raspberry\n00:22:18 - JAI and C++\n00:29:06 - JAI name and Quality of software names\n00:31:38 - Why make a new language\n00:41:13 - Compile Time\nRapid Fire Questions\n00:44:47 - Will AI Save the Gaming Industry\n00:45:57 - How long should you spend on a project\n00:49:22 - Advice on balancing CEO and Game Dev\n00:51:37 - Why Braid\n00:52:10 - Advice for Modern Webdevs\n01:01:17 - Any Blockers\n01:04:20 - Outro\n\nMore Standup - \nClips: @TheStandupPod\nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3896, "filename" => "/downloads/The Standup/2025-12-20 Legendary Game Dev Jonathan Blow | The Standup/Legendary Game Dev Jonathan Blow | The Standup [vHfdUqLmPNU].mp4", "id" => "vHfdUqLmPNU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vHfdUqLmPNU", "playlist_index" => 21, "timestamp" => 1766235721, "title" => "Legendary Game Dev Jonathan Blow | The Standup", "upload_date" => "20251220"} 13:58:55.511 [debug] QUERY OK source="sources" db=0.2ms idle=477.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:55.511 [debug] QUERY OK source="sources" db=0.1ms idle=477.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:55.512 [debug] QUERY OK source="media_items" db=0.4ms idle=478.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-20 13:02:01Z], 1] 13:58:55.514 [debug] QUERY OK source="media_items" db=2.0ms idle=478.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Chapters \n00:00:00 - Intro\n00:00:12 - Order of the Sinking Star Trailer\n00:02:33 - Casey helped come up with the idea for Braid - part1 \n00:05:12 - Terminal Coffee\n00:05:46 - Casey helped come up with the idea for Braid - part2\n00:10:32 - Questions\n00:11:11 - Where did the design idea for sinking star come from / game design\n00:19:26 - Raspberry\n00:22:18 - JAI and C++\n00:29:06 - JAI name and Quality of software names\n00:31:38 - Why make a new language\n00:41:13 - Compile Time\nRapid Fire Questions\n00:44:47 - Will AI Save the Gaming Industry\n00:45:57 - How long should you spend on a project\n00:49:22 - Advice on balancing CEO and Game Dev\n00:51:37 - Why Braid\n00:52:10 - Advice for Modern Webdevs\n01:01:17 - Any Blockers\n01:04:20 - Outro\n\nMore Standup - \nClips: @TheStandupPod\nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Legendary Game Dev Jonathan Blow | The Standup", "45bc985c-7647-40d4-92c2-ec506974e333", 3896, false, "vHfdUqLmPNU", "https://www.youtube.com/watch?v=vHfdUqLmPNU", 21, "/downloads/The Standup/2025-12-20 Legendary Game Dev Jonathan Blow | The Standup/Legendary Game Dev Jonathan Blow | The Standup [vHfdUqLmPNU].mp4", false, false, false, 1, [], 0, ~U[2025-12-20 13:02:01Z], ~U[2026-07-24 11:58:55Z], ~U[2026-07-24 11:58:55Z], "Chapters \n00:00:00 - Intro\n00:00:12 - Order of the Sinking Star Trailer\n00:02:33 - Casey helped come up with the idea for Braid - part1 \n00:05:12 - Terminal Coffee\n00:05:46 - Casey helped come up with the idea for Braid - part2\n00:10:32 - Questions\n00:11:11 - Where did the design idea for sinking star come from / game design\n00:19:26 - Raspberry\n00:22:18 - JAI and C++\n00:29:06 - JAI name and Quality of software names\n00:31:38 - Why make a new language\n00:41:13 - Compile Time\nRapid Fire Questions\n00:44:47 - Will AI Save the Gaming Industry\n00:45:57 - How long should you spend on a project\n00:49:22 - Advice on balancing CEO and Game Dev\n00:51:37 - Why Braid\n00:52:10 - Advice for Modern Webdevs\n01:01:17 - Any Blockers\n01:04:20 - Outro\n\nMore Standup - \nClips: @TheStandupPod\nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Legendary Game Dev Jonathan Blow | The Standup", 3896, false, "vHfdUqLmPNU", "https://www.youtube.com/watch?v=vHfdUqLmPNU", "/downloads/The Standup/2025-12-20 Legendary Game Dev Jonathan Blow | The Standup/Legendary Game Dev Jonathan Blow | The Standup [vHfdUqLmPNU].mp4", false, 1, ~U[2025-12-20 13:02:01Z]] 13:58:55.515 [debug] QUERY OK source="sources" db=0.2ms idle=190.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:55.515 [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] 13:58:55.515 [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 [21] 13:58:55.515 [info] Kicking off download for media item #21 (vHfdUqLmPNU) 13:58:55.517 [debug] QUERY OK source="tasks" db=0.3ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [25, 21, ~U[2026-07-24 11:58:55Z], ~U[2026-07-24 11:58:55Z]] 13:58:55.517 [debug] Current batch of media processed. Will check again in 1000ms 13:58:56.518 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app/prime CODE: PRIME\n\n\nChapters\n00:00:00 - Intro\n00:01:39 - Presentation Start\n00:03:37 - Tuple\n00:05:07 - Part 1 - JSON-based Domain Specific Language\n00:09:50 - Part 2 - JDSL In Action\n00:15:19 - Part 3 - Rise and Grind\n00:16:54 - Part 4 - Tom\n00:19:03 - Part 5 - The Meeting\n00:23:13 - Presentation End\n00:24:55 - Casey has questions\n00:29:46 - Outro\n\nMore Standup - \nClips: @TheStandupPodClips \nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 1840, "filename" => "/downloads/The Standup/2025-12-19 Worst Onboarding Experience Ever | The Standup/Worst Onboarding Experience Ever | The Standup [kZGyz9jCUj0].mp4", "id" => "kZGyz9jCUj0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kZGyz9jCUj0", "playlist_index" => 22, "timestamp" => 1766149289, "title" => "Worst Onboarding Experience Ever | The Standup", "upload_date" => "20251219"} 13:58:56.519 [debug] QUERY OK source="sources" db=0.5ms idle=1003.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:56.520 [debug] QUERY OK source="sources" db=0.3ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:56.521 [debug] QUERY OK source="media_items" db=0.8ms idle=1003.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 13:01:29Z], 1] 13:58:56.523 [debug] QUERY OK source="media_items" db=1.2ms idle=1003.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app/prime CODE: PRIME\n\n\nChapters\n00:00:00 - Intro\n00:01:39 - Presentation Start\n00:03:37 - Tuple\n00:05:07 - Part 1 - JSON-based Domain Specific Language\n00:09:50 - Part 2 - JDSL In Action\n00:15:19 - Part 3 - Rise and Grind\n00:16:54 - Part 4 - Tom\n00:19:03 - Part 5 - The Meeting\n00:23:13 - Presentation End\n00:24:55 - Casey has questions\n00:29:46 - Outro\n\nMore Standup - \nClips: @TheStandupPodClips \nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Worst Onboarding Experience Ever | The Standup", "735d07c8-9ab1-45af-8a9d-c2210c79bfc2", 1840, false, "kZGyz9jCUj0", "https://www.youtube.com/watch?v=kZGyz9jCUj0", 22, "/downloads/The Standup/2025-12-19 Worst Onboarding Experience Ever | The Standup/Worst Onboarding Experience Ever | The Standup [kZGyz9jCUj0].mp4", false, false, false, 1, [], 0, ~U[2025-12-19 13:01:29Z], ~U[2026-07-24 11:58:56Z], ~U[2026-07-24 11:58:56Z], "If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app/prime CODE: PRIME\n\n\nChapters\n00:00:00 - Intro\n00:01:39 - Presentation Start\n00:03:37 - Tuple\n00:05:07 - Part 1 - JSON-based Domain Specific Language\n00:09:50 - Part 2 - JDSL In Action\n00:15:19 - Part 3 - Rise and Grind\n00:16:54 - Part 4 - Tom\n00:19:03 - Part 5 - The Meeting\n00:23:13 - Presentation End\n00:24:55 - Casey has questions\n00:29:46 - Outro\n\nMore Standup - \nClips: @TheStandupPodClips \nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Worst Onboarding Experience Ever | The Standup", 1840, false, "kZGyz9jCUj0", "https://www.youtube.com/watch?v=kZGyz9jCUj0", "/downloads/The Standup/2025-12-19 Worst Onboarding Experience Ever | The Standup/Worst Onboarding Experience Ever | The Standup [kZGyz9jCUj0].mp4", false, 1, ~U[2025-12-19 13:01:29Z]] 13:58:56.523 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=197.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:56.524 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:56.524 [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 [22] 13:58:56.525 [info] Kicking off download for media item #22 (kZGyz9jCUj0) 13:58:56.527 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=3.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [26, 22, ~U[2026-07-24 11:58:56Z], ~U[2026-07-24 11:58:56Z]] 13:58:56.527 [debug] Current batch of media processed. Will check again in 1000ms 13:58:57.528 [debug] Current batch of media processed. Will check again in 1000ms 13:58:58.529 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:54 - Caseys Intro\n00:01:15 - The Setup\n00:02:55 - The Story\n00:08:44 - The Post Mortem\n00:12:11 - The Informants\n00:14:10 - The Suspect\n00:15:34 - The Code\n00:20:33 - The Deal\n00:23:05 - The Conclusion \n00:24:37 - The Debrief\n00:26:40 - Google Testing Utility Failure\n00:28:43 - Production Code is Forever\n00:40:10 - Outro", "duration" => 2452, "filename" => "/downloads/The Standup/2025-12-04 The Secret of the AWS Outage | The Standup/The Secret of the AWS Outage | The Standup [r3bPmtEP9SQ].mp4", "id" => "r3bPmtEP9SQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=r3bPmtEP9SQ", "playlist_index" => 23, "timestamp" => 1764853312, "title" => "The Secret of the AWS Outage | The Standup", "upload_date" => "20251204"} 13:58:58.530 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=496.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:58:58.530 [debug] QUERY OK source="sources" db=0.1ms idle=496.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:58.530 [debug] QUERY OK source="media_items" db=0.1ms idle=497.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-04 13:01:52Z], 1] 13:58:58.532 [debug] QUERY OK source="media_items" db=0.8ms idle=497.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:54 - Caseys Intro\n00:01:15 - The Setup\n00:02:55 - The Story\n00:08:44 - The Post Mortem\n00:12:11 - The Informants\n00:14:10 - The Suspect\n00:15:34 - The Code\n00:20:33 - The Deal\n00:23:05 - The Conclusion \n00:24:37 - The Debrief\n00:26:40 - Google Testing Utility Failure\n00:28:43 - Production Code is Forever\n00:40:10 - Outro", "The Secret of the AWS Outage | The Standup", "2c4afd07-7fa7-4ee8-a182-9f931f5d1715", 2452, false, "r3bPmtEP9SQ", "https://www.youtube.com/watch?v=r3bPmtEP9SQ", 23, "/downloads/The Standup/2025-12-04 The Secret of the AWS Outage | The Standup/The Secret of the AWS Outage | The Standup [r3bPmtEP9SQ].mp4", false, false, false, 1, [], 0, ~U[2025-12-04 13:01:52Z], ~U[2026-07-24 11:58:58Z], ~U[2026-07-24 11:58:58Z], "If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:54 - Caseys Intro\n00:01:15 - The Setup\n00:02:55 - The Story\n00:08:44 - The Post Mortem\n00:12:11 - The Informants\n00:14:10 - The Suspect\n00:15:34 - The Code\n00:20:33 - The Deal\n00:23:05 - The Conclusion \n00:24:37 - The Debrief\n00:26:40 - Google Testing Utility Failure\n00:28:43 - Production Code is Forever\n00:40:10 - Outro", "The Secret of the AWS Outage | The Standup", 2452, false, "r3bPmtEP9SQ", "https://www.youtube.com/watch?v=r3bPmtEP9SQ", "/downloads/The Standup/2025-12-04 The Secret of the AWS Outage | The Standup/The Secret of the AWS Outage | The Standup [r3bPmtEP9SQ].mp4", false, 1, ~U[2025-12-04 13:01:52Z]] 13:58:58.532 [debug] QUERY OK source="sources" db=0.2ms idle=204.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:58:58.532 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:58:58.533 [debug] QUERY OK source="media_items" db=0.2ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [23] 13:58:58.533 [info] Kicking off download for media item #23 (r3bPmtEP9SQ) 13:58:58.534 [debug] QUERY OK source="tasks" db=0.1ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [27, 23, ~U[2026-07-24 11:58:58Z], ~U[2026-07-24 11:58:58Z]] 13:58:58.534 [debug] Current batch of media processed. Will check again in 1000ms 13:58:59.535 [debug] Current batch of media processed. Will check again in 1000ms 13:59:00.077 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:59:00.536 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "00:00:00 - Intro\n00:00:45 - Trash is thankful for snacks\nThankful for a Tech Project / Person\n00:05:30 - Topic Intro\n00:05:33 - Casey’s Pick\n00:11:16 - Prime’s Pick\n00:14:47 - Teej’s Pick\n00:18:36 - Trash’s Pick\n00:20:54 - Opencode\nThankful for Current Job / Situation\n00:22:51 - Topic Intro\n00:23:09 - Trash’s Situation\n00:24:25 - Teej’s Situation\n00:26:41 - Casey’s Situation\n00:28:28 - Prime’s Situation\nMost Recent Programming Project That Made You Happy\n00:31:41 - Topic Intro\n00:32:15 - Prime’s Project\n00:33:05 - Casey’s Project\n00:38:19 - Teej’s Project\n00:39:48 - Casey’s Tower Cupcakes\n00:47:16 - Trash’s Project\n00:51:03 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3106, "filename" => "/downloads/The Standup/2025-11-27 Thanksgiving Special - TheStandup/Thanksgiving Special - TheStandup [mxzx2Ps7OY0].mp4", "id" => "mxzx2Ps7OY0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=mxzx2Ps7OY0", "playlist_index" => 24, "timestamp" => 1764259965, "title" => "Thanksgiving Special - TheStandup", "upload_date" => "20251127"} 13:59:00.537 [debug] QUERY OK source="sources" db=0.8ms idle=503.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:00.538 [debug] QUERY OK source="sources" db=0.1ms idle=504.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:00.538 [debug] QUERY OK source="media_items" db=0.2ms idle=504.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-27 16:12:45Z], 1] 13:59:00.540 [debug] QUERY OK source="media_items" db=1.0ms idle=461.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["00:00:00 - Intro\n00:00:45 - Trash is thankful for snacks\nThankful for a Tech Project / Person\n00:05:30 - Topic Intro\n00:05:33 - Casey’s Pick\n00:11:16 - Prime’s Pick\n00:14:47 - Teej’s Pick\n00:18:36 - Trash’s Pick\n00:20:54 - Opencode\nThankful for Current Job / Situation\n00:22:51 - Topic Intro\n00:23:09 - Trash’s Situation\n00:24:25 - Teej’s Situation\n00:26:41 - Casey’s Situation\n00:28:28 - Prime’s Situation\nMost Recent Programming Project That Made You Happy\n00:31:41 - Topic Intro\n00:32:15 - Prime’s Project\n00:33:05 - Casey’s Project\n00:38:19 - Teej’s Project\n00:39:48 - Casey’s Tower Cupcakes\n00:47:16 - Trash’s Project\n00:51:03 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanksgiving Special - TheStandup", "b2a0e301-e09f-48d3-9b4f-13472783bfdb", 3106, false, "mxzx2Ps7OY0", "https://www.youtube.com/watch?v=mxzx2Ps7OY0", 24, "/downloads/The Standup/2025-11-27 Thanksgiving Special - TheStandup/Thanksgiving Special - TheStandup [mxzx2Ps7OY0].mp4", false, false, false, 1, [], 0, ~U[2025-11-27 16:12:45Z], ~U[2026-07-24 11:59:00Z], ~U[2026-07-24 11:59:00Z], "00:00:00 - Intro\n00:00:45 - Trash is thankful for snacks\nThankful for a Tech Project / Person\n00:05:30 - Topic Intro\n00:05:33 - Casey’s Pick\n00:11:16 - Prime’s Pick\n00:14:47 - Teej’s Pick\n00:18:36 - Trash’s Pick\n00:20:54 - Opencode\nThankful for Current Job / Situation\n00:22:51 - Topic Intro\n00:23:09 - Trash’s Situation\n00:24:25 - Teej’s Situation\n00:26:41 - Casey’s Situation\n00:28:28 - Prime’s Situation\nMost Recent Programming Project That Made You Happy\n00:31:41 - Topic Intro\n00:32:15 - Prime’s Project\n00:33:05 - Casey’s Project\n00:38:19 - Teej’s Project\n00:39:48 - Casey’s Tower Cupcakes\n00:47:16 - Trash’s Project\n00:51:03 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanksgiving Special - TheStandup", 3106, false, "mxzx2Ps7OY0", "https://www.youtube.com/watch?v=mxzx2Ps7OY0", "/downloads/The Standup/2025-11-27 Thanksgiving Special - TheStandup/Thanksgiving Special - TheStandup [mxzx2Ps7OY0].mp4", false, 1, ~U[2025-11-27 16:12:45Z]] 13:59:00.540 [debug] QUERY OK source="sources" db=0.1ms idle=210.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:00.541 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:00.541 [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 [24] 13:59:00.541 [info] Kicking off download for media item #24 (mxzx2Ps7OY0) 13:59:00.543 [debug] QUERY OK source="tasks" db=0.1ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [28, 24, ~U[2026-07-24 11:59:00Z], ~U[2026-07-24 11:59:00Z]] 13:59:00.543 [debug] Current batch of media processed. Will check again in 1000ms 13:59:01.544 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\nWe break down the most infamous \"thought-terminating clichés\" in software engineering. From the classic \"It depends\" to the controversial \"Premature optimization is the root of all evil,\" the team ranks these common dev phrases on a tier list based on how much they actually hinder or help real problem-solving.\n\nChapters\n00:00:00 - Intro\n00:01:18 - The List\n00:03:56 - The Rules\n00:06:28 - Never do a full rewrite\n00:12:27 - Programmer time is worth more than CPU time\n00:17:29 - Dont repeat yourself (DRY)\n00:23:23 - Use the right tool for the right job\n00:27:22 - It depends\n00:30:04 - Make it work make it right make it fast\n00:38:54 - You aint gonna need it (YAGNI)\n00:40:38 - Premature optimization is the root of all evil\n00:42:47 - You just need to be disciplined\n00:44:12 - Best practices\n00:46:33 - Real programmers dont make that mistake\n00:47:44 - Fast, Cheap, Good - Pick any two\n00:50:27 - Outro", "duration" => 3080, "filename" => "/downloads/The Standup/2025-11-20 Bullsh*t Engineers Say Tier List | The Standup/Bullsh*t Engineers Say Tier List | The Standup [y2jH37EObQY].mp4", "id" => "y2jH37EObQY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=y2jH37EObQY", "playlist_index" => 25, "timestamp" => 1763643716, "title" => "Bullsh*t Engineers Say Tier List | The Standup", "upload_date" => "20251120"} 13:59:01.545 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=1003.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:01.546 [debug] QUERY OK source="sources" db=1.0ms queue=0.3ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:01.548 [debug] QUERY OK source="media_items" db=0.9ms idle=1003.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-20 13:01:56Z], 1] 13:59:01.549 [debug] QUERY OK source="media_items" db=1.3ms idle=1004.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\nWe break down the most infamous \"thought-terminating clichés\" in software engineering. From the classic \"It depends\" to the controversial \"Premature optimization is the root of all evil,\" the team ranks these common dev phrases on a tier list based on how much they actually hinder or help real problem-solving.\n\nChapters\n00:00:00 - Intro\n00:01:18 - The List\n00:03:56 - The Rules\n00:06:28 - Never do a full rewrite\n00:12:27 - Programmer time is worth more than CPU time\n00:17:29 - Dont repeat yourself (DRY)\n00:23:23 - Use the right tool for the right job\n00:27:22 - It depends\n00:30:04 - Make it work make it right make it fast\n00:38:54 - You aint gonna need it (YAGNI)\n00:40:38 - Premature optimization is the root of all evil\n00:42:47 - You just need to be disciplined\n00:44:12 - Best practices\n00:46:33 - Real programmers dont make that mistake\n00:47:44 - Fast, Cheap, Good - Pick any two\n00:50:27 - Outro", "Bullsh*t Engineers Say Tier List | The Standup", "752f3337-cbd0-47dd-a717-1fa1742be0e7", 3080, false, "y2jH37EObQY", "https://www.youtube.com/watch?v=y2jH37EObQY", 25, "/downloads/The Standup/2025-11-20 Bullsh*t Engineers Say Tier List | The Standup/Bullsh*t Engineers Say Tier List | The Standup [y2jH37EObQY].mp4", false, false, false, 1, [], 0, ~U[2025-11-20 13:01:56Z], ~U[2026-07-24 11:59:01Z], ~U[2026-07-24 11:59:01Z], "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\nWe break down the most infamous \"thought-terminating clichés\" in software engineering. From the classic \"It depends\" to the controversial \"Premature optimization is the root of all evil,\" the team ranks these common dev phrases on a tier list based on how much they actually hinder or help real problem-solving.\n\nChapters\n00:00:00 - Intro\n00:01:18 - The List\n00:03:56 - The Rules\n00:06:28 - Never do a full rewrite\n00:12:27 - Programmer time is worth more than CPU time\n00:17:29 - Dont repeat yourself (DRY)\n00:23:23 - Use the right tool for the right job\n00:27:22 - It depends\n00:30:04 - Make it work make it right make it fast\n00:38:54 - You aint gonna need it (YAGNI)\n00:40:38 - Premature optimization is the root of all evil\n00:42:47 - You just need to be disciplined\n00:44:12 - Best practices\n00:46:33 - Real programmers dont make that mistake\n00:47:44 - Fast, Cheap, Good - Pick any two\n00:50:27 - Outro", "Bullsh*t Engineers Say Tier List | The Standup", 3080, false, "y2jH37EObQY", "https://www.youtube.com/watch?v=y2jH37EObQY", "/downloads/The Standup/2025-11-20 Bullsh*t Engineers Say Tier List | The Standup/Bullsh*t Engineers Say Tier List | The Standup [y2jH37EObQY].mp4", false, 1, ~U[2025-11-20 13:01:56Z]] 13:59:01.550 [debug] QUERY OK source="sources" db=0.1ms idle=218.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:01.550 [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] 13:59:01.551 [debug] QUERY OK source="media_items" db=0.3ms 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 [25] 13:59:01.551 [info] Kicking off download for media item #25 (y2jH37EObQY) 13:59:01.552 [debug] QUERY OK source="tasks" db=0.1ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [29, 25, ~U[2026-07-24 11:59:01Z], ~U[2026-07-24 11:59:01Z]] 13:59:01.552 [debug] Current batch of media processed. Will check again in 1000ms 13:59:02.553 [debug] Current batch of media processed. Will check again in 1000ms 13:59:03.554 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nFil-C creators: https://x.com/filpizlo \n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:01:29 - Fil-C Demo\n00:07:56 - Security\n00:11:52 - Game Engine Use Case\n00:14:20 - What cant it do\n00:18:02 - Different to ASan\n00:23:57 - How Fil-C works\n00:36:38 - Choosing Fil-C over Rust\n00:51:31 - Outro", "duration" => 3148, "filename" => "/downloads/The Standup/2025-11-17 Memory Safe C/Memory Safe C [_AsXnyi2Mus].mp4", "id" => "_AsXnyi2Mus", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_AsXnyi2Mus", "playlist_index" => 26, "timestamp" => 1763397493, "title" => "Memory Safe C", "upload_date" => "20251117"} 13:59:03.555 [debug] QUERY OK source="sources" db=0.1ms idle=521.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:03.555 [debug] QUERY OK source="sources" db=0.4ms idle=521.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:03.556 [debug] QUERY OK source="media_items" db=0.3ms idle=522.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-17 16:38:13Z], 1] 13:59:03.557 [debug] QUERY OK source="media_items" db=1.0ms idle=522.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nFil-C creators: https://x.com/filpizlo \n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:01:29 - Fil-C Demo\n00:07:56 - Security\n00:11:52 - Game Engine Use Case\n00:14:20 - What cant it do\n00:18:02 - Different to ASan\n00:23:57 - How Fil-C works\n00:36:38 - Choosing Fil-C over Rust\n00:51:31 - Outro", "Memory Safe C", "09e0dc59-b195-4649-a908-d3358a4dda2d", 3148, false, "_AsXnyi2Mus", "https://www.youtube.com/watch?v=_AsXnyi2Mus", 26, "/downloads/The Standup/2025-11-17 Memory Safe C/Memory Safe C [_AsXnyi2Mus].mp4", false, false, false, 1, [], 0, ~U[2025-11-17 16:38:13Z], ~U[2026-07-24 11:59:03Z], ~U[2026-07-24 11:59:03Z], "Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nFil-C creators: https://x.com/filpizlo \n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:01:29 - Fil-C Demo\n00:07:56 - Security\n00:11:52 - Game Engine Use Case\n00:14:20 - What cant it do\n00:18:02 - Different to ASan\n00:23:57 - How Fil-C works\n00:36:38 - Choosing Fil-C over Rust\n00:51:31 - Outro", "Memory Safe C", 3148, false, "_AsXnyi2Mus", "https://www.youtube.com/watch?v=_AsXnyi2Mus", "/downloads/The Standup/2025-11-17 Memory Safe C/Memory Safe C [_AsXnyi2Mus].mp4", false, 1, ~U[2025-11-17 16:38:13Z]] 13:59:03.558 [debug] QUERY OK source="sources" db=0.3ms idle=224.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:03.558 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:03.559 [debug] QUERY OK source="media_items" db=0.3ms 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 [26] 13:59:03.559 [info] Kicking off download for media item #26 (_AsXnyi2Mus) 13:59:03.561 [debug] QUERY OK source="tasks" db=0.1ms idle=2.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [30, 26, ~U[2026-07-24 11:59:03Z], ~U[2026-07-24 11:59:03Z]] 13:59:03.561 [debug] Current batch of media processed. Will check again in 1000ms 13:59:04.561 [debug] Current batch of media processed. Will check again in 1000ms 13:59:05.562 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Try it now sentry.io\n\n00:00:00 - Intro\n00:01:23 - the issue\n00:04:01 - the takes\n00:09:16 - the bug\n00:10:22 - AI Disclosure\n00:11:42 - Prime weighs in\n00:13:28 - Disclosure credit\n00:14:40 - Big Sleep\n00:15:24 - AI Bugs Finders vs Static Analysis\n00:17:40 - Do they owe them anything at all\n00:19:40 - Is this optional or worthwhile\n00:23:33 - Bugs in general\n00:26:08 - Triage timespend\n00:27:01 - Outro", "duration" => 1653, "filename" => "/downloads/The Standup/2025-11-09 FFMPEG takes a Big Sleep/FFMPEG takes a Big Sleep [dI64JeCIO8k].mp4", "id" => "dI64JeCIO8k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dI64JeCIO8k", "playlist_index" => 27, "timestamp" => 1762689671, "title" => "FFMPEG takes a Big Sleep", "upload_date" => "20251109"} 13:59:05.563 [debug] QUERY OK source="sources" db=0.2ms idle=529.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:05.563 [debug] QUERY OK source="sources" db=0.1ms idle=529.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:05.564 [debug] QUERY OK source="media_items" db=0.3ms idle=530.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-09 12:01:11Z], 1] 13:59:05.565 [debug] QUERY OK source="media_items" db=1.0ms idle=530.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Try it now sentry.io\n\n00:00:00 - Intro\n00:01:23 - the issue\n00:04:01 - the takes\n00:09:16 - the bug\n00:10:22 - AI Disclosure\n00:11:42 - Prime weighs in\n00:13:28 - Disclosure credit\n00:14:40 - Big Sleep\n00:15:24 - AI Bugs Finders vs Static Analysis\n00:17:40 - Do they owe them anything at all\n00:19:40 - Is this optional or worthwhile\n00:23:33 - Bugs in general\n00:26:08 - Triage timespend\n00:27:01 - Outro", "FFMPEG takes a Big Sleep", "63fa5ee2-6165-44b1-887d-1982d4aa7de2", 1653, false, "dI64JeCIO8k", "https://www.youtube.com/watch?v=dI64JeCIO8k", 27, "/downloads/The Standup/2025-11-09 FFMPEG takes a Big Sleep/FFMPEG takes a Big Sleep [dI64JeCIO8k].mp4", false, false, false, 1, [], 0, ~U[2025-11-09 12:01:11Z], ~U[2026-07-24 11:59:05Z], ~U[2026-07-24 11:59:05Z], "Try it now sentry.io\n\n00:00:00 - Intro\n00:01:23 - the issue\n00:04:01 - the takes\n00:09:16 - the bug\n00:10:22 - AI Disclosure\n00:11:42 - Prime weighs in\n00:13:28 - Disclosure credit\n00:14:40 - Big Sleep\n00:15:24 - AI Bugs Finders vs Static Analysis\n00:17:40 - Do they owe them anything at all\n00:19:40 - Is this optional or worthwhile\n00:23:33 - Bugs in general\n00:26:08 - Triage timespend\n00:27:01 - Outro", "FFMPEG takes a Big Sleep", 1653, false, "dI64JeCIO8k", "https://www.youtube.com/watch?v=dI64JeCIO8k", "/downloads/The Standup/2025-11-09 FFMPEG takes a Big Sleep/FFMPEG takes a Big Sleep [dI64JeCIO8k].mp4", false, 1, ~U[2025-11-09 12:01:11Z]] 13:59:05.566 [debug] QUERY OK source="sources" db=0.3ms idle=229.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:05.566 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:05.566 [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 [27] 13:59:05.567 [info] Kicking off download for media item #27 (dI64JeCIO8k) 13:59:05.568 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [31, 27, ~U[2026-07-24 11:59:05Z], ~U[2026-07-24 11:59:05Z]] 13:59:05.568 [debug] Current batch of media processed. Will check again in 1000ms 13:59:06.568 [debug] Current batch of media processed. Will check again in 1000ms 13:59:07.569 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n 00:00:00 - Intro\n00:01:14 - Unitree Robot Security\n00:02:09 - Merge Cop ep. 1 \n00:03:33 - Base unit robot\n00:07:50 - Back to the Unitree story\n00:12:07 - Robots spread virus by proximity\n00:13:13 - Skynet is coming\n00:15:59 - Automation for no reason\n00:19:51 - Software Success\n00:22:01 - Whos gonna buy these\n00:24:55 - Laundry\n00:26:57 - what are you going to do after robots\n00:31:50 - Early adoption risks\n00:37:32 - Price\n00:38:22 - Band name loop holes\n00:39:34 - Jelly eyeballs\n00:43:40 - Outro", "duration" => 2708, "filename" => "/downloads/The Standup/2025-11-05 The Robots are getting Hacked | The Standup/The Robots are getting Hacked | The Standup [Bxvfd2wi8ZQ].mp4", "id" => "Bxvfd2wi8ZQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Bxvfd2wi8ZQ", "playlist_index" => 28, "timestamp" => 1762361236, "title" => "The Robots are getting Hacked | The Standup", "upload_date" => "20251105"} 13:59:07.570 [debug] QUERY OK source="sources" db=0.4ms idle=536.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:07.570 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [1] 13:59:07.571 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=537.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-05 16:47:16Z], 1] 13:59:07.573 [debug] QUERY OK source="media_items" db=1.2ms idle=538.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n 00:00:00 - Intro\n00:01:14 - Unitree Robot Security\n00:02:09 - Merge Cop ep. 1 \n00:03:33 - Base unit robot\n00:07:50 - Back to the Unitree story\n00:12:07 - Robots spread virus by proximity\n00:13:13 - Skynet is coming\n00:15:59 - Automation for no reason\n00:19:51 - Software Success\n00:22:01 - Whos gonna buy these\n00:24:55 - Laundry\n00:26:57 - what are you going to do after robots\n00:31:50 - Early adoption risks\n00:37:32 - Price\n00:38:22 - Band name loop holes\n00:39:34 - Jelly eyeballs\n00:43:40 - Outro", "The Robots are getting Hacked | The Standup", "af09a9ff-f085-4b65-a3b9-e5ab9779da90", 2708, false, "Bxvfd2wi8ZQ", "https://www.youtube.com/watch?v=Bxvfd2wi8ZQ", 28, "/downloads/The Standup/2025-11-05 The Robots are getting Hacked | The Standup/The Robots are getting Hacked | The Standup [Bxvfd2wi8ZQ].mp4", false, false, false, 1, [], 0, ~U[2025-11-05 16:47:16Z], ~U[2026-07-24 11:59:07Z], ~U[2026-07-24 11:59:07Z], "Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n 00:00:00 - Intro\n00:01:14 - Unitree Robot Security\n00:02:09 - Merge Cop ep. 1 \n00:03:33 - Base unit robot\n00:07:50 - Back to the Unitree story\n00:12:07 - Robots spread virus by proximity\n00:13:13 - Skynet is coming\n00:15:59 - Automation for no reason\n00:19:51 - Software Success\n00:22:01 - Whos gonna buy these\n00:24:55 - Laundry\n00:26:57 - what are you going to do after robots\n00:31:50 - Early adoption risks\n00:37:32 - Price\n00:38:22 - Band name loop holes\n00:39:34 - Jelly eyeballs\n00:43:40 - Outro", "The Robots are getting Hacked | The Standup", 2708, false, "Bxvfd2wi8ZQ", "https://www.youtube.com/watch?v=Bxvfd2wi8ZQ", "/downloads/The Standup/2025-11-05 The Robots are getting Hacked | The Standup/The Robots are getting Hacked | The Standup [Bxvfd2wi8ZQ].mp4", false, 1, ~U[2025-11-05 16:47:16Z]] 13:59:07.574 [debug] QUERY OK source="sources" db=0.5ms idle=234.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:07.575 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:07.576 [debug] QUERY OK source="media_items" db=0.6ms 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 [28] 13:59:07.576 [info] Kicking off download for media item #28 (Bxvfd2wi8ZQ) 13:59:07.579 [debug] QUERY OK source="tasks" db=0.1ms idle=4.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [32, 28, ~U[2026-07-24 11:59:07Z], ~U[2026-07-24 11:59:07Z]] 13:59:07.579 [debug] Current batch of media processed. Will check again in 1000ms 13:59:08.580 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\nhttps://x.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:39 - Express JS readme PRoblem\n00:01:50 - What is the right way to contribute to opensource\n00:11:54 - Ghosty PR Policies and process\n00:15:39 - Vetting Contributers and how to get noticed\n00:23:22 - is opensourcing worth it\n00:32:20 - maintaining a project in a linux community\n00:35:37 - Zig \n00:37:48 - hacktober LLMs\n00:38:53 - Contributing with LLMs\n00:47:54 - make a package instead of contributing to the main repo\n00:51:25 - Fortnite\n00:52:02 - Outro", "duration" => 3206, "filename" => "/downloads/The Standup/2025-11-01 is AI ruining opensource?/is AI ruining opensource? [kP93L683UOE].mp4", "id" => "kP93L683UOE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kP93L683UOE", "playlist_index" => 29, "timestamp" => 1761994892, "title" => "is AI ruining opensource?", "upload_date" => "20251101"} 13:59:08.581 [debug] QUERY OK source="sources" db=0.2ms idle=1004.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:08.581 [debug] QUERY OK source="sources" db=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:08.581 [debug] QUERY OK source="media_items" db=0.1ms idle=1002.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-01 11:01:32Z], 1] 13:59:08.583 [debug] QUERY OK source="media_items" db=1.0ms idle=1002.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\nhttps://x.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:39 - Express JS readme PRoblem\n00:01:50 - What is the right way to contribute to opensource\n00:11:54 - Ghosty PR Policies and process\n00:15:39 - Vetting Contributers and how to get noticed\n00:23:22 - is opensourcing worth it\n00:32:20 - maintaining a project in a linux community\n00:35:37 - Zig \n00:37:48 - hacktober LLMs\n00:38:53 - Contributing with LLMs\n00:47:54 - make a package instead of contributing to the main repo\n00:51:25 - Fortnite\n00:52:02 - Outro", "is AI ruining opensource?", "d317985d-c85b-42aa-8784-5d746f66c13e", 3206, false, "kP93L683UOE", "https://www.youtube.com/watch?v=kP93L683UOE", 29, "/downloads/The Standup/2025-11-01 is AI ruining opensource?/is AI ruining opensource? [kP93L683UOE].mp4", false, false, false, 1, [], 0, ~U[2025-11-01 11:01:32Z], ~U[2026-07-24 11:59:08Z], ~U[2026-07-24 11:59:08Z], "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\nhttps://x.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:39 - Express JS readme PRoblem\n00:01:50 - What is the right way to contribute to opensource\n00:11:54 - Ghosty PR Policies and process\n00:15:39 - Vetting Contributers and how to get noticed\n00:23:22 - is opensourcing worth it\n00:32:20 - maintaining a project in a linux community\n00:35:37 - Zig \n00:37:48 - hacktober LLMs\n00:38:53 - Contributing with LLMs\n00:47:54 - make a package instead of contributing to the main repo\n00:51:25 - Fortnite\n00:52:02 - Outro", "is AI ruining opensource?", 3206, false, "kP93L683UOE", "https://www.youtube.com/watch?v=kP93L683UOE", "/downloads/The Standup/2025-11-01 is AI ruining opensource?/is AI ruining opensource? [kP93L683UOE].mp4", false, 1, ~U[2025-11-01 11:01:32Z]] 13:59:08.583 [debug] QUERY OK source="sources" db=0.1ms idle=243.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:08.584 [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] 13:59:08.584 [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 [29] 13:59:08.584 [info] Kicking off download for media item #29 (kP93L683UOE) 13:59:08.585 [debug] QUERY OK source="tasks" db=0.1ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [33, 29, ~U[2026-07-24 11:59:08Z], ~U[2026-07-24 11:59:08Z]] 13:59:08.585 [debug] Current batch of media processed. Will check again in 1000ms 13:59:09.586 [debug] Current batch of media processed. Will check again in 1000ms 13:59:10.587 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n00:00:00 - Intro\n00:02:46 - Intro to Quantum, qbits and superpositions\n00:07:20 - Entanglement\n00:10:52 - Shor's algorithm\n00:12:07 - Inteference and decoherence \n00:14:31 - The fragility question\n00:17:00 - heisenbergs uncertainty principle\n00:18:03 - off topic\n00:20:16 - Magnetic field aim assist\n00:22:34 - Quantum Gates & Basis Vectors\n00:30:48 - Quantum Algorithyms and passwords\n00:37:50 - Uncerainty principle\n00:40:15 - What are people planning on using this for\n00:42:41 - Willow Chip\n00:44:33 - Quantum programming languages\n00:48:41 - Willow paper\n00:51:02 - Trash notes\n00:52:07 - Mapping Proteins and other uses for Quantum Computing\n00:55:37 - Quantum Echos\n00:58:20 - The future of Quantum computing\n01:05:19 - Quantum AI is a lie tell Facebook\n01:08:09 - Outro", "duration" => 4254, "filename" => "/downloads/The Standup/2025-10-27 What even is Quantum Computing?!/What even is Quantum Computing?! [ED-Q4N7ECMs].mp4", "id" => "ED-Q4N7ECMs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ED-Q4N7ECMs", "playlist_index" => 30, "timestamp" => 1761562832, "title" => "What even is Quantum Computing?!", "upload_date" => "20251027"} 13:59:10.588 [debug] QUERY OK source="sources" db=0.1ms idle=554.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:10.589 [debug] QUERY OK source="sources" db=0.7ms idle=554.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:10.589 [debug] QUERY OK source="media_items" db=0.1ms idle=555.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-27 11:00:32Z], 1] 13:59:10.590 [debug] QUERY OK source="media_items" db=0.8ms idle=556.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n00:00:00 - Intro\n00:02:46 - Intro to Quantum, qbits and superpositions\n00:07:20 - Entanglement\n00:10:52 - Shor's algorithm\n00:12:07 - Inteference and decoherence \n00:14:31 - The fragility question\n00:17:00 - heisenbergs uncertainty principle\n00:18:03 - off topic\n00:20:16 - Magnetic field aim assist\n00:22:34 - Quantum Gates & Basis Vectors\n00:30:48 - Quantum Algorithyms and passwords\n00:37:50 - Uncerainty principle\n00:40:15 - What are people planning on using this for\n00:42:41 - Willow Chip\n00:44:33 - Quantum programming languages\n00:48:41 - Willow paper\n00:51:02 - Trash notes\n00:52:07 - Mapping Proteins and other uses for Quantum Computing\n00:55:37 - Quantum Echos\n00:58:20 - The future of Quantum computing\n01:05:19 - Quantum AI is a lie tell Facebook\n01:08:09 - Outro", "What even is Quantum Computing?!", "80a934f1-339d-452b-81c6-d93c4ae4c1da", 4254, false, "ED-Q4N7ECMs", "https://www.youtube.com/watch?v=ED-Q4N7ECMs", 30, "/downloads/The Standup/2025-10-27 What even is Quantum Computing?!/What even is Quantum Computing?! [ED-Q4N7ECMs].mp4", false, false, false, 1, [], 0, ~U[2025-10-27 11:00:32Z], ~U[2026-07-24 11:59:10Z], ~U[2026-07-24 11:59:10Z], "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n00:00:00 - Intro\n00:02:46 - Intro to Quantum, qbits and superpositions\n00:07:20 - Entanglement\n00:10:52 - Shor's algorithm\n00:12:07 - Inteference and decoherence \n00:14:31 - The fragility question\n00:17:00 - heisenbergs uncertainty principle\n00:18:03 - off topic\n00:20:16 - Magnetic field aim assist\n00:22:34 - Quantum Gates & Basis Vectors\n00:30:48 - Quantum Algorithyms and passwords\n00:37:50 - Uncerainty principle\n00:40:15 - What are people planning on using this for\n00:42:41 - Willow Chip\n00:44:33 - Quantum programming languages\n00:48:41 - Willow paper\n00:51:02 - Trash notes\n00:52:07 - Mapping Proteins and other uses for Quantum Computing\n00:55:37 - Quantum Echos\n00:58:20 - The future of Quantum computing\n01:05:19 - Quantum AI is a lie tell Facebook\n01:08:09 - Outro", "What even is Quantum Computing?!", 4254, false, "ED-Q4N7ECMs", "https://www.youtube.com/watch?v=ED-Q4N7ECMs", "/downloads/The Standup/2025-10-27 What even is Quantum Computing?!/What even is Quantum Computing?! [ED-Q4N7ECMs].mp4", false, 1, ~U[2025-10-27 11:00:32Z]] 13:59:10.591 [debug] QUERY OK source="sources" db=0.1ms idle=248.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:10.591 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:10.592 [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 [30] 13:59:10.592 [info] Kicking off download for media item #30 (ED-Q4N7ECMs) 13:59:10.611 [debug] QUERY OK source="tasks" db=0.7ms idle=19.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [34, 30, ~U[2026-07-24 11:59:10Z], ~U[2026-07-24 11:59:10Z]] 13:59:10.611 [debug] Current batch of media processed. Will check again in 1000ms 13:59:11.611 [debug] Current batch of media processed. Will check again in 1000ms 13:59:12.612 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n\n00:00:00 - Intro & Snacks\n00:02:24 - AWS Outage and companies effected\n00:07:54 - Insident report\n00:10:22 - How do data centers work?\n00:20:07 - Actual Post mortem\n00:22:00 - Vibe coding brought down the internet\n00:24:00 - Why is every company on US-EAST-1\n00:27:00 - CDNS and cloudDBS\n00:28:49 - 8sleep rant\n00:35:08 - Dumb IOT devices\n00:39:11 - Culture of new product companies\n00:43:00 - How much is cloud storage\n00:44:05 - OpenAI Browser, Atlas\n00:56:00 - Outro", "duration" => 3490, "filename" => "/downloads/The Standup/2025-10-23 AWS Outage And ANOTHER AI BROWSER???? - TheStandup/AWS Outage And ANOTHER AI BROWSER???? - TheStandup [J893_8HlkPM].mp4", "id" => "J893_8HlkPM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=J893_8HlkPM", "playlist_index" => 31, "timestamp" => 1761217238, "title" => "AWS Outage And ANOTHER AI BROWSER???? - TheStandup", "upload_date" => "20251023"} 13:59:12.613 [debug] QUERY OK source="sources" db=0.2ms idle=579.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:12.613 [debug] QUERY OK source="sources" db=0.2ms idle=579.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:12.614 [debug] QUERY OK source="media_items" db=0.4ms idle=580.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-23 11:00:38Z], 1] 13:59:12.615 [debug] QUERY OK source="media_items" db=0.8ms idle=580.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n\n00:00:00 - Intro & Snacks\n00:02:24 - AWS Outage and companies effected\n00:07:54 - Insident report\n00:10:22 - How do data centers work?\n00:20:07 - Actual Post mortem\n00:22:00 - Vibe coding brought down the internet\n00:24:00 - Why is every company on US-EAST-1\n00:27:00 - CDNS and cloudDBS\n00:28:49 - 8sleep rant\n00:35:08 - Dumb IOT devices\n00:39:11 - Culture of new product companies\n00:43:00 - How much is cloud storage\n00:44:05 - OpenAI Browser, Atlas\n00:56:00 - Outro", "AWS Outage And ANOTHER AI BROWSER???? - TheStandup", "f49f22d1-8351-4124-a74f-4743dc5d161f", 3490, false, "J893_8HlkPM", "https://www.youtube.com/watch?v=J893_8HlkPM", 31, "/downloads/The Standup/2025-10-23 AWS Outage And ANOTHER AI BROWSER???? - TheStandup/AWS Outage And ANOTHER AI BROWSER???? - TheStandup [J893_8HlkPM].mp4", false, false, false, 1, [], 0, ~U[2025-10-23 11:00:38Z], ~U[2026-07-24 11:59:12Z], ~U[2026-07-24 11:59:12Z], "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n\n00:00:00 - Intro & Snacks\n00:02:24 - AWS Outage and companies effected\n00:07:54 - Insident report\n00:10:22 - How do data centers work?\n00:20:07 - Actual Post mortem\n00:22:00 - Vibe coding brought down the internet\n00:24:00 - Why is every company on US-EAST-1\n00:27:00 - CDNS and cloudDBS\n00:28:49 - 8sleep rant\n00:35:08 - Dumb IOT devices\n00:39:11 - Culture of new product companies\n00:43:00 - How much is cloud storage\n00:44:05 - OpenAI Browser, Atlas\n00:56:00 - Outro", "AWS Outage And ANOTHER AI BROWSER???? - TheStandup", 3490, false, "J893_8HlkPM", "https://www.youtube.com/watch?v=J893_8HlkPM", "/downloads/The Standup/2025-10-23 AWS Outage And ANOTHER AI BROWSER???? - TheStandup/AWS Outage And ANOTHER AI BROWSER???? - TheStandup [J893_8HlkPM].mp4", false, 1, ~U[2025-10-23 11:00:38Z]] 13:59:12.615 [debug] QUERY OK source="sources" db=0.1ms idle=271.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:12.616 [debug] QUERY OK source="media_profiles" db=0.9ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:12.617 [debug] QUERY OK source="media_items" db=0.4ms 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 [31] 13:59:12.617 [info] Kicking off download for media item #31 (J893_8HlkPM) 13:59:12.619 [debug] QUERY OK source="tasks" db=0.2ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [35, 31, ~U[2026-07-24 11:59:12Z], ~U[2026-07-24 11:59:12Z]] 13:59:12.619 [debug] Current batch of media processed. Will check again in 1000ms 13:59:13.620 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3954, "filename" => "/downloads/The Standup/2025-10-22 TheStandup - DHH Talks Omarchy/TheStandup - DHH Talks Omarchy [ljGPvgMPOn8].mp4", "id" => "ljGPvgMPOn8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ljGPvgMPOn8", "playlist_index" => 32, "timestamp" => 1761134487, "title" => "TheStandup - DHH Talks Omarchy", "upload_date" => "20251022"} 13:59:13.621 [debug] QUERY OK source="sources" db=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 (?)) [1] 13:59:13.621 [debug] QUERY OK source="sources" db=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:13.621 [debug] QUERY OK source="media_items" db=0.1ms idle=1002.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-22 12:01:27Z], 1] 13:59:13.622 [debug] QUERY OK source="media_items" db=0.5ms idle=1002.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "TheStandup - DHH Talks Omarchy", "bcff3aeb-7180-431c-b33f-9e49d98ffc98", 3954, false, "ljGPvgMPOn8", "https://www.youtube.com/watch?v=ljGPvgMPOn8", 32, "/downloads/The Standup/2025-10-22 TheStandup - DHH Talks Omarchy/TheStandup - DHH Talks Omarchy [ljGPvgMPOn8].mp4", false, false, false, 1, [], 0, ~U[2025-10-22 12:01:27Z], ~U[2026-07-24 11:59:13Z], ~U[2026-07-24 11:59:13Z], "https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "TheStandup - DHH Talks Omarchy", 3954, false, "ljGPvgMPOn8", "https://www.youtube.com/watch?v=ljGPvgMPOn8", "/downloads/The Standup/2025-10-22 TheStandup - DHH Talks Omarchy/TheStandup - DHH Talks Omarchy [ljGPvgMPOn8].mp4", false, 1, ~U[2025-10-22 12:01:27Z]] 13:59:13.623 [debug] QUERY OK source="sources" db=0.1ms idle=277.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:13.623 [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] 13:59:13.624 [debug] QUERY OK source="media_items" db=0.3ms idle=2.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [32] 13:59:13.624 [info] Kicking off download for media item #32 (ljGPvgMPOn8) 13:59:13.625 [debug] QUERY OK source="tasks" db=0.1ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [36, 32, ~U[2026-07-24 11:59:13Z], ~U[2026-07-24 11:59:13Z]] 13:59:13.625 [debug] Current batch of media processed. Will check again in 1000ms 13:59:14.626 [debug] Current batch of media processed. Will check again in 1000ms 13:59:15.284 [info] GET / 13:59:15.284 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:59:15.284 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BBkvSiArLTcCMhgDPSoQWGk8NEoMBgZxwJHgKHGTeWjjdkva0Uzy47n2", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:15.285 [debug] QUERY OK source="settings" db=0.6ms idle=938.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:15.285 [debug] QUERY OK source="media_profiles" db=0.3ms idle=252.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:59:15.286 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=252.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:59:15.288 [debug] QUERY OK source="media_items" db=1.3ms idle=253.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:59:15.289 [debug] QUERY OK source="media_items" db=0.5ms idle=254.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:59:15.290 [debug] QUERY OK source="settings" db=0.5ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:15.291 [debug] QUERY OK source="settings" db=0.7ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:15.292 [debug] QUERY OK source="settings" db=0.4ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:15.293 [debug] QUERY OK source="tasks" db=0.6ms idle=4.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:59:15.298 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending", "source_id" => 1} 13:59:15.298 [debug] QUERY OK source="sources" db=4.4ms 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" = ?) [1] 13:59:15.299 [debug] QUERY OK source="sources" db=1.6ms idle=7.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.300 [debug] QUERY OK source="media_items" db=6.4ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [2, 3] 13:59:15.302 [debug] QUERY OK source="media_items" db=2.3ms idle=7.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")))) [1] 13:59:15.303 [debug] QUERY OK source="media_items" db=0.4ms 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 (m0."media_filepath" IS NULL)) [] 13:59:15.304 [debug] QUERY OK source="media_items" db=1.3ms queue=0.2ms idle=8.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 ? [1, 10, 0] 13:59:15.304 [debug] Replied in 6ms 13:59:15.305 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded", "source_id" => 1} 13:59:15.305 [debug] QUERY OK source="media_items" db=2.3ms idle=3.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:59:15.306 [debug] QUERY OK source="sources" db=0.8ms idle=3.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.307 [debug] QUERY OK source="sources" db=1.2ms queue=0.2ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.308 [debug] QUERY OK source="media_items" db=0.5ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:59:15.308 [debug] QUERY OK source="media_items" db=0.1ms 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 ? [1, 10, 0] 13:59:15.308 [debug] Replied in 3ms 13:59:15.309 [debug] QUERY OK source="media_items" db=1.3ms idle=4.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:59:15.310 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "other", "source_id" => 1} 13:59:15.317 [debug] QUERY OK source="media_items" db=7.7ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:59:15.317 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [1] 13:59:15.319 [debug] QUERY OK source="sources" db=7.8ms 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" = ?) [1] 13:59:15.320 [debug] QUERY OK source="media_items" db=0.6ms idle=10.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 13:59:15.321 [debug] QUERY OK source="media_items" db=0.4ms idle=11.3ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 13:59:15.321 [debug] Replied in 10ms 13:59:15.322 [info] Sent 200 in 38ms 13:59:15.324 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:15.324 [debug] Replied in 108µs 13:59:15.335 [debug] HANDLE EVENT "check_matching_text" in Pinchflat.UpgradeButtonLive Parameters: %{"_target" => ["unlock-pro-textbox"], "_unused_unlock-pro-textbox" => "", "unlock-pro-textbox" => ""} 13:59:15.335 [debug] Replied in 87µs 13:59:15.498 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "SzoeSl43EwsrAyQAFgYEVi4jfUFOSz4q8iyg5TyhLfViOGbowJ3rvzVi", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:15.529 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded"} 13:59:15.530 [debug] QUERY OK source="media_items" db=0.6ms idle=211.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:59:15.530 [debug] QUERY OK source="media_items" db=0.3ms idle=211.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:59:15.531 [debug] QUERY OK source="sources" db=0.7ms idle=210.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.531 [debug] Replied in 2ms 13:59:15.533 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending"} 13:59:15.534 [debug] QUERY OK source="media_items" db=0.5ms idle=212.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:59:15.535 [debug] QUERY OK source="media_items" db=1.0ms idle=185.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:59:15.536 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.536 [debug] Replied in 2ms 13:59:15.538 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:15.539 [debug] QUERY OK source="tasks" db=0.5ms idle=7.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"] 13:59:15.539 [debug] QUERY OK source="media_items" db=0.2ms idle=7.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [2, 3] 13:59:15.540 [debug] QUERY OK source="sources" db=0.9ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.540 [debug] Replied in 2ms 13:59:15.541 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:15.541 [debug] Replied in 77µs 13:59:15.627 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:04:06 - Blacksmith #ad \n00:04:44 - Who is Atlassian?\n00:15:34 - How Enterprise Software really works\n00:22:30 - Switching Browsers\n00:24:15 - Terminal Coffee #ad\n00:28:55 - Did AI make us lazy\n00:42:15 - AI Data centers and their impacts\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3275, "filename" => "/downloads/The Standup/2025-09-18 The Standup - Jira Bought 2 Browsers???/The Standup - Jira Bought 2 Browsers??? [v9gsMFozXK0].mp4", "id" => "v9gsMFozXK0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=v9gsMFozXK0", "playlist_index" => 33, "timestamp" => 1758213032, "title" => "The Standup - Jira Bought 2 Browsers???", "upload_date" => "20250918"} 13:59:15.628 [debug] QUERY OK source="sources" db=0.4ms idle=92.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:15.629 [debug] QUERY OK source="sources" db=0.7ms idle=92.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.630 [debug] QUERY OK source="media_items" db=0.6ms idle=90.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-18 16:30:32Z], 1] 13:59:15.632 [debug] QUERY OK source="media_items" db=1.4ms idle=90.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:04:06 - Blacksmith #ad \n00:04:44 - Who is Atlassian?\n00:15:34 - How Enterprise Software really works\n00:22:30 - Switching Browsers\n00:24:15 - Terminal Coffee #ad\n00:28:55 - Did AI make us lazy\n00:42:15 - AI Data centers and their impacts\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Standup - Jira Bought 2 Browsers???", "5a8c74ec-2098-4fcf-9d23-0c4c567afc0c", 3275, false, "v9gsMFozXK0", "https://www.youtube.com/watch?v=v9gsMFozXK0", 33, "/downloads/The Standup/2025-09-18 The Standup - Jira Bought 2 Browsers???/The Standup - Jira Bought 2 Browsers??? [v9gsMFozXK0].mp4", false, false, false, 1, [], 0, ~U[2025-09-18 16:30:32Z], ~U[2026-07-24 11:59:15Z], ~U[2026-07-24 11:59:15Z], "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:04:06 - Blacksmith #ad \n00:04:44 - Who is Atlassian?\n00:15:34 - How Enterprise Software really works\n00:22:30 - Switching Browsers\n00:24:15 - Terminal Coffee #ad\n00:28:55 - Did AI make us lazy\n00:42:15 - AI Data centers and their impacts\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Standup - Jira Bought 2 Browsers???", 3275, false, "v9gsMFozXK0", "https://www.youtube.com/watch?v=v9gsMFozXK0", "/downloads/The Standup/2025-09-18 The Standup - Jira Bought 2 Browsers???/The Standup - Jira Bought 2 Browsers??? [v9gsMFozXK0].mp4", false, 1, ~U[2025-09-18 16:30:32Z]] 13:59:15.633 [debug] QUERY OK source="sources" db=1.0ms idle=92.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:15.635 [debug] QUERY OK source="media_profiles" db=1.4ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:15.636 [debug] QUERY OK source="media_items" db=1.3ms idle=6.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 [33] 13:59:15.637 [info] Kicking off download for media item #33 (v9gsMFozXK0) 13:59:15.642 [debug] QUERY OK source="tasks" db=1.0ms idle=7.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [37, 33, ~U[2026-07-24 11:59:15Z], ~U[2026-07-24 11:59:15Z]] 13:59:15.643 [debug] Current batch of media processed. Will check again in 1000ms 13:59:16.644 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:03:50 - Blacksmith #ad \n00:04:27 - Is the IPhone Pro Strap cool?\n00:12:40 - Airpods Live Translation\n00:23:40 - The Worlds Best Scratchability Test\n00:26:30 - Apple adds matmul acceleration to A19 Pro GPU\n00:42:09 - GPT-5 Announcement\n00:54:38 - Paying Trash's Bills\n\nhttps://twitch.tv/ThePrimeagen - I Stream!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3580, "filename" => "/downloads/The Standup/2025-09-12 The Most Insightful Apple Commentary | The Standup/The Most Insightful Apple Commentary | The Standup [iCpcE6tMpz8].mp4", "id" => "iCpcE6tMpz8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=iCpcE6tMpz8", "playlist_index" => 34, "timestamp" => 1757701370, "title" => "The Most Insightful Apple Commentary | The Standup", "upload_date" => "20250912"} 13:59:16.645 [debug] QUERY OK source="sources" db=0.6ms idle=1007.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:16.646 [debug] QUERY OK source="sources" db=0.9ms idle=1005.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:16.647 [debug] QUERY OK source="media_items" db=0.9ms idle=1006.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 18:22:50Z], 1] 13:59:16.649 [debug] QUERY OK source="media_items" db=1.3ms idle=1005.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:03:50 - Blacksmith #ad \n00:04:27 - Is the IPhone Pro Strap cool?\n00:12:40 - Airpods Live Translation\n00:23:40 - The Worlds Best Scratchability Test\n00:26:30 - Apple adds matmul acceleration to A19 Pro GPU\n00:42:09 - GPT-5 Announcement\n00:54:38 - Paying Trash's Bills\n\nhttps://twitch.tv/ThePrimeagen - I Stream!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Most Insightful Apple Commentary | The Standup", "667e4aca-3d97-4cee-8aa6-90648dd195ab", 3580, false, "iCpcE6tMpz8", "https://www.youtube.com/watch?v=iCpcE6tMpz8", 34, "/downloads/The Standup/2025-09-12 The Most Insightful Apple Commentary | The Standup/The Most Insightful Apple Commentary | The Standup [iCpcE6tMpz8].mp4", false, false, false, 1, [], 0, ~U[2025-09-12 18:22:50Z], ~U[2026-07-24 11:59:16Z], ~U[2026-07-24 11:59:16Z], "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:03:50 - Blacksmith #ad \n00:04:27 - Is the IPhone Pro Strap cool?\n00:12:40 - Airpods Live Translation\n00:23:40 - The Worlds Best Scratchability Test\n00:26:30 - Apple adds matmul acceleration to A19 Pro GPU\n00:42:09 - GPT-5 Announcement\n00:54:38 - Paying Trash's Bills\n\nhttps://twitch.tv/ThePrimeagen - I Stream!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Most Insightful Apple Commentary | The Standup", 3580, false, "iCpcE6tMpz8", "https://www.youtube.com/watch?v=iCpcE6tMpz8", "/downloads/The Standup/2025-09-12 The Most Insightful Apple Commentary | The Standup/The Most Insightful Apple Commentary | The Standup [iCpcE6tMpz8].mp4", false, 1, ~U[2025-09-12 18:22:50Z]] 13:59:16.650 [debug] QUERY OK source="sources" db=0.2ms idle=299.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:16.650 [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] 13:59:16.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 [34] 13:59:16.651 [info] Kicking off download for media item #34 (iCpcE6tMpz8) 13:59:16.652 [debug] QUERY OK source="tasks" db=0.2ms idle=2.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [38, 34, ~U[2026-07-24 11:59:16Z], ~U[2026-07-24 11:59:16Z]] 13:59:16.652 [debug] Current batch of media processed. Will check again in 1000ms 13:59:17.613 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=znRHdCDw9tQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a2/3d/a23d26b8983497acc31a5e36a41b9e3d37ded418c161d3aae9ec46f3cc6b729d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:59:17.636 [debug] Running yt-dlp command for action: download_thumbnail 13:59:17.637 [debug] QUERY OK source="settings" db=0.2ms idle=986.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:17.637 [debug] QUERY OK source="settings" db=0.1ms idle=985.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:17.638 [debug] QUERY OK source="settings" db=0.1ms idle=985.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:17.638 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=znRHdCDw9tQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/3/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ab/10/ab10be8c7d73fd92d60524d5fcde9a51b22ddb5619215569d740582d2f78d554.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:59:17.653 [debug] Current batch of media processed. Will check again in 1000ms 13:59:18.083 [info] {"source":"oban","duration":2169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:18.657 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 Intro\n00:02:10 Printf Debugging\n00:10:20 RAD Debugger Origins\n00:25:00 PDB (Program Database) Limit\n00:27:27 RAD Linker\n00:28:40 Working for Epic\n00:32:13 What the hell is MUMPS\n00:33:28 D Sucks\n00:34:45 Oodle Adjacent\n00:35:40 How do steps work?\n00:42:50 INT 3 Instruction/Trap\n00:46:20 Step count\n00:47:50 Overwrite and replace\n00:49:42 The desire for user level INT 3 handling\n01:00:39 Alternative to User level INT 3\n01:03:10 Chrome Debugger complaints\n01:07:51 RAD Debug features\n01:16:52 Compatible languages\n01:18:41 Gabe Newell annoucement strategy\n01:19:37 Outro 1\n01:20:01 Cleverer than Stack pointers\n01:22:55 Prime pees on stream\n01:24:20 Faking addresses and the shadow stack\n01:27:50 Data breakpoints\n01:28:38 Prime shoots his shot\n01:32:46 TLDR\n01:34:28 Debugging in VM langs\n01:35:00 PUBE G\n01:36:28 Outro 2", "duration" => 5914, "filename" => "/downloads/The Standup/2025-08-21 Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)/Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury) [O-3gEsfEm0g].mp4", "id" => "O-3gEsfEm0g", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=O-3gEsfEm0g", "playlist_index" => 35, "timestamp" => 1755783017, "title" => "Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)", "upload_date" => "20250821"} 13:59:18.657 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:18.658 [debug] QUERY OK source="sources" db=0.5ms idle=1019.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:18.658 [debug] QUERY OK source="media_items" db=0.3ms idle=624.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-21 13:30:17Z], 1] 13:59:18.661 [debug] QUERY OK source="media_items" db=1.9ms idle=575.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 Intro\n00:02:10 Printf Debugging\n00:10:20 RAD Debugger Origins\n00:25:00 PDB (Program Database) Limit\n00:27:27 RAD Linker\n00:28:40 Working for Epic\n00:32:13 What the hell is MUMPS\n00:33:28 D Sucks\n00:34:45 Oodle Adjacent\n00:35:40 How do steps work?\n00:42:50 INT 3 Instruction/Trap\n00:46:20 Step count\n00:47:50 Overwrite and replace\n00:49:42 The desire for user level INT 3 handling\n01:00:39 Alternative to User level INT 3\n01:03:10 Chrome Debugger complaints\n01:07:51 RAD Debug features\n01:16:52 Compatible languages\n01:18:41 Gabe Newell annoucement strategy\n01:19:37 Outro 1\n01:20:01 Cleverer than Stack pointers\n01:22:55 Prime pees on stream\n01:24:20 Faking addresses and the shadow stack\n01:27:50 Data breakpoints\n01:28:38 Prime shoots his shot\n01:32:46 TLDR\n01:34:28 Debugging in VM langs\n01:35:00 PUBE G\n01:36:28 Outro 2", "Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)", "1c27e508-d83d-48f1-8c2a-0f126c58f4ae", 5914, false, "O-3gEsfEm0g", "https://www.youtube.com/watch?v=O-3gEsfEm0g", 35, "/downloads/The Standup/2025-08-21 Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)/Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury) [O-3gEsfEm0g].mp4", false, false, false, 1, [], 0, ~U[2025-08-21 13:30:17Z], ~U[2026-07-24 11:59:18Z], ~U[2026-07-24 11:59:18Z], "Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 Intro\n00:02:10 Printf Debugging\n00:10:20 RAD Debugger Origins\n00:25:00 PDB (Program Database) Limit\n00:27:27 RAD Linker\n00:28:40 Working for Epic\n00:32:13 What the hell is MUMPS\n00:33:28 D Sucks\n00:34:45 Oodle Adjacent\n00:35:40 How do steps work?\n00:42:50 INT 3 Instruction/Trap\n00:46:20 Step count\n00:47:50 Overwrite and replace\n00:49:42 The desire for user level INT 3 handling\n01:00:39 Alternative to User level INT 3\n01:03:10 Chrome Debugger complaints\n01:07:51 RAD Debug features\n01:16:52 Compatible languages\n01:18:41 Gabe Newell annoucement strategy\n01:19:37 Outro 1\n01:20:01 Cleverer than Stack pointers\n01:22:55 Prime pees on stream\n01:24:20 Faking addresses and the shadow stack\n01:27:50 Data breakpoints\n01:28:38 Prime shoots his shot\n01:32:46 TLDR\n01:34:28 Debugging in VM langs\n01:35:00 PUBE G\n01:36:28 Outro 2", "Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)", 5914, false, "O-3gEsfEm0g", "https://www.youtube.com/watch?v=O-3gEsfEm0g", "/downloads/The Standup/2025-08-21 Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)/Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury) [O-3gEsfEm0g].mp4", false, 1, ~U[2025-08-21 13:30:17Z]] 13:59:18.661 [debug] QUERY OK source="sources" db=0.3ms idle=308.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:18.663 [debug] QUERY OK source="media_profiles" db=1.1ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:18.663 [debug] QUERY OK source="media_items" db=0.4ms 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 [35] 13:59:18.664 [info] Kicking off download for media item #35 (O-3gEsfEm0g) 13:59:18.667 [debug] QUERY OK source="tasks" db=0.5ms idle=4.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [39, 35, ~U[2026-07-24 11:59:18Z], ~U[2026-07-24 11:59:18Z]] 13:59:18.667 [debug] Current batch of media processed. Will check again in 1000ms 13:59:19.668 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "When traffic spikes, Neon’s serverless Postgres autoscales to meet demand, without all that extra ops work. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:02:13 - neon.com #ad\n00:03:23 - Why Functional Programming Failed?\n00:10:20 - Erlang is Functional AND OOP\n00:15:00 - The Ruby to Rust Pipeline\n00:26:00 - Ginger Bill Rust Rant\n00:29:53 - Are Macros Good or Evil?\n00:43:30 - Printing in Rust VS Odin\n00:48:00 - Mechanism Not Policy\n00:57:45 - LSP Hater VS LSP Lover\n01:04:20 - are Package Managers required?\n01:21:10 - Advice to Future Language Creators", "duration" => 5070, "filename" => "/downloads/The Standup/2025-08-14 2 Language Creators vs 2 Idiots | The Standup/2 Language Creators vs 2 Idiots | The Standup [tXJfS6jI9Z0].mp4", "id" => "tXJfS6jI9Z0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=tXJfS6jI9Z0", "playlist_index" => 36, "timestamp" => 1755178256, "title" => "2 Language Creators vs 2 Idiots | The Standup", "upload_date" => "20250814"} 13:59:19.669 [debug] QUERY OK source="sources" db=0.3ms idle=1004.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:19.669 [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" = ?) [1] 13:59:19.670 [debug] QUERY OK source="media_items" db=0.2ms idle=1003.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-14 13:30:56Z], 1] 13:59:19.671 [debug] QUERY OK source="media_items" db=0.8ms idle=1003.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["When traffic spikes, Neon’s serverless Postgres autoscales to meet demand, without all that extra ops work. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:02:13 - neon.com #ad\n00:03:23 - Why Functional Programming Failed?\n00:10:20 - Erlang is Functional AND OOP\n00:15:00 - The Ruby to Rust Pipeline\n00:26:00 - Ginger Bill Rust Rant\n00:29:53 - Are Macros Good or Evil?\n00:43:30 - Printing in Rust VS Odin\n00:48:00 - Mechanism Not Policy\n00:57:45 - LSP Hater VS LSP Lover\n01:04:20 - are Package Managers required?\n01:21:10 - Advice to Future Language Creators", "2 Language Creators vs 2 Idiots | The Standup", "e9a6a9b2-4bb3-41c2-943e-79cca5bb95ef", 5070, false, "tXJfS6jI9Z0", "https://www.youtube.com/watch?v=tXJfS6jI9Z0", 36, "/downloads/The Standup/2025-08-14 2 Language Creators vs 2 Idiots | The Standup/2 Language Creators vs 2 Idiots | The Standup [tXJfS6jI9Z0].mp4", false, false, false, 1, [], 0, ~U[2025-08-14 13:30:56Z], ~U[2026-07-24 11:59:19Z], ~U[2026-07-24 11:59:19Z], "When traffic spikes, Neon’s serverless Postgres autoscales to meet demand, without all that extra ops work. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:02:13 - neon.com #ad\n00:03:23 - Why Functional Programming Failed?\n00:10:20 - Erlang is Functional AND OOP\n00:15:00 - The Ruby to Rust Pipeline\n00:26:00 - Ginger Bill Rust Rant\n00:29:53 - Are Macros Good or Evil?\n00:43:30 - Printing in Rust VS Odin\n00:48:00 - Mechanism Not Policy\n00:57:45 - LSP Hater VS LSP Lover\n01:04:20 - are Package Managers required?\n01:21:10 - Advice to Future Language Creators", "2 Language Creators vs 2 Idiots | The Standup", 5070, false, "tXJfS6jI9Z0", "https://www.youtube.com/watch?v=tXJfS6jI9Z0", "/downloads/The Standup/2025-08-14 2 Language Creators vs 2 Idiots | The Standup/2 Language Creators vs 2 Idiots | The Standup [tXJfS6jI9Z0].mp4", false, 1, ~U[2025-08-14 13:30:56Z]] 13:59:19.672 [debug] QUERY OK source="sources" db=0.5ms idle=316.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:19.672 [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] 13:59:19.673 [debug] QUERY OK source="media_items" db=0.4ms 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 [36] 13:59:19.673 [info] Kicking off download for media item #36 (tXJfS6jI9Z0) 13:59:19.675 [debug] QUERY OK source="tasks" db=0.3ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [40, 36, ~U[2026-07-24 11:59:19Z], ~U[2026-07-24 11:59:19Z]] 13:59:19.675 [debug] Current batch of media processed. Will check again in 1000ms 13:59:20.675 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Prime is a Great Host\n00:04:06 - Neon #ad\n00:05:04 - Giving a 2 hour talk\n00:10:16 - C++ Launch Night\n00:14:15 - Mount Rushmore of Programming Languages\n00:18:40 - What languages were influential and died off?\n00:24:00 - What is Plex\n00:42:00 - The Evolution of Languages\n00:45:40 - How Casey does Research + HOPL 5\n00:56:95 - Casey's Next Deep Dive\n01:00:00 - The Rise of Programming Historians", "duration" => 4392, "filename" => "/downloads/The Standup/2025-08-07 The Evolution of Programming | The Standup/The Evolution of Programming | The Standup [qhzTawm3_6Y].mp4", "id" => "qhzTawm3_6Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qhzTawm3_6Y", "playlist_index" => 37, "timestamp" => 1754573462, "title" => "The Evolution of Programming | The Standup", "upload_date" => "20250807"} 13:59:20.676 [debug] QUERY OK source="sources" db=0.3ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:20.676 [debug] QUERY OK source="sources" db=0.3ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:20.677 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-07 13:31:02Z], 1] 13:59:20.680 [debug] QUERY OK source="media_items" db=3.0ms idle=1002.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Prime is a Great Host\n00:04:06 - Neon #ad\n00:05:04 - Giving a 2 hour talk\n00:10:16 - C++ Launch Night\n00:14:15 - Mount Rushmore of Programming Languages\n00:18:40 - What languages were influential and died off?\n00:24:00 - What is Plex\n00:42:00 - The Evolution of Languages\n00:45:40 - How Casey does Research + HOPL 5\n00:56:95 - Casey's Next Deep Dive\n01:00:00 - The Rise of Programming Historians", "The Evolution of Programming | The Standup", "5418b6e9-38a8-4ccb-bc29-9b8ac9d8720a", 4392, false, "qhzTawm3_6Y", "https://www.youtube.com/watch?v=qhzTawm3_6Y", 37, "/downloads/The Standup/2025-08-07 The Evolution of Programming | The Standup/The Evolution of Programming | The Standup [qhzTawm3_6Y].mp4", false, false, false, 1, [], 0, ~U[2025-08-07 13:31:02Z], ~U[2026-07-24 11:59:20Z], ~U[2026-07-24 11:59:20Z], "Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Prime is a Great Host\n00:04:06 - Neon #ad\n00:05:04 - Giving a 2 hour talk\n00:10:16 - C++ Launch Night\n00:14:15 - Mount Rushmore of Programming Languages\n00:18:40 - What languages were influential and died off?\n00:24:00 - What is Plex\n00:42:00 - The Evolution of Languages\n00:45:40 - How Casey does Research + HOPL 5\n00:56:95 - Casey's Next Deep Dive\n01:00:00 - The Rise of Programming Historians", "The Evolution of Programming | The Standup", 4392, false, "qhzTawm3_6Y", "https://www.youtube.com/watch?v=qhzTawm3_6Y", "/downloads/The Standup/2025-08-07 The Evolution of Programming | The Standup/The Evolution of Programming | The Standup [qhzTawm3_6Y].mp4", false, 1, ~U[2025-08-07 13:31:02Z]] 13:59:20.681 [debug] QUERY OK source="sources" db=0.2ms idle=322.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:20.681 [debug] QUERY OK source="media_profiles" db=0.3ms idle=5.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:20.682 [debug] QUERY OK source="media_items" db=0.3ms 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 [37] 13:59:20.682 [info] Kicking off download for media item #37 (qhzTawm3_6Y) 13:59:20.684 [debug] QUERY OK source="tasks" db=0.3ms idle=2.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [41, 37, ~U[2026-07-24 11:59:20Z], ~U[2026-07-24 11:59:20Z]] 13:59:20.684 [debug] Current batch of media processed. Will check again in 1000ms 13:59:21.497 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=znRHdCDw9tQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/3/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ab/10/ab10be8c7d73fd92d60524d5fcde9a51b22ddb5619215569d740582d2f78d554.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:59:21.498 [debug] QUERY OK db=0.0ms queue=0.1ms idle=816.0ms begin [] 13:59:21.499 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 11:59:17Z], "/downloads/The Standup/2026-05-09 Microsoft doesn't understand FPS/Microsoft doesn't understand FPS [znRHdCDw9tQ].mp4", ~U[2026-07-24 11:59:21Z], 3] 13:59:21.500 [debug] QUERY OK source="media_metadata" db=0.5ms 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/3/metadata.json.gz", "/config/metadata/media_items/3/thumbnail.jpg", 3, ~U[2026-07-24 11:59:21Z], ~U[2026-07-24 11:59:21Z]] 13:59:21.500 [debug] QUERY OK db=0.3ms commit [] 13:59:21.502 [debug] QUERY OK source="media_items" db=0.7ms idle=817.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [395662105, ~U[2026-07-24 11:59:21Z], 3] 13:59:21.502 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:59:21.503 [info] {"args":{"id":3},"id":7,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37290997,"event":"job:stop","queue_time":18210482,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:59:21.504 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=818.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"] 13:59:21.505 [debug] QUERY OK source="media_items" db=0.5ms idle=143.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2] 13:59:21.505 [debug] QUERY OK source="sources" db=1.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" = ?) [1] 13:59:21.511 [info] {"args":{"id":4},"id":8,"meta":{},"system_time":1784894361511592932,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 13:59:21.513 [debug] QUERY OK source="media_items" db=1.6ms 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" = ?) [4] 13:59:21.513 [debug] QUERY OK source="tasks" db=1.9ms idle=7.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"] 13:59:21.515 [info] User scripts lifecyle file either not present or is empty. Skipping. 13:59:21.515 [debug] QUERY OK source="media_items" db=1.4ms idle=9.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [2, 4] 13:59:21.516 [debug] QUERY OK source="sources" db=1.7ms idle=8.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:21.516 [debug] QUERY OK source="sources" db=0.6ms queue=0.9ms 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" = ?) [1] 13:59:21.518 [debug] QUERY OK source="media_profiles" db=1.0ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:21.518 [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 [4] 13:59:21.519 [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" = ?) [4] 13:59:21.520 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:21.520 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:21.521 [debug] QUERY OK source="settings" db=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:21.522 [debug] Running yt-dlp command for action: get_downloadable_status 13:59:21.522 [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:59:21.522 [debug] QUERY OK source="settings" db=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:21.523 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:21.523 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uo1I6lS5DYU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/b4/3db4bb37ef20b5dd5c7c4af14ea7065ef21969c4b54d928a59caf4260b9e5ebd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:59:21.686 [debug] Current batch of media processed. Will check again in 1000ms 13:59:22.686 [info] GET /settings 13:59:22.686 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 13:59:22.687 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nHosts:\n@ThePrimeagen \n@trash_dev \n@teej_dv \n@caseymuratori \n\nFor more about Casey: https://www.computerenhance.com\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\nDiscord https://discord.gg/ThePrimeagen\n\n00:00:00 - Intro\n00:01:12 - Running Galaga at compile time \n00:03:09 - J AI\n00:05:36 - The Ginger Bill Business model\n00:08:24 - OCaml + Rust features\n00:10:14 - Back on topic\n00:15:11 - Handmade Hero and inspiring others\n00:19:03 - Conferences", "duration" => 1562, "filename" => "/downloads/The Standup/2025-08-01 Casey Muratori's Origin Story | The Standup/Casey Muratori's Origin Story | The Standup [tpe1bLzydhU].mp4", "id" => "tpe1bLzydhU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=tpe1bLzydhU", "playlist_index" => 38, "timestamp" => 1754055055, "title" => "Casey Muratori's Origin Story | The Standup", "upload_date" => "20250801"} 13:59:22.687 [debug] QUERY OK source="settings" db=0.3ms idle=1165.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:22.687 [debug] QUERY OK source="sources" db=0.4ms idle=1164.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:22.688 [debug] QUERY OK source="settings" db=0.3ms idle=1164.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:22.688 [debug] QUERY OK source="settings" db=0.2ms idle=325.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:22.688 [debug] QUERY OK source="sources" db=0.5ms idle=1164.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:22.689 [debug] QUERY OK source="settings" db=0.6ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:22.690 [debug] QUERY OK source="media_items" db=1.3ms idle=1.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-01 13:30:55Z], 1] 13:59:22.691 [info] Sent 200 in 4ms 13:59:22.693 [debug] QUERY OK source="media_items" db=2.9ms idle=2.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nHosts:\n@ThePrimeagen \n@trash_dev \n@teej_dv \n@caseymuratori \n\nFor more about Casey: https://www.computerenhance.com\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\nDiscord https://discord.gg/ThePrimeagen\n\n00:00:00 - Intro\n00:01:12 - Running Galaga at compile time \n00:03:09 - J AI\n00:05:36 - The Ginger Bill Business model\n00:08:24 - OCaml + Rust features\n00:10:14 - Back on topic\n00:15:11 - Handmade Hero and inspiring others\n00:19:03 - Conferences", "Casey Muratori's Origin Story | The Standup", "ddc78e12-6e90-4a7b-a79f-d4c665ebf5a9", 1562, false, "tpe1bLzydhU", "https://www.youtube.com/watch?v=tpe1bLzydhU", 38, "/downloads/The Standup/2025-08-01 Casey Muratori's Origin Story | The Standup/Casey Muratori's Origin Story | The Standup [tpe1bLzydhU].mp4", false, false, false, 1, [], 0, ~U[2025-08-01 13:30:55Z], ~U[2026-07-24 11:59:22Z], ~U[2026-07-24 11:59:22Z], "🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nHosts:\n@ThePrimeagen \n@trash_dev \n@teej_dv \n@caseymuratori \n\nFor more about Casey: https://www.computerenhance.com\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\nDiscord https://discord.gg/ThePrimeagen\n\n00:00:00 - Intro\n00:01:12 - Running Galaga at compile time \n00:03:09 - J AI\n00:05:36 - The Ginger Bill Business model\n00:08:24 - OCaml + Rust features\n00:10:14 - Back on topic\n00:15:11 - Handmade Hero and inspiring others\n00:19:03 - Conferences", "Casey Muratori's Origin Story | The Standup", 1562, false, "tpe1bLzydhU", "https://www.youtube.com/watch?v=tpe1bLzydhU", "/downloads/The Standup/2025-08-01 Casey Muratori's Origin Story | The Standup/Casey Muratori's Origin Story | The Standup [tpe1bLzydhU].mp4", false, 1, ~U[2025-08-01 13:30:55Z]] 13:59:22.694 [debug] QUERY OK source="sources" db=0.5ms idle=5.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:22.694 [debug] QUERY OK source="media_profiles" db=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] 13:59:22.695 [debug] QUERY OK source="media_items" db=0.4ms 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 [38] 13:59:22.695 [info] Kicking off download for media item #38 (tpe1bLzydhU) 13:59:22.697 [debug] QUERY OK source="tasks" db=0.3ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [42, 38, ~U[2026-07-24 11:59:22Z], ~U[2026-07-24 11:59:22Z]] 13:59:22.697 [debug] Current batch of media processed. Will check again in 1000ms 13:59:22.870 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HWI3XF0OOhsqNQoAaRcWfToAPWVTWjc1n1Pq6mPxMPxi0VpDcisVkk_v", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:22.898 [debug] MOUNT Pinchflat.Settings.AppriseServerLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "value" => nil} 13:59:22.898 [debug] Replied in 108µs 13:59:22.898 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:22.898 [debug] Replied in 72µs 13:59:23.698 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\n## 📌 Chapters:\n\n00:00:00 - Intro & Teejs Medical Records Disaster \n00:04:20 - Code Rabbit Sponsor #ad \n00:05:04 - Nobody wants to work in Healthcare\n00:07:05 - Healthcare testing process\n00:12:00 - Epic's Development Pipeline Deep Dive \n00:21:33 - Load Testing Nightmare \n00:25:00 - The 45-Minute Site Outage \n00:27:50 - Class Registration Disaster \n00:32:00 - Everything Goes Wrong in Production \n00:35:55 - Netflix Static Variable Mistake \n00:39:00 - The Boss Who Spotted the Obvious Bug \n00:42:00 - Lady Gaga's Broken Countdown Billboard \n00:47:00 - 10 Requests /s Disaster \n00:49:30 - GraphQL Query Explosion\n\n## Key Topics:\n- Medical software development challenges and patient safety\n- Epic Systems development process and MUMPS language\n- Load testing disasters and production outages \n- Netflix development war stories\n- Server-side rendering performance pitfalls\n- GraphQL resolver optimization nightmares\n- The importance of proper testing before production releases\n\n## Hosts:\n- **TJ** (@teej_dv) - Epic Systems horror stories\n- **Trash Dev** (@trash_dev) - Load testing and Next.js disasters \n- **Prime** (@ThePrimeagen) - Netflix static variable nightmares", "duration" => 3044, "filename" => "/downloads/The Standup/2025-07-28 Software Horror Stories | The Standup/Software Horror Stories | The Standup [0_5aOO980uI].mp4", "id" => "0_5aOO980uI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=0_5aOO980uI", "playlist_index" => 39, "timestamp" => 1753709400, "title" => "Software Horror Stories | The Standup", "upload_date" => "20250728"} 13:59:23.699 [debug] QUERY OK source="sources" db=0.8ms idle=1003.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:23.701 [debug] QUERY OK source="sources" db=1.2ms idle=1003.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:23.702 [debug] QUERY OK source="media_items" db=0.9ms idle=1004.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-28 13:30:00Z], 1] 13:59:23.704 [debug] QUERY OK source="media_items" db=1.8ms idle=1005.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\n## 📌 Chapters:\n\n00:00:00 - Intro & Teejs Medical Records Disaster \n00:04:20 - Code Rabbit Sponsor #ad \n00:05:04 - Nobody wants to work in Healthcare\n00:07:05 - Healthcare testing process\n00:12:00 - Epic's Development Pipeline Deep Dive \n00:21:33 - Load Testing Nightmare \n00:25:00 - The 45-Minute Site Outage \n00:27:50 - Class Registration Disaster \n00:32:00 - Everything Goes Wrong in Production \n00:35:55 - Netflix Static Variable Mistake \n00:39:00 - The Boss Who Spotted the Obvious Bug \n00:42:00 - Lady Gaga's Broken Countdown Billboard \n00:47:00 - 10 Requests /s Disaster \n00:49:30 - GraphQL Query Explosion\n\n## Key Topics:\n- Medical software development challenges and patient safety\n- Epic Systems development process and MUMPS language\n- Load testing disasters and production outages \n- Netflix development war stories\n- Server-side rendering performance pitfalls\n- GraphQL resolver optimization nightmares\n- The importance of proper testing before production releases\n\n## Hosts:\n- **TJ** (@teej_dv) - Epic Systems horror stories\n- **Trash Dev** (@trash_dev) - Load testing and Next.js disasters \n- **Prime** (@ThePrimeagen) - Netflix static variable nightmares", "Software Horror Stories | The Standup", "5fe0ae36-13ac-46a3-9249-19ab56584fe6", 3044, false, "0_5aOO980uI", "https://www.youtube.com/watch?v=0_5aOO980uI", 39, "/downloads/The Standup/2025-07-28 Software Horror Stories | The Standup/Software Horror Stories | The Standup [0_5aOO980uI].mp4", false, false, false, 1, [], 0, ~U[2025-07-28 13:30:00Z], ~U[2026-07-24 11:59:23Z], ~U[2026-07-24 11:59:23Z], "🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\n## 📌 Chapters:\n\n00:00:00 - Intro & Teejs Medical Records Disaster \n00:04:20 - Code Rabbit Sponsor #ad \n00:05:04 - Nobody wants to work in Healthcare\n00:07:05 - Healthcare testing process\n00:12:00 - Epic's Development Pipeline Deep Dive \n00:21:33 - Load Testing Nightmare \n00:25:00 - The 45-Minute Site Outage \n00:27:50 - Class Registration Disaster \n00:32:00 - Everything Goes Wrong in Production \n00:35:55 - Netflix Static Variable Mistake \n00:39:00 - The Boss Who Spotted the Obvious Bug \n00:42:00 - Lady Gaga's Broken Countdown Billboard \n00:47:00 - 10 Requests /s Disaster \n00:49:30 - GraphQL Query Explosion\n\n## Key Topics:\n- Medical software development challenges and patient safety\n- Epic Systems development process and MUMPS language\n- Load testing disasters and production outages \n- Netflix development war stories\n- Server-side rendering performance pitfalls\n- GraphQL resolver optimization nightmares\n- The importance of proper testing before production releases\n\n## Hosts:\n- **TJ** (@teej_dv) - Epic Systems horror stories\n- **Trash Dev** (@trash_dev) - Load testing and Next.js disasters \n- **Prime** (@ThePrimeagen) - Netflix static variable nightmares", "Software Horror Stories | The Standup", 3044, false, "0_5aOO980uI", "https://www.youtube.com/watch?v=0_5aOO980uI", "/downloads/The Standup/2025-07-28 Software Horror Stories | The Standup/Software Horror Stories | The Standup [0_5aOO980uI].mp4", false, 1, ~U[2025-07-28 13:30:00Z]] 13:59:23.705 [debug] QUERY OK source="sources" db=0.2ms idle=340.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:23.706 [debug] QUERY OK source="media_profiles" db=0.7ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:23.707 [debug] QUERY OK source="media_items" db=0.7ms 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 [39] 13:59:23.707 [info] Kicking off download for media item #39 (0_5aOO980uI) 13:59:23.709 [debug] QUERY OK source="tasks" db=0.7ms idle=3.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [43, 39, ~U[2026-07-24 11:59:23Z], ~U[2026-07-24 11:59:23Z]] 13:59:23.709 [debug] Current batch of media processed. Will check again in 1000ms 13:59:24.512 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uo1I6lS5DYU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/b4/3db4bb37ef20b5dd5c7c4af14ea7065ef21969c4b54d928a59caf4260b9e5ebd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:59:24.513 [debug] Running yt-dlp command for action: download 13:59:24.513 [debug] QUERY OK source="settings" db=0.2ms idle=805.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:24.513 [debug] QUERY OK source="settings" db=0.3ms idle=805.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:24.514 [debug] QUERY OK source="settings" db=0.4ms idle=805.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:24.514 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uo1I6lS5DYU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/38/ff/38ff8f7e0d447d1814b37e15af16d3be9d71ba1f80e21ef31c528a8b3b06a49b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 13:59:24.710 [debug] Current batch of media processed. Will check again in 1000ms 13:59:25.711 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thank You! https://blacksmith.sh our sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://tailwindcss.com/sponsor Love Tailwind? Consider Sponsoring! \n\nIf you want delicious coffee sold only over SSH:\n\nssh terminal.shop\n\n🎙️ Hosts:\n- TJ @teej_dv\n- Trash Dev @trash_dev\n- Prime @ThePrimeagen\n\n🎯 Guest:\nAdam Wathan - Creator of Tailwind CSS\nhttps://adamwathan.me\nhttps://x.com/adamwathan\nhttps://tailwindcss.com/\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:04 - \"Open Source is Pain\" - Tailwind Creator\n00:04:37 - Sponsor: Blacksmith - Faster GitHub Actions #ad\n00:05:15 - The Reality of Open Source at Scale\n00:10:55 - Cost of Full-Time Open Source\n00:13:06 - Rust Rewrite & Performance Gains\n00:16:29 - Sponsorship vs Business Models\n00:22:48 - The Emotional Side of Open Source\n00:30:15 - The Courage to Fire Users\n00:37:46 - How Tailwind Spends Money\n00:44:04 - How to Champion Open Source while making money\n00:54:06 - Licenses in Open Source\n00:58:00 - Tailwind is a hard business\n01:00:14 - VC vs Lifestyle Open Source Projects\n01:07:50 - Replication in Open Source\n01:11:00 - Tailwind Fortnite Skins\n01:16:00 - We agree on the words finally\n01:18:00 - Thanks & Wrap Up\n\nKey topics include:\n- The reality of maintaining open source at massive scale\n- Why sponsorship models often fail and what works instead\n- The psychological challenges of community management\n- How to build sustainable businesses around open source\n- The future of developer tooling and AI's impact\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n🐬 Bonus Section 🐬   \n┆ ┆ ┆ ┆ ┆  \n┆ ┆ ࣪ ˖☆ ࣪⭑┆ ݁˖ .☆ . ݁ ˖\n☆⊹ ࣪ ┆ ˖ ࣪ ⊹ ࣪ ★ ⋆.˚ ⊹ ࣪ .  \n ࣪ ˖⋆˚★ ₊ ⊹  ࣪˖ ࣪ ₊ ࣪ ˖  .  \u2008˚ .  \n. ݁ ⊹ ࣪ ˖    ࣪ ˖    .  \u2008˚ .   *   . \n  . ݁    ݁   .  \u2008˚   *   . \n  .   .  \u2008˚ .  *   . *  *   . *   .   *   . \nDid you actually read this description?   .  \u2008˚ .   *  .\nWas it useful?  *  .  \u2008˚ . ˚  . *   .  *   .  *   . \nDid it have everything you were looking for?   .  \u2008 .  . *   . \nIf you wanted to see something different, what would that be? .  \u2008 . . *  \nDo you think Tailwind would have been as popular if it was named Headwind? .  \u2008˚ .  \nHow much Tailwind do you think Prime really knows?  .  \u2008˚ .   *   . \nWho do you want to see on The Standup next?   .  \u2008˚   *   . *   .  \n .  \u2008˚ .   *  .  \u2008˚ . ˚  .  \u2008 .  .  \u2008 . . *  .  \u2008˚ .  .  .  \u2008˚ .  .  \u2008˚   *   . *   .  *   .  *   .  *   .  *   .  *   .  *   .  *   .", "duration" => 4822, "filename" => "/downloads/The Standup/2025-07-23 Tailwind Creator on the Challenges of Open Source | The Standup/Tailwind Creator on the Challenges of Open Source | The Standup [OrHorwH5Pco].mp4", "id" => "OrHorwH5Pco", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OrHorwH5Pco", "playlist_index" => 40, "timestamp" => 1753277432, "title" => "Tailwind Creator on the Challenges of Open Source | The Standup", "upload_date" => "20250723"} 13:59:25.712 [debug] QUERY OK source="sources" db=0.1ms idle=1198.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:25.712 [debug] QUERY OK source="sources" db=0.1ms idle=1198.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:25.713 [debug] QUERY OK source="media_items" db=0.1ms idle=1198.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-23 13:30:32Z], 1] 13:59:25.715 [debug] QUERY OK source="media_items" db=1.2ms idle=679.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://tailwindcss.com/sponsor Love Tailwind? Consider Sponsoring! \n\nIf you want delicious coffee sold only over SSH:\n\nssh terminal.shop\n\n🎙️ Hosts:\n- TJ @teej_dv\n- Trash Dev @trash_dev\n- Prime @ThePrimeagen\n\n🎯 Guest:\nAdam Wathan - Creator of Tailwind CSS\nhttps://adamwathan.me\nhttps://x.com/adamwathan\nhttps://tailwindcss.com/\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:04 - \"Open Source is Pain\" - Tailwind Creator\n00:04:37 - Sponsor: Blacksmith - Faster GitHub Actions #ad\n00:05:15 - The Reality of Open Source at Scale\n00:10:55 - Cost of Full-Time Open Source\n00:13:06 - Rust Rewrite & Performance Gains\n00:16:29 - Sponsorship vs Business Models\n00:22:48 - The Emotional Side of Open Source\n00:30:15 - The Courage to Fire Users\n00:37:46 - How Tailwind Spends Money\n00:44:04 - How to Champion Open Source while making money\n00:54:06 - Licenses in Open Source\n00:58:00 - Tailwind is a hard business\n01:00:14 - VC vs Lifestyle Open Source Projects\n01:07:50 - Replication in Open Source\n01:11:00 - Tailwind Fortnite Skins\n01:16:00 - We agree on the words finally\n01:18:00 - Thanks & Wrap Up\n\nKey topics include:\n- The reality of maintaining open source at massive scale\n- Why sponsorship models often fail and what works instead\n- The psychological challenges of community management\n- How to build sustainable businesses around open source\n- The future of developer tooling and AI's impact\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n🐬 Bonus Section 🐬   \n┆ ┆ ┆ ┆ ┆  \n┆ ┆ ࣪ ˖☆ ࣪⭑┆ ݁˖ .☆ . ݁ ˖\n☆⊹ ࣪ ┆ ˖ ࣪ ⊹ ࣪ ★ ⋆.˚ ⊹ ࣪ .  \n ࣪ ˖⋆˚★ ₊ ⊹  ࣪˖ ࣪ ₊ ࣪ ˖  .  \u2008˚ .  \n. ݁ ⊹ ࣪ ˖    ࣪ ˖    .  \u2008˚ .   *   . \n  . ݁    ݁   .  \u2008˚   *   . \n  .   .  \u2008˚ .  *   . *  *   . *   .   *   . \nDid you actually read this description?   .  \u2008˚ .   *  .\nWas it useful?  *  .  \u2008˚ . ˚  . *   .  *   .  *   . \nDid it have everything you were looking for?   .  \u2008 .  . *   . \nIf you wanted to see something different, what would that be? .  \u2008 . . *  \nDo you think Tailwind would have been as popular if it was named Headwind? .  \u2008˚ .  \nHow much Tailwind do you think Prime really knows?  .  \u2008˚ .   *   . \nWho do you want to see on The Standup next?   .  \u2008˚   *   . *   .  \n .  \u2008˚ .   *  .  \u2008˚ . ˚  .  \u2008 .  .  \u2008 . . *  .  \u2008˚ .  .  .  \u2008˚ .  .  \u2008˚   *   . *   .  *   .  *   .  *   .  *   .  *   .  *   .  *   .", "Tailwind Creator on the Challenges of Open Source | The Standup", "e814bcdd-7238-45e2-9bf4-9317360f317a", 4822, false, "OrHorwH5Pco", "https://www.youtube.com/watch?v=OrHorwH5Pco", 40, "/downloads/The Standup/2025-07-23 Tailwind Creator on the Challenges of Open Source | The Standup/Tailwind Creator on the Challenges of Open Source | The Standup [OrHorwH5Pco].mp4", false, false, false, 1, [], 0, ~U[2025-07-23 13:30:32Z], ~U[2026-07-24 11:59:25Z], ~U[2026-07-24 11:59:25Z], "Thank You! https://blacksmith.sh our sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://tailwindcss.com/sponsor Love Tailwind? Consider Sponsoring! \n\nIf you want delicious coffee sold only over SSH:\n\nssh terminal.shop\n\n🎙️ Hosts:\n- TJ @teej_dv\n- Trash Dev @trash_dev\n- Prime @ThePrimeagen\n\n🎯 Guest:\nAdam Wathan - Creator of Tailwind CSS\nhttps://adamwathan.me\nhttps://x.com/adamwathan\nhttps://tailwindcss.com/\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:04 - \"Open Source is Pain\" - Tailwind Creator\n00:04:37 - Sponsor: Blacksmith - Faster GitHub Actions #ad\n00:05:15 - The Reality of Open Source at Scale\n00:10:55 - Cost of Full-Time Open Source\n00:13:06 - Rust Rewrite & Performance Gains\n00:16:29 - Sponsorship vs Business Models\n00:22:48 - The Emotional Side of Open Source\n00:30:15 - The Courage to Fire Users\n00:37:46 - How Tailwind Spends Money\n00:44:04 - How to Champion Open Source while making money\n00:54:06 - Licenses in Open Source\n00:58:00 - Tailwind is a hard business\n01:00:14 - VC vs Lifestyle Open Source Projects\n01:07:50 - Replication in Open Source\n01:11:00 - Tailwind Fortnite Skins\n01:16:00 - We agree on the words finally\n01:18:00 - Thanks & Wrap Up\n\nKey topics include:\n- The reality of maintaining open source at massive scale\n- Why sponsorship models often fail and what works instead\n- The psychological challenges of community management\n- How to build sustainable businesses around open source\n- The future of developer tooling and AI's impact\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n🐬 Bonus Section 🐬   \n┆ ┆ ┆ ┆ ┆  \n┆ ┆ ࣪ ˖☆ ࣪⭑┆ ݁˖ .☆ . ݁ ˖\n☆⊹ ࣪ ┆ ˖ ࣪ ⊹ ࣪ ★ ⋆.˚ ⊹ ࣪ .  \n ࣪ ˖⋆˚★ ₊ ⊹  ࣪˖ ࣪ ₊ ࣪ ˖  .  \u2008˚ .  \n. ݁ ⊹ ࣪ ˖    ࣪ ˖    .  \u2008˚ .   *   . \n  . ݁    ݁   .  \u2008˚   *   . \n  .   .  \u2008˚ .  *   . *  *   . *   .   *   . \nDid you actually read this description?   .  \u2008˚ .   *  .\nWas it useful?  *  .  \u2008˚ . ˚  . *   .  *   .  *   . \nDid it have everything you were looking for?   .  \u2008 .  . *   . \nIf you wanted to see something different, what would that be? .  \u2008 . . *  \nDo you think Tailwind would have been as popular if it was named Headwind? .  \u2008˚ .  \nHow much Tailwind do you think Prime really knows?  .  \u2008˚ .   *   . \nWho do you want to see on The Standup next?   .  \u2008˚   *   . *   .  \n .  \u2008˚ .   *  .  \u2008˚ . ˚  .  \u2008 .  .  \u2008 . . *  .  \u2008˚ .  .  .  \u2008˚ .  .  \u2008˚   *   . *   .  *   .  *   .  *   .  *   .  *   .  *   .  *   .", "Tailwind Creator on the Challenges of Open Source | The Standup", 4822, false, "OrHorwH5Pco", "https://www.youtube.com/watch?v=OrHorwH5Pco", "/downloads/The Standup/2025-07-23 Tailwind Creator on the Challenges of Open Source | The Standup/Tailwind Creator on the Challenges of Open Source | The Standup [OrHorwH5Pco].mp4", false, 1, ~U[2025-07-23 13:30:32Z]] 13:59:25.715 [debug] QUERY OK source="sources" db=0.2ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:25.715 [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] 13:59:25.716 [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 [40] 13:59:25.716 [info] Kicking off download for media item #40 (OrHorwH5Pco) 13:59:25.717 [debug] QUERY OK source="tasks" db=0.1ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [44, 40, ~U[2026-07-24 11:59:25Z], ~U[2026-07-24 11:59:25Z]] 13:59:25.717 [debug] Current batch of media processed. Will check again in 1000ms 13:59:26.718 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on / theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:55 - The downward trend of performance expectations\n00:07:10 - The internet isn't to blame for slow speeds anymore\n00:11:27 - Dial up\n00:12:50 - School day routines and the reason behind modem sounds\n00:18:00 - Trash was a Catfish \n00:20:25 - Primes School Habits and his Moms prophetic Internet dream\n00:23:58 - Teej's highschool experience\n00:27:24 - Back on topic (its performance btw) WHO/WHAT is to blame\n00:39:38 - Speed = Sales and WHERE is the problem\n00:43:46 - Netflix BTW and WHEN performance is important\n00:48:35 - Too performant and waste\n00:53:14 - 'Hardware will catch up'\n01:01:13 - GPU vs CPU \n01:06:00 - Wrap up and closing thoughts \n\nLinks:\n- Casey's Performance Course: https://computerenhance.com\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nTeej: https://x.com/teej_dv\nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev\n\n---\n\nIn this episode of The Standup, we tackle one of the most frustrating aspects of modern computing: why everything feels so sluggish despite having incredibly powerful hardware. Casey Muratori joins us to share his perspective on performance culture and how we've collectively lowered our standards over the past two decades.\n\nFrom nostalgic stories about dial-up internet and modem sounds to serious discussions about software architecture, this conversation covers the technical, cultural, and business factors that have led to today's performance problems. We explore real-world examples from Netflix, discuss the impact of layered abstractions, and examine how corporate development pressures contribute to the problem.\n\nKey topics include:\n- How performance standards have declined while hardware has improved exponentially\n- The role of abstractions and frameworks in creating performance bottlenecks\n- Real Netflix case studies showing the complex relationship between performance and user behavior\n- Why the \"hardware will catch up\" mentality is fundamentally flawed\n- The difference between GPU and CPU performance paradigms\n- How AI might make performance problems even worse\n- Potential solutions through better substrate design\n\nWhether you're a developer frustrated with slow tools, a user wondering why your powerful computer still feels sluggish, or someone interested in the intersection of technology and culture, this discussion offers valuable insights into one of computing's most persistent challenges.", "duration" => 4314, "filename" => "/downloads/The Standup/2025-07-20 Why Performance Actually Matters (The Standup)/Why Performance Actually Matters (The Standup) [RlTVMi4JzZA].mp4", "id" => "RlTVMi4JzZA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=RlTVMi4JzZA", "playlist_index" => 41, "timestamp" => 1753018219, "title" => "Why Performance Actually Matters (The Standup)", "upload_date" => "20250720"} 13:59:26.719 [debug] QUERY OK source="sources" db=0.2ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:26.719 [debug] QUERY OK source="sources" db=0.2ms idle=1002.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:26.720 [debug] QUERY OK source="media_items" db=0.3ms idle=1002.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-20 13:30:19Z], 1] 13:59:26.722 [debug] QUERY OK source="media_items" db=1.9ms idle=1003.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on / theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:55 - The downward trend of performance expectations\n00:07:10 - The internet isn't to blame for slow speeds anymore\n00:11:27 - Dial up\n00:12:50 - School day routines and the reason behind modem sounds\n00:18:00 - Trash was a Catfish \n00:20:25 - Primes School Habits and his Moms prophetic Internet dream\n00:23:58 - Teej's highschool experience\n00:27:24 - Back on topic (its performance btw) WHO/WHAT is to blame\n00:39:38 - Speed = Sales and WHERE is the problem\n00:43:46 - Netflix BTW and WHEN performance is important\n00:48:35 - Too performant and waste\n00:53:14 - 'Hardware will catch up'\n01:01:13 - GPU vs CPU \n01:06:00 - Wrap up and closing thoughts \n\nLinks:\n- Casey's Performance Course: https://computerenhance.com\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nTeej: https://x.com/teej_dv\nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev\n\n---\n\nIn this episode of The Standup, we tackle one of the most frustrating aspects of modern computing: why everything feels so sluggish despite having incredibly powerful hardware. Casey Muratori joins us to share his perspective on performance culture and how we've collectively lowered our standards over the past two decades.\n\nFrom nostalgic stories about dial-up internet and modem sounds to serious discussions about software architecture, this conversation covers the technical, cultural, and business factors that have led to today's performance problems. We explore real-world examples from Netflix, discuss the impact of layered abstractions, and examine how corporate development pressures contribute to the problem.\n\nKey topics include:\n- How performance standards have declined while hardware has improved exponentially\n- The role of abstractions and frameworks in creating performance bottlenecks\n- Real Netflix case studies showing the complex relationship between performance and user behavior\n- Why the \"hardware will catch up\" mentality is fundamentally flawed\n- The difference between GPU and CPU performance paradigms\n- How AI might make performance problems even worse\n- Potential solutions through better substrate design\n\nWhether you're a developer frustrated with slow tools, a user wondering why your powerful computer still feels sluggish, or someone interested in the intersection of technology and culture, this discussion offers valuable insights into one of computing's most persistent challenges.", "Why Performance Actually Matters (The Standup)", "78cbde80-c510-499b-9235-9b7f8bfaaa46", 4314, false, "RlTVMi4JzZA", "https://www.youtube.com/watch?v=RlTVMi4JzZA", 41, "/downloads/The Standup/2025-07-20 Why Performance Actually Matters (The Standup)/Why Performance Actually Matters (The Standup) [RlTVMi4JzZA].mp4", false, false, false, 1, [], 0, ~U[2025-07-20 13:30:19Z], ~U[2026-07-24 11:59:26Z], ~U[2026-07-24 11:59:26Z], "Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on / theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:55 - The downward trend of performance expectations\n00:07:10 - The internet isn't to blame for slow speeds anymore\n00:11:27 - Dial up\n00:12:50 - School day routines and the reason behind modem sounds\n00:18:00 - Trash was a Catfish \n00:20:25 - Primes School Habits and his Moms prophetic Internet dream\n00:23:58 - Teej's highschool experience\n00:27:24 - Back on topic (its performance btw) WHO/WHAT is to blame\n00:39:38 - Speed = Sales and WHERE is the problem\n00:43:46 - Netflix BTW and WHEN performance is important\n00:48:35 - Too performant and waste\n00:53:14 - 'Hardware will catch up'\n01:01:13 - GPU vs CPU \n01:06:00 - Wrap up and closing thoughts \n\nLinks:\n- Casey's Performance Course: https://computerenhance.com\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nTeej: https://x.com/teej_dv\nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev\n\n---\n\nIn this episode of The Standup, we tackle one of the most frustrating aspects of modern computing: why everything feels so sluggish despite having incredibly powerful hardware. Casey Muratori joins us to share his perspective on performance culture and how we've collectively lowered our standards over the past two decades.\n\nFrom nostalgic stories about dial-up internet and modem sounds to serious discussions about software architecture, this conversation covers the technical, cultural, and business factors that have led to today's performance problems. We explore real-world examples from Netflix, discuss the impact of layered abstractions, and examine how corporate development pressures contribute to the problem.\n\nKey topics include:\n- How performance standards have declined while hardware has improved exponentially\n- The role of abstractions and frameworks in creating performance bottlenecks\n- Real Netflix case studies showing the complex relationship between performance and user behavior\n- Why the \"hardware will catch up\" mentality is fundamentally flawed\n- The difference between GPU and CPU performance paradigms\n- How AI might make performance problems even worse\n- Potential solutions through better substrate design\n\nWhether you're a developer frustrated with slow tools, a user wondering why your powerful computer still feels sluggish, or someone interested in the intersection of technology and culture, this discussion offers valuable insights into one of computing's most persistent challenges.", "Why Performance Actually Matters (The Standup)", 4314, false, "RlTVMi4JzZA", "https://www.youtube.com/watch?v=RlTVMi4JzZA", "/downloads/The Standup/2025-07-20 Why Performance Actually Matters (The Standup)/Why Performance Actually Matters (The Standup) [RlTVMi4JzZA].mp4", false, 1, ~U[2025-07-20 13:30:19Z]] 13:59:26.723 [debug] QUERY OK source="sources" db=0.2ms idle=352.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:26.723 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:26.724 [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 [41] 13:59:26.724 [info] Kicking off download for media item #41 (RlTVMi4JzZA) 13:59:26.726 [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" [45, 41, ~U[2026-07-24 11:59:26Z], ~U[2026-07-24 11:59:26Z]] 13:59:26.726 [debug] Current batch of media processed. Will check again in 1000ms 13:59:26.727 [info] GET /media_profiles 13:59:26.727 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 13:59:26.728 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.7ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 13:59:26.728 [debug] QUERY OK source="settings" db=0.2ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:26.729 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:26.730 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:26.730 [info] Sent 200 in 3ms 13:59:26.906 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "RiESVRggJygyURZaEjkDcT4-AnsLdVw25ruxsCMKU4d3KxeHgWLH3D4u", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:26.936 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:26.936 [debug] Replied in 88µs 13:59:27.727 [debug] Current batch of media processed. Will check again in 1000ms 13:59:28.728 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n#sponsored \n\nssh terminal.shop\nhttps://lowlevel.academy/\n\n📌 Chapters:\n00:00:00 - Intro\n00:02:04 - Low level explains what we know\n00:05:32 - How does this compare to the CrowdStrike outage?\n00:07:13 - What is a memory fuzzer?\n00:10:17 - What was the impact of the outage?\n00:12:22 - Movie talk sidebar\n00:14:58 - AUTH, choices and risk managment\n00:19:33 - Cloudflare also went down\n00:21:14 - Knowledge management \n00:23:07 - Chaos at Netflix\n00:32:00 - DHH's response\n00:33:21- Personally effected\n00:34:15 - Internet Of Things Devices\n00:39:38 - Personal Network Security vs Faith in Humanity\n00:42:27 - More on IOT devices\n00:48:10 - Car talk and internet connected failures\n00:51:17 - Fail open\n00:55:30 - Could Rust have prevented this?\n00:57:45 - Wrap up and outro\n\n\nCould Your Company Survive a Google Outage?\nLast week, Google Cloud went down—and with it, a massive chunk of the internet. In this episode of Standup, we’re joined by security expert Low Level Learning to break down what actually happened, how a single null pointer crashed Google’s management plane, and why Cloudflare and other services followed. We also go deep on software fuzzing, dependency risk, fail-open systems, and the absurd reality of internet-connected lamps.\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev \nLow Level Learning: https://x.com/LowLevelTweets \n\n\n Bonus topics include: automated cat feeders, Teslas on fire, and Baby Shark as a disaster protocol.", "duration" => 3559, "filename" => "/downloads/The Standup/2025-07-17 Google takes down the internet! (The Standup)/Google takes down the internet! (The Standup) [ZBk8oCmfpMg].mp4", "id" => "ZBk8oCmfpMg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZBk8oCmfpMg", "playlist_index" => 42, "timestamp" => 1752757270, "title" => "Google takes down the internet! (The Standup)", "upload_date" => "20250717"} 13:59:28.729 [debug] QUERY OK source="sources" db=0.3ms idle=695.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:28.729 [debug] QUERY OK source="sources" db=0.1ms idle=696.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:28.730 [debug] QUERY OK source="media_items" db=0.4ms idle=696.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-17 13:01:10Z], 1] 13:59:28.732 [debug] QUERY OK source="media_items" db=1.1ms idle=697.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n#sponsored \n\nssh terminal.shop\nhttps://lowlevel.academy/\n\n📌 Chapters:\n00:00:00 - Intro\n00:02:04 - Low level explains what we know\n00:05:32 - How does this compare to the CrowdStrike outage?\n00:07:13 - What is a memory fuzzer?\n00:10:17 - What was the impact of the outage?\n00:12:22 - Movie talk sidebar\n00:14:58 - AUTH, choices and risk managment\n00:19:33 - Cloudflare also went down\n00:21:14 - Knowledge management \n00:23:07 - Chaos at Netflix\n00:32:00 - DHH's response\n00:33:21- Personally effected\n00:34:15 - Internet Of Things Devices\n00:39:38 - Personal Network Security vs Faith in Humanity\n00:42:27 - More on IOT devices\n00:48:10 - Car talk and internet connected failures\n00:51:17 - Fail open\n00:55:30 - Could Rust have prevented this?\n00:57:45 - Wrap up and outro\n\n\nCould Your Company Survive a Google Outage?\nLast week, Google Cloud went down—and with it, a massive chunk of the internet. In this episode of Standup, we’re joined by security expert Low Level Learning to break down what actually happened, how a single null pointer crashed Google’s management plane, and why Cloudflare and other services followed. We also go deep on software fuzzing, dependency risk, fail-open systems, and the absurd reality of internet-connected lamps.\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev \nLow Level Learning: https://x.com/LowLevelTweets \n\n\n Bonus topics include: automated cat feeders, Teslas on fire, and Baby Shark as a disaster protocol.", "Google takes down the internet! (The Standup)", "0d50540f-53f3-49de-82a1-a8e91bfd5156", 3559, false, "ZBk8oCmfpMg", "https://www.youtube.com/watch?v=ZBk8oCmfpMg", 42, "/downloads/The Standup/2025-07-17 Google takes down the internet! (The Standup)/Google takes down the internet! (The Standup) [ZBk8oCmfpMg].mp4", false, false, false, 1, [], 0, ~U[2025-07-17 13:01:10Z], ~U[2026-07-24 11:59:28Z], ~U[2026-07-24 11:59:28Z], "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n#sponsored \n\nssh terminal.shop\nhttps://lowlevel.academy/\n\n📌 Chapters:\n00:00:00 - Intro\n00:02:04 - Low level explains what we know\n00:05:32 - How does this compare to the CrowdStrike outage?\n00:07:13 - What is a memory fuzzer?\n00:10:17 - What was the impact of the outage?\n00:12:22 - Movie talk sidebar\n00:14:58 - AUTH, choices and risk managment\n00:19:33 - Cloudflare also went down\n00:21:14 - Knowledge management \n00:23:07 - Chaos at Netflix\n00:32:00 - DHH's response\n00:33:21- Personally effected\n00:34:15 - Internet Of Things Devices\n00:39:38 - Personal Network Security vs Faith in Humanity\n00:42:27 - More on IOT devices\n00:48:10 - Car talk and internet connected failures\n00:51:17 - Fail open\n00:55:30 - Could Rust have prevented this?\n00:57:45 - Wrap up and outro\n\n\nCould Your Company Survive a Google Outage?\nLast week, Google Cloud went down—and with it, a massive chunk of the internet. In this episode of Standup, we’re joined by security expert Low Level Learning to break down what actually happened, how a single null pointer crashed Google’s management plane, and why Cloudflare and other services followed. We also go deep on software fuzzing, dependency risk, fail-open systems, and the absurd reality of internet-connected lamps.\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev \nLow Level Learning: https://x.com/LowLevelTweets \n\n\n Bonus topics include: automated cat feeders, Teslas on fire, and Baby Shark as a disaster protocol.", "Google takes down the internet! (The Standup)", 3559, false, "ZBk8oCmfpMg", "https://www.youtube.com/watch?v=ZBk8oCmfpMg", "/downloads/The Standup/2025-07-17 Google takes down the internet! (The Standup)/Google takes down the internet! (The Standup) [ZBk8oCmfpMg].mp4", false, 1, ~U[2025-07-17 13:01:10Z]] 13:59:28.732 [debug] QUERY OK source="sources" db=0.4ms idle=359.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:28.733 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:28.734 [debug] QUERY OK source="media_items" db=0.5ms 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 [42] 13:59:28.734 [info] Kicking off download for media item #42 (ZBk8oCmfpMg) 13:59:28.736 [debug] QUERY OK source="tasks" db=0.2ms idle=3.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [46, 42, ~U[2026-07-24 11:59:28Z], ~U[2026-07-24 11:59:28Z]] 13:59:28.736 [debug] Current batch of media processed. Will check again in 1000ms 13:59:29.737 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on https://www.twitch.tv/theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - balls.yoga, drama & intro\n00:02:00 - Building OpenCode: terminal AI agents\n00:03:00 - Bolt.new Reward Ceremony - July 26 10AM PST\n00:03:18 - Agent architecture basics explained\n00:04:08 - What is an AI Agent?\n00:05:00 - Prompt engineering and tool calling\n00:06:10 - OpenCode UX and mobile plans\n00:07:27 - Why OpenCode runs agents locally\n00:08:34 - Vision for mobile remote dev workflows\n00:09:15 - The reality of build opencode\n00:10:10 - Claude vs Opus vs others\n00:13:32 - Tool usage & LSP integration\n00:14:20 - LSP tool feedback loop\n00:17:00 - Claude is best at calling tools\n00:18:10 - Prompt tuning limitations and expectations\n00:22:20 - Modeling agent loops with tool calls\n00:24:40 - Why building a real agent isn’t just weekend work\n00:26:20 - Security tradeoffs in early development\n00:28:30 - Loop management & lossy compression\n00:29:40 - Session design & managing context\n00:30:40 - Parallel sessions and subagents\n00:33:20 - Adam banned from Twitch by his cofounder\n00:34:20 - OpenCode & Terminal.Shop development connection\n00:35:00 - What surprised them building an agent\n00:36:30 - Why TUIs are hard compared to web\n00:37:30 - Layering, pixel constraints, UI struggles\n00:38:30 - Final laughs & wrap-up\n00:39:00 - Plug for OpenCode: sst.dev/opencode\n00:40:00 - Outro: still no clue how agents work, but fun ride\n\n⸻\n\nTopics Covered:\n • AI agents in terminal environments\n • OpenCode’s CLI-first agent approach\n • Loop-based tool calling in LLMs\n • Integrating LSP feedback into agents\n • Prompt engineering & model tool awareness\n • Evaluating agents: benchmarks & metrics\n • Local vs remote dev environments\n • Designing for low-friction agent UX\n • Safety, permission models & sandboxing\n • The tradeoffs of TUIs vs web UIs\n • Session design, compression & memory limits\n • Humor, Twitch drama & voice AI characters", "duration" => 2417, "filename" => "/downloads/The Standup/2025-07-15 What even is an AI Agent?! (The Standup)/What even is an AI Agent?! (The Standup) [VsTbgYawoVc].mp4", "id" => "VsTbgYawoVc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=VsTbgYawoVc", "playlist_index" => 43, "timestamp" => 1752586227, "title" => "What even is an AI Agent?! (The Standup)", "upload_date" => "20250715"} 13:59:29.738 [debug] QUERY OK source="sources" db=0.1ms idle=1003.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:29.738 [debug] QUERY OK source="sources" db=0.1ms idle=1002.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:29.739 [debug] QUERY OK source="media_items" db=0.6ms idle=1002.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-15 13:30:27Z], 1] 13:59:29.741 [debug] QUERY OK source="media_items" db=1.2ms idle=1003.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on https://www.twitch.tv/theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - balls.yoga, drama & intro\n00:02:00 - Building OpenCode: terminal AI agents\n00:03:00 - Bolt.new Reward Ceremony - July 26 10AM PST\n00:03:18 - Agent architecture basics explained\n00:04:08 - What is an AI Agent?\n00:05:00 - Prompt engineering and tool calling\n00:06:10 - OpenCode UX and mobile plans\n00:07:27 - Why OpenCode runs agents locally\n00:08:34 - Vision for mobile remote dev workflows\n00:09:15 - The reality of build opencode\n00:10:10 - Claude vs Opus vs others\n00:13:32 - Tool usage & LSP integration\n00:14:20 - LSP tool feedback loop\n00:17:00 - Claude is best at calling tools\n00:18:10 - Prompt tuning limitations and expectations\n00:22:20 - Modeling agent loops with tool calls\n00:24:40 - Why building a real agent isn’t just weekend work\n00:26:20 - Security tradeoffs in early development\n00:28:30 - Loop management & lossy compression\n00:29:40 - Session design & managing context\n00:30:40 - Parallel sessions and subagents\n00:33:20 - Adam banned from Twitch by his cofounder\n00:34:20 - OpenCode & Terminal.Shop development connection\n00:35:00 - What surprised them building an agent\n00:36:30 - Why TUIs are hard compared to web\n00:37:30 - Layering, pixel constraints, UI struggles\n00:38:30 - Final laughs & wrap-up\n00:39:00 - Plug for OpenCode: sst.dev/opencode\n00:40:00 - Outro: still no clue how agents work, but fun ride\n\n⸻\n\nTopics Covered:\n • AI agents in terminal environments\n • OpenCode’s CLI-first agent approach\n • Loop-based tool calling in LLMs\n • Integrating LSP feedback into agents\n • Prompt engineering & model tool awareness\n • Evaluating agents: benchmarks & metrics\n • Local vs remote dev environments\n • Designing for low-friction agent UX\n • Safety, permission models & sandboxing\n • The tradeoffs of TUIs vs web UIs\n • Session design, compression & memory limits\n • Humor, Twitch drama & voice AI characters", "What even is an AI Agent?! (The Standup)", "c117318b-70f7-415c-bd3f-478b75c2aed1", 2417, false, "VsTbgYawoVc", "https://www.youtube.com/watch?v=VsTbgYawoVc", 43, "/downloads/The Standup/2025-07-15 What even is an AI Agent?! (The Standup)/What even is an AI Agent?! (The Standup) [VsTbgYawoVc].mp4", false, false, false, 1, [], 0, ~U[2025-07-15 13:30:27Z], ~U[2026-07-24 11:59:29Z], ~U[2026-07-24 11:59:29Z], "Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on https://www.twitch.tv/theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - balls.yoga, drama & intro\n00:02:00 - Building OpenCode: terminal AI agents\n00:03:00 - Bolt.new Reward Ceremony - July 26 10AM PST\n00:03:18 - Agent architecture basics explained\n00:04:08 - What is an AI Agent?\n00:05:00 - Prompt engineering and tool calling\n00:06:10 - OpenCode UX and mobile plans\n00:07:27 - Why OpenCode runs agents locally\n00:08:34 - Vision for mobile remote dev workflows\n00:09:15 - The reality of build opencode\n00:10:10 - Claude vs Opus vs others\n00:13:32 - Tool usage & LSP integration\n00:14:20 - LSP tool feedback loop\n00:17:00 - Claude is best at calling tools\n00:18:10 - Prompt tuning limitations and expectations\n00:22:20 - Modeling agent loops with tool calls\n00:24:40 - Why building a real agent isn’t just weekend work\n00:26:20 - Security tradeoffs in early development\n00:28:30 - Loop management & lossy compression\n00:29:40 - Session design & managing context\n00:30:40 - Parallel sessions and subagents\n00:33:20 - Adam banned from Twitch by his cofounder\n00:34:20 - OpenCode & Terminal.Shop development connection\n00:35:00 - What surprised them building an agent\n00:36:30 - Why TUIs are hard compared to web\n00:37:30 - Layering, pixel constraints, UI struggles\n00:38:30 - Final laughs & wrap-up\n00:39:00 - Plug for OpenCode: sst.dev/opencode\n00:40:00 - Outro: still no clue how agents work, but fun ride\n\n⸻\n\nTopics Covered:\n • AI agents in terminal environments\n • OpenCode’s CLI-first agent approach\n • Loop-based tool calling in LLMs\n • Integrating LSP feedback into agents\n • Prompt engineering & model tool awareness\n • Evaluating agents: benchmarks & metrics\n • Local vs remote dev environments\n • Designing for low-friction agent UX\n • Safety, permission models & sandboxing\n • The tradeoffs of TUIs vs web UIs\n • Session design, compression & memory limits\n • Humor, Twitch drama & voice AI characters", "What even is an AI Agent?! (The Standup)", 2417, false, "VsTbgYawoVc", "https://www.youtube.com/watch?v=VsTbgYawoVc", "/downloads/The Standup/2025-07-15 What even is an AI Agent?! (The Standup)/What even is an AI Agent?! (The Standup) [VsTbgYawoVc].mp4", false, 1, ~U[2025-07-15 13:30:27Z]] 13:59:29.741 [debug] QUERY OK source="sources" db=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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:29.741 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:29.742 [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 [43] 13:59:29.742 [info] Kicking off download for media item #43 (VsTbgYawoVc) 13:59:29.743 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [47, 43, ~U[2026-07-24 11:59:29Z], ~U[2026-07-24 11:59:29Z]] 13:59:29.743 [debug] Current batch of media processed. Will check again in 1000ms 13:59:29.932 [info] GET /media_profiles/1 13:59:29.932 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:59:29.932 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.2ms idle=190.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:29.933 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=190.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 13:59:29.933 [debug] QUERY OK source="settings" db=0.1ms idle=190.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:29.934 [debug] QUERY OK source="settings" db=0.2ms idle=190.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:29.934 [debug] QUERY OK source="settings" db=0.2ms idle=190.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:29.936 [info] Sent 200 in 4ms 13:59:30.104 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AyE4SykWEwFXFh8fDREiDAATPVIJYzhypr_fBuyb0smvTPD5Yzsa1RP1", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:30.126 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:30.126 [debug] Replied in 78µs 13:59:30.744 [debug] Current batch of media processed. Will check again in 1000ms 13:59:31.745 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:00:42 - Who’s actually a “web developer”?\n00:02:31 - Trash’s live intro & TypeScript presentation setup\n00:03:59 - Sentry #ad\n00:04:38 - Excess property checks in TS\n00:09:42 - WTF: Object spreads silence type errors\n00:14:30 - React prop spreading madness\n00:18:22 - Structural vs duck typing debate\n00:24:00 - WTF: Enums and why everyone hates them\n00:27:45 - Enum strings vs numbers behavior\n00:33:10 - Why enums in Node are cursed\n00:36:55 - Safer enum alternatives using const objects\n00:43:10 - TS quirks: Boolean filter keeps undefined in types\n00:46:40 - TSReset: The “CSS reset” for TypeScript\n00:49:01 - WTF: Empty object {} lets everything through\n00:52:32 - Doom rendered in TypeScript type system\n00:54:00 - Type-level math in TS (it’s real)\n00:56:33 - Scaling hell: TS performance bottlenecks\n01:00:01 - Flamegraphs and fighting TS perf without docs\n01:04:55 - TS inference vs explicit typing in large codebases\n01:09:30 - Prime’s favorite TS bug strikes again\n01:14:01 - Casey breaks down the compiler logic\n01:17:50 - Is this a TypeScript bug or a feature?\n01:22:44 - Final thoughts and community love\n\n---\n\n**Topics Covered:**\n\n • TypeScript excess property checks\n • Enums vs object literals\n • Structural vs duck typing\n • TS compiler edge cases\n • WTFs that break your mental model\n • Type-level math\n • Performance debugging hell\n • Massive monorepo pain points\n • The one TypeScript bug Prime can’t let go", "duration" => 5106, "filename" => "/downloads/The Standup/2025-07-08 WTF Typescript?! (The Standup)/WTF Typescript?! (The Standup) [dh6BCSzaF6g].mp4", "id" => "dh6BCSzaF6g", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dh6BCSzaF6g", "playlist_index" => 44, "timestamp" => 1751981439, "title" => "WTF Typescript?! (The Standup)", "upload_date" => "20250708"} 13:59:31.746 [debug] QUERY OK source="sources" db=0.7ms idle=712.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:31.748 [debug] QUERY OK source="sources" db=0.9ms idle=713.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:31.748 [debug] QUERY OK source="media_items" db=0.6ms idle=714.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 13:30:39Z], 1] 13:59:31.752 [debug] QUERY OK source="media_items" db=2.9ms idle=715.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:00:42 - Who’s actually a “web developer”?\n00:02:31 - Trash’s live intro & TypeScript presentation setup\n00:03:59 - Sentry #ad\n00:04:38 - Excess property checks in TS\n00:09:42 - WTF: Object spreads silence type errors\n00:14:30 - React prop spreading madness\n00:18:22 - Structural vs duck typing debate\n00:24:00 - WTF: Enums and why everyone hates them\n00:27:45 - Enum strings vs numbers behavior\n00:33:10 - Why enums in Node are cursed\n00:36:55 - Safer enum alternatives using const objects\n00:43:10 - TS quirks: Boolean filter keeps undefined in types\n00:46:40 - TSReset: The “CSS reset” for TypeScript\n00:49:01 - WTF: Empty object {} lets everything through\n00:52:32 - Doom rendered in TypeScript type system\n00:54:00 - Type-level math in TS (it’s real)\n00:56:33 - Scaling hell: TS performance bottlenecks\n01:00:01 - Flamegraphs and fighting TS perf without docs\n01:04:55 - TS inference vs explicit typing in large codebases\n01:09:30 - Prime’s favorite TS bug strikes again\n01:14:01 - Casey breaks down the compiler logic\n01:17:50 - Is this a TypeScript bug or a feature?\n01:22:44 - Final thoughts and community love\n\n---\n\n**Topics Covered:**\n\n • TypeScript excess property checks\n • Enums vs object literals\n • Structural vs duck typing\n • TS compiler edge cases\n • WTFs that break your mental model\n • Type-level math\n • Performance debugging hell\n • Massive monorepo pain points\n • The one TypeScript bug Prime can’t let go", "WTF Typescript?! (The Standup)", "5db9a47a-d782-41cd-9cd0-03c17a532aa9", 5106, false, "dh6BCSzaF6g", "https://www.youtube.com/watch?v=dh6BCSzaF6g", 44, "/downloads/The Standup/2025-07-08 WTF Typescript?! (The Standup)/WTF Typescript?! (The Standup) [dh6BCSzaF6g].mp4", false, false, false, 1, [], 0, ~U[2025-07-08 13:30:39Z], ~U[2026-07-24 11:59:31Z], ~U[2026-07-24 11:59:31Z], "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:00:42 - Who’s actually a “web developer”?\n00:02:31 - Trash’s live intro & TypeScript presentation setup\n00:03:59 - Sentry #ad\n00:04:38 - Excess property checks in TS\n00:09:42 - WTF: Object spreads silence type errors\n00:14:30 - React prop spreading madness\n00:18:22 - Structural vs duck typing debate\n00:24:00 - WTF: Enums and why everyone hates them\n00:27:45 - Enum strings vs numbers behavior\n00:33:10 - Why enums in Node are cursed\n00:36:55 - Safer enum alternatives using const objects\n00:43:10 - TS quirks: Boolean filter keeps undefined in types\n00:46:40 - TSReset: The “CSS reset” for TypeScript\n00:49:01 - WTF: Empty object {} lets everything through\n00:52:32 - Doom rendered in TypeScript type system\n00:54:00 - Type-level math in TS (it’s real)\n00:56:33 - Scaling hell: TS performance bottlenecks\n01:00:01 - Flamegraphs and fighting TS perf without docs\n01:04:55 - TS inference vs explicit typing in large codebases\n01:09:30 - Prime’s favorite TS bug strikes again\n01:14:01 - Casey breaks down the compiler logic\n01:17:50 - Is this a TypeScript bug or a feature?\n01:22:44 - Final thoughts and community love\n\n---\n\n**Topics Covered:**\n\n • TypeScript excess property checks\n • Enums vs object literals\n • Structural vs duck typing\n • TS compiler edge cases\n • WTFs that break your mental model\n • Type-level math\n • Performance debugging hell\n • Massive monorepo pain points\n • The one TypeScript bug Prime can’t let go", "WTF Typescript?! (The Standup)", 5106, false, "dh6BCSzaF6g", "https://www.youtube.com/watch?v=dh6BCSzaF6g", "/downloads/The Standup/2025-07-08 WTF Typescript?! (The Standup)/WTF Typescript?! (The Standup) [dh6BCSzaF6g].mp4", false, 1, ~U[2025-07-08 13:30:39Z]] 13:59:31.753 [debug] QUERY OK source="sources" db=0.6ms idle=376.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:31.757 [debug] QUERY OK source="media_profiles" db=0.9ms queue=2.8ms idle=6.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:31.758 [debug] QUERY OK source="media_items" db=1.2ms 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 [44] 13:59:31.758 [info] Kicking off download for media item #44 (dh6BCSzaF6g) 13:59:31.762 [debug] QUERY OK source="tasks" db=1.5ms idle=7.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [48, 44, ~U[2026-07-24 11:59:31Z], ~U[2026-07-24 11:59:31Z]] 13:59:31.762 [debug] Current batch of media processed. Will check again in 1000ms 13:59:32.763 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "ssh terminal.shop\n\nOpencode\nhttps://github.com/sst/opencode\n\n📌 Chapters:\n\n00:00:00 - Intro & Chess Talk\n00:01:55 - Who uses AI\n00:02:49 - ssh terminal.shop ad\n00:03:22 - Dax developing opencode\n00:11:00 - ssh terminal.shop TOS\n00:13:32 - Casey's take on AI\n00:31:22 - Teej's take on AI\n00:35:55 - Prime's take on AI\n00:40:40 - Zero to One development being prioritized\n00:48:00 - Begging Dax to teach us to build an agent\n\n---\n\n**Topics Covered:**\n\n- AI agents in programming workflows \n- Using LLMs for 0-to-1 product development \n- Prototyping with AI tools \n- Maintaining vs generating code \n- When AI fails in complex codebases \n- Developer productivity tools \n- Code quality and long-term maintainability \n- API stability and tech stack evolution \n- Vibe coding vs structured design \n- Frontend frustration: CSS, layout, and abstractions \n- Real-world use cases for AI-assisted coding \n- Opinions on OpenCode and agent tooling \n- The future of software automation", "duration" => 2970, "filename" => "/downloads/The Standup/2025-06-30 How **WE** Use AI In Software Development/How **WE** Use AI In Software Development [s7YQHWzZMYY].mp4", "id" => "s7YQHWzZMYY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=s7YQHWzZMYY", "playlist_index" => 45, "timestamp" => 1751290255, "title" => "How **WE** Use AI In Software Development", "upload_date" => "20250630"} 13:59:32.764 [debug] QUERY OK source="sources" db=0.2ms idle=1005.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:32.764 [debug] QUERY OK source="sources" db=0.1ms idle=1004.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:32.765 [debug] QUERY OK source="media_items" db=0.3ms idle=1004.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-30 13:30:55Z], 1] 13:59:32.766 [debug] QUERY OK source="media_items" db=0.7ms idle=1003.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop\n\nOpencode\nhttps://github.com/sst/opencode\n\n📌 Chapters:\n\n00:00:00 - Intro & Chess Talk\n00:01:55 - Who uses AI\n00:02:49 - ssh terminal.shop ad\n00:03:22 - Dax developing opencode\n00:11:00 - ssh terminal.shop TOS\n00:13:32 - Casey's take on AI\n00:31:22 - Teej's take on AI\n00:35:55 - Prime's take on AI\n00:40:40 - Zero to One development being prioritized\n00:48:00 - Begging Dax to teach us to build an agent\n\n---\n\n**Topics Covered:**\n\n- AI agents in programming workflows \n- Using LLMs for 0-to-1 product development \n- Prototyping with AI tools \n- Maintaining vs generating code \n- When AI fails in complex codebases \n- Developer productivity tools \n- Code quality and long-term maintainability \n- API stability and tech stack evolution \n- Vibe coding vs structured design \n- Frontend frustration: CSS, layout, and abstractions \n- Real-world use cases for AI-assisted coding \n- Opinions on OpenCode and agent tooling \n- The future of software automation", "How **WE** Use AI In Software Development", "8ca532eb-d18f-4acf-8d82-33033e2c23b6", 2970, false, "s7YQHWzZMYY", "https://www.youtube.com/watch?v=s7YQHWzZMYY", 45, "/downloads/The Standup/2025-06-30 How **WE** Use AI In Software Development/How **WE** Use AI In Software Development [s7YQHWzZMYY].mp4", false, false, false, 1, [], 0, ~U[2025-06-30 13:30:55Z], ~U[2026-07-24 11:59:32Z], ~U[2026-07-24 11:59:32Z], "ssh terminal.shop\n\nOpencode\nhttps://github.com/sst/opencode\n\n📌 Chapters:\n\n00:00:00 - Intro & Chess Talk\n00:01:55 - Who uses AI\n00:02:49 - ssh terminal.shop ad\n00:03:22 - Dax developing opencode\n00:11:00 - ssh terminal.shop TOS\n00:13:32 - Casey's take on AI\n00:31:22 - Teej's take on AI\n00:35:55 - Prime's take on AI\n00:40:40 - Zero to One development being prioritized\n00:48:00 - Begging Dax to teach us to build an agent\n\n---\n\n**Topics Covered:**\n\n- AI agents in programming workflows \n- Using LLMs for 0-to-1 product development \n- Prototyping with AI tools \n- Maintaining vs generating code \n- When AI fails in complex codebases \n- Developer productivity tools \n- Code quality and long-term maintainability \n- API stability and tech stack evolution \n- Vibe coding vs structured design \n- Frontend frustration: CSS, layout, and abstractions \n- Real-world use cases for AI-assisted coding \n- Opinions on OpenCode and agent tooling \n- The future of software automation", "How **WE** Use AI In Software Development", 2970, false, "s7YQHWzZMYY", "https://www.youtube.com/watch?v=s7YQHWzZMYY", "/downloads/The Standup/2025-06-30 How **WE** Use AI In Software Development/How **WE** Use AI In Software Development [s7YQHWzZMYY].mp4", false, 1, ~U[2025-06-30 13:30:55Z]] 13:59:32.767 [debug] QUERY OK source="sources" db=0.4ms idle=385.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:32.767 [debug] QUERY OK source="media_profiles" db=0.6ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:32.768 [debug] QUERY OK source="media_items" db=0.4ms 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 [45] 13:59:32.768 [info] Kicking off download for media item #45 (s7YQHWzZMYY) 13:59:32.770 [debug] QUERY OK source="tasks" db=0.1ms idle=3.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [49, 45, ~U[2026-07-24 11:59:32Z], ~U[2026-07-24 11:59:32Z]] 13:59:32.770 [debug] Current batch of media processed. Will check again in 1000ms 13:59:33.421 [info] GET / 13:59:33.421 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:59:33.421 [debug] QUERY OK source="settings" db=0.1ms idle=652.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:33.422 [debug] QUERY OK source="media_profiles" db=0.2ms idle=651.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:59:33.422 [debug] QUERY OK source="sources" db=0.1ms idle=651.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:59:33.422 [debug] QUERY OK source="media_items" db=0.2ms idle=651.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:59:33.422 [debug] QUERY OK source="media_items" db=0.1ms idle=40.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:59:33.423 [debug] QUERY OK source="settings" db=0.1ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:33.423 [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 [] 13:59:33.424 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:33.425 [debug] QUERY OK source="tasks" db=0.2ms idle=2.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 13:59:33.425 [debug] QUERY OK source="sources" db=0.2ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:33.426 [debug] QUERY OK source="media_items" db=0.6ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [2, 4] 13:59:33.427 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 13:59:33.428 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms 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:59:33.429 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [1] 13:59:33.430 [debug] QUERY OK source="media_items" db=0.3ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:59:33.431 [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] 13:59:33.431 [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" = ?) [1] 13:59:33.433 [info] Sent 200 in 11ms 13:59:33.600 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "OgtWSS0tODEzMko4ABA3SQkffWx0RzsXIX1dFNRRTW8QYQQpPv3_LvST", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:33.629 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded"} 13:59:33.630 [debug] QUERY OK source="media_items" db=0.3ms idle=200.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)) [] 13:59:33.630 [debug] QUERY OK source="media_items" db=0.7ms idle=200.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:59:33.631 [debug] QUERY OK source="sources" db=0.5ms idle=200.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:33.631 [debug] Replied in 2ms 13:59:33.633 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending"} 13:59:33.634 [debug] QUERY OK source="media_items" db=0.3ms idle=202.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:59:33.635 [debug] QUERY OK source="media_items" db=0.5ms idle=202.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:59:33.635 [debug] QUERY OK source="sources" db=0.5ms idle=5.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:33.635 [debug] Replied in 2ms 13:59:33.638 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:33.638 [debug] QUERY OK source="tasks" db=0.5ms idle=7.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:59:33.639 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:33.639 [debug] QUERY OK source="media_items" db=0.4ms idle=7.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [2, 4] 13:59:33.639 [debug] Replied in 1ms 13:59:33.641 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:33.641 [debug] Replied in 76µs 13:59:33.771 [debug] Current batch of media processed. Will check again in 1000ms 13:59:34.772 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Order coffee over SSH!\nssh terminal.shop\n\n📌 Chapters:\n\n00:00:00 - Intro Bonus Episode!\n00:04:10 - Twofish\n00:04:28 - ssh terminal.shop ad\n00:05:01 - Nothing is going to work!\n00:07:22 - Prime shares Vibe Coding Experience\n00:08:58 - Casey hates progress\n00:13:40 - Casey endorses Javascript\n00:14:21- Can AI Reduce the Entropy of a System?\n00:19:10 - Chopping Wood + AI\n00:22:05 - AI and Security \n00:26:26 - No Coders learning to Code\n00:30:30 - Learning without shortcuts VS with AI\n00:36:27 - We Love You\n\n---\n\nTopics Covered:\n• Why software always breaks\n• API fragility and long-term reliability\n• AI use in insecure coding patterns\n• Software complexity and maintenance\n• AI and security risks\n• LLMs vs traditional frameworks\n• Education and AI-assisted learning\n• AI-generated code quality concerns\n• Entropy and codebase maintenance\n• Future risks of AI-generated exploits\n• Programming fundamentals vs vibe coding\n• Experience vs speed trade-offs\n• Reinforcement learning and code refinement\n• Safe AI use in education and bootcamps", "duration" => 2286, "filename" => "/downloads/The Standup/2025-06-26 Why Does Software Keep Breaking?/Why Does Software Keep Breaking? [Aqj1Z1vgE6I].mp4", "id" => "Aqj1Z1vgE6I", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Aqj1Z1vgE6I", "playlist_index" => 46, "timestamp" => 1750935616, "title" => "Why Does Software Keep Breaking?", "upload_date" => "20250626"} 13:59:34.773 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1137.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:34.773 [debug] QUERY OK source="sources" db=0.4ms idle=1134.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:34.774 [debug] QUERY OK source="media_items" db=0.2ms idle=1134.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-26 11:00:16Z], 1] 13:59:34.781 [debug] QUERY OK source="media_items" db=6.5ms idle=1134.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Order coffee over SSH!\nssh terminal.shop\n\n📌 Chapters:\n\n00:00:00 - Intro Bonus Episode!\n00:04:10 - Twofish\n00:04:28 - ssh terminal.shop ad\n00:05:01 - Nothing is going to work!\n00:07:22 - Prime shares Vibe Coding Experience\n00:08:58 - Casey hates progress\n00:13:40 - Casey endorses Javascript\n00:14:21- Can AI Reduce the Entropy of a System?\n00:19:10 - Chopping Wood + AI\n00:22:05 - AI and Security \n00:26:26 - No Coders learning to Code\n00:30:30 - Learning without shortcuts VS with AI\n00:36:27 - We Love You\n\n---\n\nTopics Covered:\n• Why software always breaks\n• API fragility and long-term reliability\n• AI use in insecure coding patterns\n• Software complexity and maintenance\n• AI and security risks\n• LLMs vs traditional frameworks\n• Education and AI-assisted learning\n• AI-generated code quality concerns\n• Entropy and codebase maintenance\n• Future risks of AI-generated exploits\n• Programming fundamentals vs vibe coding\n• Experience vs speed trade-offs\n• Reinforcement learning and code refinement\n• Safe AI use in education and bootcamps", "Why Does Software Keep Breaking?", "0d9ab9e7-a20f-413d-9d6d-f452d534261c", 2286, false, "Aqj1Z1vgE6I", "https://www.youtube.com/watch?v=Aqj1Z1vgE6I", 46, "/downloads/The Standup/2025-06-26 Why Does Software Keep Breaking?/Why Does Software Keep Breaking? [Aqj1Z1vgE6I].mp4", false, false, false, 1, [], 0, ~U[2025-06-26 11:00:16Z], ~U[2026-07-24 11:59:34Z], ~U[2026-07-24 11:59:34Z], "https://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Order coffee over SSH!\nssh terminal.shop\n\n📌 Chapters:\n\n00:00:00 - Intro Bonus Episode!\n00:04:10 - Twofish\n00:04:28 - ssh terminal.shop ad\n00:05:01 - Nothing is going to work!\n00:07:22 - Prime shares Vibe Coding Experience\n00:08:58 - Casey hates progress\n00:13:40 - Casey endorses Javascript\n00:14:21- Can AI Reduce the Entropy of a System?\n00:19:10 - Chopping Wood + AI\n00:22:05 - AI and Security \n00:26:26 - No Coders learning to Code\n00:30:30 - Learning without shortcuts VS with AI\n00:36:27 - We Love You\n\n---\n\nTopics Covered:\n• Why software always breaks\n• API fragility and long-term reliability\n• AI use in insecure coding patterns\n• Software complexity and maintenance\n• AI and security risks\n• LLMs vs traditional frameworks\n• Education and AI-assisted learning\n• AI-generated code quality concerns\n• Entropy and codebase maintenance\n• Future risks of AI-generated exploits\n• Programming fundamentals vs vibe coding\n• Experience vs speed trade-offs\n• Reinforcement learning and code refinement\n• Safe AI use in education and bootcamps", "Why Does Software Keep Breaking?", 2286, false, "Aqj1Z1vgE6I", "https://www.youtube.com/watch?v=Aqj1Z1vgE6I", "/downloads/The Standup/2025-06-26 Why Does Software Keep Breaking?/Why Does Software Keep Breaking? [Aqj1Z1vgE6I].mp4", false, 1, ~U[2025-06-26 11:00:16Z]] 13:59:34.782 [debug] QUERY OK source="sources" db=0.6ms idle=397.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:34.782 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:34.783 [debug] QUERY OK source="media_items" db=0.4ms 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 [46] 13:59:34.783 [info] Kicking off download for media item #46 (Aqj1Z1vgE6I) 13:59:34.785 [debug] QUERY OK source="tasks" db=0.2ms idle=3.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [50, 46, ~U[2026-07-24 11:59:34Z], ~U[2026-07-24 11:59:34Z]] 13:59:34.785 [debug] Current batch of media processed. Will check again in 1000ms 13:59:35.786 [debug] Current batch of media processed. Will check again in 1000ms 13:59:36.642 [info] GET /sources 13:59:36.642 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 13:59:36.642 [debug] QUERY OK source="settings" db=0.2ms idle=608.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:36.643 [debug] QUERY OK source="settings" db=0.4ms idle=609.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:36.644 [debug] QUERY OK source="settings" db=0.5ms idle=610.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:36.644 [debug] QUERY OK source="settings" db=0.1ms idle=611.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:36.644 [debug] QUERY OK source="settings" db=0.0ms idle=256.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:36.645 [debug] QUERY OK source="sources" db=0.4ms idle=2.4ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:59:36.646 [debug] QUERY OK source="sources" db=0.8ms 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", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:59:36.648 [info] Sent 200 in 6ms 13:59:36.787 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎹 Finding the Right Keyboard\n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we talk about all things Keyboards.\n\nWe dive deep into:\n\n- Keyboard Obsession Origins\n- Mechanical Keyboards 101: Switch types, thock vs. clicky, creamy vs. crispy\n- Keychron, GMMK Pro, Dactyl Manuform & Voyager Reviews\n- Box Switches & Keycap Profiles (Cherry, DSA, OEM)\n- Silent Switches vs. Clicky Switches Debate\n- Typing Ergonomics & Wrist Pain Fixes\n- Split Keyboards, Thumb Clusters, and Concavity Explained\n- Custom Keyboards with RGB & Anime Keycaps\n- Keyboard Lubing\n- ZMK vs. QMK Keyboard Programming\n- Typing Competitions & Internet Speed Typing Lore\n- Casey’s Journey: From Amiga to Custom Builds\n- ASMR & Key Sounds Showcase\n- Trash’s Keyboard Garage Sale Finds\n- Ergonomic vs. Aesthetic Keyboards\n- How Much is Too Much for a Keyboard?\n\n⸻\n\n\n📌 Chapters:\n0:00 - intro + banter\n2:13 - the only coffee to drink\n3:50 - who are the keyboard fiends\n5:22 - sponsor: CodeRabbit \n6:03 - Casey learns about Keyboards\n2:05 - is college still worth it in 2025? \n5:48 - the cost of college in the U.S. vs Europe \n10:24 - What is Thock?\n15:45 - What are Box Switches?\n17:08 - Trashes Keyboard\n24:00 - Primes insane keyboard\n25:45 - Caseys keyboard\n27:00 - Programming your Keyboard\n29:25 - Touch Typing and the Home-Row\n33:30 Teej's keyboard\n36:38 - Trash's AOL Dragonball Z Battles\n37:55 - More Prime Keyboards\n42:18 - How much is too much money on a Keyboard\n45:00 - Lube talk\n47:05 - Mice suck\n50:05 - Casey's Keycaps\n53:56 - Pressure\n58:55 - Prime is NOT in charge of the Airbnb\n1:00:40 - Outro and Inspiration\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.", "duration" => 3885, "filename" => "/downloads/The Standup/2025-06-20 Keyboard Show and Tell | The Standup/Keyboard Show and Tell | The Standup [otYrZPbzfV0].mp4", "id" => "otYrZPbzfV0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=otYrZPbzfV0", "playlist_index" => 47, "timestamp" => 1750424685, "title" => "Keyboard Show and Tell | The Standup", "upload_date" => "20250620"} 13:59:36.788 [debug] QUERY OK source="sources" db=0.5ms idle=143.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:36.789 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=144.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:36.789 [debug] QUERY OK source="media_items" db=0.3ms idle=144.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-20 13:04:45Z], 1] 13:59:36.791 [debug] QUERY OK source="media_items" db=1.2ms idle=144.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎹 Finding the Right Keyboard\n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we talk about all things Keyboards.\n\nWe dive deep into:\n\n- Keyboard Obsession Origins\n- Mechanical Keyboards 101: Switch types, thock vs. clicky, creamy vs. crispy\n- Keychron, GMMK Pro, Dactyl Manuform & Voyager Reviews\n- Box Switches & Keycap Profiles (Cherry, DSA, OEM)\n- Silent Switches vs. Clicky Switches Debate\n- Typing Ergonomics & Wrist Pain Fixes\n- Split Keyboards, Thumb Clusters, and Concavity Explained\n- Custom Keyboards with RGB & Anime Keycaps\n- Keyboard Lubing\n- ZMK vs. QMK Keyboard Programming\n- Typing Competitions & Internet Speed Typing Lore\n- Casey’s Journey: From Amiga to Custom Builds\n- ASMR & Key Sounds Showcase\n- Trash’s Keyboard Garage Sale Finds\n- Ergonomic vs. Aesthetic Keyboards\n- How Much is Too Much for a Keyboard?\n\n⸻\n\n\n📌 Chapters:\n0:00 - intro + banter\n2:13 - the only coffee to drink\n3:50 - who are the keyboard fiends\n5:22 - sponsor: CodeRabbit \n6:03 - Casey learns about Keyboards\n2:05 - is college still worth it in 2025? \n5:48 - the cost of college in the U.S. vs Europe \n10:24 - What is Thock?\n15:45 - What are Box Switches?\n17:08 - Trashes Keyboard\n24:00 - Primes insane keyboard\n25:45 - Caseys keyboard\n27:00 - Programming your Keyboard\n29:25 - Touch Typing and the Home-Row\n33:30 Teej's keyboard\n36:38 - Trash's AOL Dragonball Z Battles\n37:55 - More Prime Keyboards\n42:18 - How much is too much money on a Keyboard\n45:00 - Lube talk\n47:05 - Mice suck\n50:05 - Casey's Keycaps\n53:56 - Pressure\n58:55 - Prime is NOT in charge of the Airbnb\n1:00:40 - Outro and Inspiration\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.", "Keyboard Show and Tell | The Standup", "83b0d82f-6b3d-4075-88da-d55bfdedca71", 3885, false, "otYrZPbzfV0", "https://www.youtube.com/watch?v=otYrZPbzfV0", 47, "/downloads/The Standup/2025-06-20 Keyboard Show and Tell | The Standup/Keyboard Show and Tell | The Standup [otYrZPbzfV0].mp4", false, false, false, 1, [], 0, ~U[2025-06-20 13:04:45Z], ~U[2026-07-24 11:59:36Z], ~U[2026-07-24 11:59:36Z], "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎹 Finding the Right Keyboard\n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we talk about all things Keyboards.\n\nWe dive deep into:\n\n- Keyboard Obsession Origins\n- Mechanical Keyboards 101: Switch types, thock vs. clicky, creamy vs. crispy\n- Keychron, GMMK Pro, Dactyl Manuform & Voyager Reviews\n- Box Switches & Keycap Profiles (Cherry, DSA, OEM)\n- Silent Switches vs. Clicky Switches Debate\n- Typing Ergonomics & Wrist Pain Fixes\n- Split Keyboards, Thumb Clusters, and Concavity Explained\n- Custom Keyboards with RGB & Anime Keycaps\n- Keyboard Lubing\n- ZMK vs. QMK Keyboard Programming\n- Typing Competitions & Internet Speed Typing Lore\n- Casey’s Journey: From Amiga to Custom Builds\n- ASMR & Key Sounds Showcase\n- Trash’s Keyboard Garage Sale Finds\n- Ergonomic vs. Aesthetic Keyboards\n- How Much is Too Much for a Keyboard?\n\n⸻\n\n\n📌 Chapters:\n0:00 - intro + banter\n2:13 - the only coffee to drink\n3:50 - who are the keyboard fiends\n5:22 - sponsor: CodeRabbit \n6:03 - Casey learns about Keyboards\n2:05 - is college still worth it in 2025? \n5:48 - the cost of college in the U.S. vs Europe \n10:24 - What is Thock?\n15:45 - What are Box Switches?\n17:08 - Trashes Keyboard\n24:00 - Primes insane keyboard\n25:45 - Caseys keyboard\n27:00 - Programming your Keyboard\n29:25 - Touch Typing and the Home-Row\n33:30 Teej's keyboard\n36:38 - Trash's AOL Dragonball Z Battles\n37:55 - More Prime Keyboards\n42:18 - How much is too much money on a Keyboard\n45:00 - Lube talk\n47:05 - Mice suck\n50:05 - Casey's Keycaps\n53:56 - Pressure\n58:55 - Prime is NOT in charge of the Airbnb\n1:00:40 - Outro and Inspiration\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.", "Keyboard Show and Tell | The Standup", 3885, false, "otYrZPbzfV0", "https://www.youtube.com/watch?v=otYrZPbzfV0", "/downloads/The Standup/2025-06-20 Keyboard Show and Tell | The Standup/Keyboard Show and Tell | The Standup [otYrZPbzfV0].mp4", false, 1, ~U[2025-06-20 13:04:45Z]] 13:59:36.791 [debug] QUERY OK source="sources" db=0.1ms idle=144.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:36.792 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:36.792 [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 [47] 13:59:36.792 [info] Kicking off download for media item #47 (otYrZPbzfV0) 13:59:36.794 [debug] QUERY OK source="tasks" db=0.1ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [51, 47, ~U[2026-07-24 11:59:36Z], ~U[2026-07-24 11:59:36Z]] 13:59:36.794 [debug] Current batch of media processed. Will check again in 1000ms 13:59:36.818 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LCACdxE3BVMGMyUxNzg1bDtZKF8McFAp_seZzTo0aVWXnySUb0fl4A8j", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:36.845 [debug] MOUNT PinchflatWeb.Sources.SourceLive.IndexTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "initial_sort_direction" => :asc, "initial_sort_key" => :custom_name, "results_per_page" => 10} 13:59:36.846 [debug] QUERY OK source="sources" db=0.7ms idle=53.1ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:59:36.847 [debug] QUERY OK source="sources" db=0.9ms idle=53.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:59:36.847 [debug] Replied in 2ms 13:59:36.848 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:36.848 [debug] Replied in 85µs 13:59:37.794 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nssh terminal.shop\n\n00:00:00 - Intro\n00:00:57 - The New Standup Dress Code\n00:03:38 - What we're gonna talk about\n00:05:05 - Code Rabbit Ad!\n00:05:50 - Prime and Begin argue about Botched Rebases\n00:09:21 - What Source Control *Should* Be \n00:20:01 - Casey and Begin agree on the future Source Control\n00:26:00 - Prime makes Git Branching even more Complicated by comparing it to Quantum Mechanics\n00:27:56 - The Idiot's Perspective\n00:34:00 - When Teej deals with Merges\n00:36:48 - Conway's Law informs Git process\n00:42:05 - Google Docs Analogy\n00:45:30 - How Real Developers Ship Code\n00:47:55 - What Should Version Control be?\n00:50:54 - Would Casey let a Junior Eng roll their own VCS\n00:59:25 - Why Prime Rebases and we all Fight\n01:16:50 - Begin's Law\n01:17:22 - Git Hooks\n01:23:48 - Git Koans", "duration" => 5267, "filename" => "/downloads/The Standup/2025-06-18 The Real Problems w⧸ Git/The Real Problems w⧸ Git [t6qL_FbLArk].mp4", "id" => "t6qL_FbLArk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=t6qL_FbLArk", "playlist_index" => 48, "timestamp" => 1750255291, "title" => "The Real Problems w/ Git", "upload_date" => "20250618"} 13:59:37.795 [debug] QUERY OK source="sources" db=0.2ms queue=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 (?)) [1] 13:59:37.795 [debug] QUERY OK source="sources" db=0.1ms idle=1001.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:37.795 [debug] QUERY OK source="media_items" db=0.1ms idle=949.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-18 14:01:31Z], 1] 13:59:37.797 [debug] QUERY OK source="media_items" db=0.7ms idle=948.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nssh terminal.shop\n\n00:00:00 - Intro\n00:00:57 - The New Standup Dress Code\n00:03:38 - What we're gonna talk about\n00:05:05 - Code Rabbit Ad!\n00:05:50 - Prime and Begin argue about Botched Rebases\n00:09:21 - What Source Control *Should* Be \n00:20:01 - Casey and Begin agree on the future Source Control\n00:26:00 - Prime makes Git Branching even more Complicated by comparing it to Quantum Mechanics\n00:27:56 - The Idiot's Perspective\n00:34:00 - When Teej deals with Merges\n00:36:48 - Conway's Law informs Git process\n00:42:05 - Google Docs Analogy\n00:45:30 - How Real Developers Ship Code\n00:47:55 - What Should Version Control be?\n00:50:54 - Would Casey let a Junior Eng roll their own VCS\n00:59:25 - Why Prime Rebases and we all Fight\n01:16:50 - Begin's Law\n01:17:22 - Git Hooks\n01:23:48 - Git Koans", "The Real Problems w/ Git", "4ad0bcb5-c244-4a3a-9416-38f0e9dfda44", 5267, false, "t6qL_FbLArk", "https://www.youtube.com/watch?v=t6qL_FbLArk", 48, "/downloads/The Standup/2025-06-18 The Real Problems w⧸ Git/The Real Problems w⧸ Git [t6qL_FbLArk].mp4", false, false, false, 1, [], 0, ~U[2025-06-18 14:01:31Z], ~U[2026-07-24 11:59:37Z], ~U[2026-07-24 11:59:37Z], "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nssh terminal.shop\n\n00:00:00 - Intro\n00:00:57 - The New Standup Dress Code\n00:03:38 - What we're gonna talk about\n00:05:05 - Code Rabbit Ad!\n00:05:50 - Prime and Begin argue about Botched Rebases\n00:09:21 - What Source Control *Should* Be \n00:20:01 - Casey and Begin agree on the future Source Control\n00:26:00 - Prime makes Git Branching even more Complicated by comparing it to Quantum Mechanics\n00:27:56 - The Idiot's Perspective\n00:34:00 - When Teej deals with Merges\n00:36:48 - Conway's Law informs Git process\n00:42:05 - Google Docs Analogy\n00:45:30 - How Real Developers Ship Code\n00:47:55 - What Should Version Control be?\n00:50:54 - Would Casey let a Junior Eng roll their own VCS\n00:59:25 - Why Prime Rebases and we all Fight\n01:16:50 - Begin's Law\n01:17:22 - Git Hooks\n01:23:48 - Git Koans", "The Real Problems w/ Git", 5267, false, "t6qL_FbLArk", "https://www.youtube.com/watch?v=t6qL_FbLArk", "/downloads/The Standup/2025-06-18 The Real Problems w⧸ Git/The Real Problems w⧸ Git [t6qL_FbLArk].mp4", false, 1, ~U[2025-06-18 14:01:31Z]] 13:59:37.797 [debug] QUERY OK source="sources" db=0.1ms idle=406.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:37.797 [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] 13:59:37.798 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48] 13:59:37.798 [info] Kicking off download for media item #48 (t6qL_FbLArk) 13:59:37.800 [debug] QUERY OK source="tasks" db=0.1ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [52, 48, ~U[2026-07-24 11:59:37Z], ~U[2026-07-24 11:59:37Z]] 13:59:37.800 [debug] Current batch of media processed. Will check again in 1000ms 13:59:38.659 [info] GET /sources/1/edit 13:59:38.659 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 13:59:38.660 [debug] QUERY OK source="sources" db=0.2ms idle=861.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:38.660 [debug] QUERY OK source="media_profiles" db=0.6ms idle=860.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 13:59:38.661 [debug] QUERY OK source="settings" db=0.1ms idle=860.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:38.661 [debug] QUERY OK source="settings" db=0.2ms idle=861.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:38.662 [debug] QUERY OK source="settings" db=0.0ms idle=270.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:38.665 [info] Sent 200 in 5ms 13:59:38.670 [info] CONNECTED TO Phoenix.LiveView.Socket in 16µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LCACdxE3BVMGMyUxNzg1bDtZKF8McFAp_seZzTo0aVWXnySUb0fl4A8j", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:38.801 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Thanks to our sponsor, https://blacksmith.sh today! Speed up your GitHub Actions AND pay less!!\n\nssh terminal.shop\n\n00:00:00 - Trash Has Other Standups?!\n00:00:40 - Trash Worked on Main frames\n00:07:03 - Trash's Actual Advice\n00:09:00 - Blacksmith.sh Sponsor\n00:09:44 - Begin Transitions Into Tech\n00:14:01 - Begin Actual Advice\n00:17:22 - Begin's Craziest Story?!\n00:25:33 - TJ's First Job & Career Track\n00:33:10 - What we look for in hiring\n00:35:01 - Prime yapping\n00:44:55 - Software is a social game\n00:50:33 - Begin gets entire we-work banned from Stack Overflow", "duration" => 3246, "filename" => "/downloads/The Standup/2025-06-13 How We Got Our First Dev Job/How We Got Our First Dev Job [_CwpzZ8AVio].mp4", "id" => "_CwpzZ8AVio", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_CwpzZ8AVio", "playlist_index" => 49, "timestamp" => 1749822762, "title" => "How We Got Our First Dev Job", "upload_date" => "20250613"} 13:59:38.802 [debug] QUERY OK source="sources" db=0.2ms idle=141.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:38.802 [debug] QUERY OK source="sources" db=0.1ms idle=141.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:38.803 [debug] QUERY OK source="media_items" db=0.4ms idle=141.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-13 13:52:42Z], 1] 13:59:38.804 [debug] QUERY OK source="media_items" db=0.8ms idle=141.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to our sponsor, https://blacksmith.sh today! Speed up your GitHub Actions AND pay less!!\n\nssh terminal.shop\n\n00:00:00 - Trash Has Other Standups?!\n00:00:40 - Trash Worked on Main frames\n00:07:03 - Trash's Actual Advice\n00:09:00 - Blacksmith.sh Sponsor\n00:09:44 - Begin Transitions Into Tech\n00:14:01 - Begin Actual Advice\n00:17:22 - Begin's Craziest Story?!\n00:25:33 - TJ's First Job & Career Track\n00:33:10 - What we look for in hiring\n00:35:01 - Prime yapping\n00:44:55 - Software is a social game\n00:50:33 - Begin gets entire we-work banned from Stack Overflow", "How We Got Our First Dev Job", "532b4221-8fe0-4dd0-8d18-57d95abeb491", 3246, false, "_CwpzZ8AVio", "https://www.youtube.com/watch?v=_CwpzZ8AVio", 49, "/downloads/The Standup/2025-06-13 How We Got Our First Dev Job/How We Got Our First Dev Job [_CwpzZ8AVio].mp4", false, false, false, 1, [], 0, ~U[2025-06-13 13:52:42Z], ~U[2026-07-24 11:59:38Z], ~U[2026-07-24 11:59:38Z], "Thanks to our sponsor, https://blacksmith.sh today! Speed up your GitHub Actions AND pay less!!\n\nssh terminal.shop\n\n00:00:00 - Trash Has Other Standups?!\n00:00:40 - Trash Worked on Main frames\n00:07:03 - Trash's Actual Advice\n00:09:00 - Blacksmith.sh Sponsor\n00:09:44 - Begin Transitions Into Tech\n00:14:01 - Begin Actual Advice\n00:17:22 - Begin's Craziest Story?!\n00:25:33 - TJ's First Job & Career Track\n00:33:10 - What we look for in hiring\n00:35:01 - Prime yapping\n00:44:55 - Software is a social game\n00:50:33 - Begin gets entire we-work banned from Stack Overflow", "How We Got Our First Dev Job", 3246, false, "_CwpzZ8AVio", "https://www.youtube.com/watch?v=_CwpzZ8AVio", "/downloads/The Standup/2025-06-13 How We Got Our First Dev Job/How We Got Our First Dev Job [_CwpzZ8AVio].mp4", false, 1, ~U[2025-06-13 13:52:42Z]] 13:59:38.804 [debug] QUERY OK source="sources" db=0.1ms idle=142.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:38.805 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:38.805 [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 [49] 13:59:38.805 [info] Kicking off download for media item #49 (_CwpzZ8AVio) 13:59:38.807 [debug] QUERY OK source="tasks" db=0.2ms idle=2.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [53, 49, ~U[2026-07-24 11:59:38Z], ~U[2026-07-24 11:59:38Z]] 13:59:38.807 [debug] Current batch of media processed. Will check again in 1000ms 13:59:39.070 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BRAieTw2Wy9eMkIRajcAchgjNEN1fgx2vCETWU1L9W0x3vfKAJzpMOd5", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:39.082 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:39.082 [debug] Replied in 73µs 13:59:39.807 [debug] Current batch of media processed. Will check again in 1000ms 13:59:40.808 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "💸 $1M+ hackathon is live — https://hackathon.dev\n\nMicrosoft just open-sourced Copilot Chat for VS Code — but is it a W or a panic move? 👀\n\nPrime, Teej, Casey & Trash break it all down:\n⚔️ Cursor & Windsurf eating VS Code’s lunch\n🧠 Is MSFT losing the AI dev wars?\n🌐 Open source or just open copium?\n💀 Also: mustaches, rats, and corporate trauma\n\n\n\n📌 Chapters:\n0:00:00 intro \n0:03:25 Trash humiliated by a German Man\n0:05:23 Prime admits he knows nothing about TMNT\n0:06:00 Sponsor: Bolt\n0:06:48 VSCODE Copilot going Open Source 4 Real\n0:16:11 Inept vs Incapable (semantics)\n0:25:37 AI Models vs AI Integration\n0:41:20 Economics and Cheese Puffs\n0:57:00 Klarna Klarna Klarna!\n1:08:00 use code \"Casey\" at check w/ Klarna\n1:09:42 Vote Teej!", "duration" => 4277, "filename" => "/downloads/The Standup/2025-06-11 Microsoft Admits AI Defeat?/Microsoft Admits AI Defeat? [l6K9Q7hsh18].mp4", "id" => "l6K9Q7hsh18", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=l6K9Q7hsh18", "playlist_index" => 50, "timestamp" => 1749650567, "title" => "Microsoft Admits AI Defeat?", "upload_date" => "20250611"} 13:59:40.809 [debug] QUERY OK source="sources" db=0.2ms idle=775.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:40.809 [debug] QUERY OK source="sources" db=0.1ms idle=775.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:40.809 [debug] QUERY OK source="media_items" db=0.2ms idle=776.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-11 14:02:47Z], 1] 13:59:40.811 [debug] QUERY OK source="media_items" db=0.9ms idle=776.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💸 $1M+ hackathon is live — https://hackathon.dev\n\nMicrosoft just open-sourced Copilot Chat for VS Code — but is it a W or a panic move? 👀\n\nPrime, Teej, Casey & Trash break it all down:\n⚔️ Cursor & Windsurf eating VS Code’s lunch\n🧠 Is MSFT losing the AI dev wars?\n🌐 Open source or just open copium?\n💀 Also: mustaches, rats, and corporate trauma\n\n\n\n📌 Chapters:\n0:00:00 intro \n0:03:25 Trash humiliated by a German Man\n0:05:23 Prime admits he knows nothing about TMNT\n0:06:00 Sponsor: Bolt\n0:06:48 VSCODE Copilot going Open Source 4 Real\n0:16:11 Inept vs Incapable (semantics)\n0:25:37 AI Models vs AI Integration\n0:41:20 Economics and Cheese Puffs\n0:57:00 Klarna Klarna Klarna!\n1:08:00 use code \"Casey\" at check w/ Klarna\n1:09:42 Vote Teej!", "Microsoft Admits AI Defeat?", "2776172a-8698-4213-a1d2-e47ab7fe39a2", 4277, false, "l6K9Q7hsh18", "https://www.youtube.com/watch?v=l6K9Q7hsh18", 50, "/downloads/The Standup/2025-06-11 Microsoft Admits AI Defeat?/Microsoft Admits AI Defeat? [l6K9Q7hsh18].mp4", false, false, false, 1, [], 0, ~U[2025-06-11 14:02:47Z], ~U[2026-07-24 11:59:40Z], ~U[2026-07-24 11:59:40Z], "💸 $1M+ hackathon is live — https://hackathon.dev\n\nMicrosoft just open-sourced Copilot Chat for VS Code — but is it a W or a panic move? 👀\n\nPrime, Teej, Casey & Trash break it all down:\n⚔️ Cursor & Windsurf eating VS Code’s lunch\n🧠 Is MSFT losing the AI dev wars?\n🌐 Open source or just open copium?\n💀 Also: mustaches, rats, and corporate trauma\n\n\n\n📌 Chapters:\n0:00:00 intro \n0:03:25 Trash humiliated by a German Man\n0:05:23 Prime admits he knows nothing about TMNT\n0:06:00 Sponsor: Bolt\n0:06:48 VSCODE Copilot going Open Source 4 Real\n0:16:11 Inept vs Incapable (semantics)\n0:25:37 AI Models vs AI Integration\n0:41:20 Economics and Cheese Puffs\n0:57:00 Klarna Klarna Klarna!\n1:08:00 use code \"Casey\" at check w/ Klarna\n1:09:42 Vote Teej!", "Microsoft Admits AI Defeat?", 4277, false, "l6K9Q7hsh18", "https://www.youtube.com/watch?v=l6K9Q7hsh18", "/downloads/The Standup/2025-06-11 Microsoft Admits AI Defeat?/Microsoft Admits AI Defeat? [l6K9Q7hsh18].mp4", false, 1, ~U[2025-06-11 14:02:47Z]] 13:59:40.811 [debug] QUERY OK source="sources" db=0.2ms idle=416.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:40.811 [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] 13:59:40.812 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50] 13:59:40.812 [info] Kicking off download for media item #50 (l6K9Q7hsh18) 13:59:40.814 [debug] QUERY OK source="tasks" db=0.1ms idle=2.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [54, 50, ~U[2026-07-24 11:59:40Z], ~U[2026-07-24 11:59:40Z]] 13:59:40.814 [debug] Current batch of media processed. Will check again in 1000ms 13:59:41.815 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎓 Is College Still Worth It in 2025? \n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we sit down with David Heinemeier Hansson (DHH), the creator of Ruby on Rails and Basecamp co-founder.\n\n👉 Is College Worth It in 2025?\n\nWe dive deep into:\n\n⏳ The ROI of college in a post-AI world\n🇺🇸 Why American higher ed is broken (from a Danish POV)\n📉 Are CS degrees still worth $250K?\n💸 The myth of the “four-year luxury cruise”\n🤖 How AI is disrupting the junior dev job market\n🔍 Hiring: Is college even a useful signal anymore?\n🧠 IQ vs wisdom vs vibes – what really matters in hiring\n🧰 Is programming a trade? Should we move to apprenticeships?\n👨\u200D🌾 Why every dev wants to be a farmer (and why that’s delusional)\n\nWhether you’re considering college, hiring devs, or already knee-deep in student debt, this conversation pulls no punches and may just change how you think about education, hiring, and the future of software development.\n\n⸻\n\n\n📌 Chapters:\n0:00 intro \n2:05 is college still worth it in 2025? \n5:48 the cost of college in the U.S. vs Europe \n6:57 sponsor: CodeRabbit \n7:42 good point\n9:10 DHH explains the Danish education system \n13:02 is college just a luxury cruise? \n17:45 what are you actually buying with a degree? \n21:20 how companies *really* hire developers \n26:11 Casey’s take: programming should be a trade \n30:40 is college a filter for IQ or just vibes? \n45:50 what skills matter more than a degree \n49:20 how to actually learn to code in 2025 \n53:00 is college redeemable? final thoughts \n57:15 wrap-up & what’s next on the podcast \n\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.\n\n#IsCollegeWorthIt #DHH #CaseyMuratori #DeveloperPodcast #SoftwareEngineering #TechPodcast #BootcampVsCollege #ProgrammerLife #TechCareers #TheStartupPodcast", "duration" => 3905, "filename" => "/downloads/The Standup/2025-06-06 DHH IS RIGHT ABOUT EVERYTHING (Again)?/DHH IS RIGHT ABOUT EVERYTHING (Again)? [EIBxRMH4bvs].mp4", "id" => "EIBxRMH4bvs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=EIBxRMH4bvs", "playlist_index" => 51, "timestamp" => 1749220277, "title" => "DHH IS RIGHT ABOUT EVERYTHING (Again)?", "upload_date" => "20250606"} 13:59:41.816 [debug] QUERY OK source="sources" db=0.3ms idle=1003.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:41.816 [debug] QUERY OK source="sources" db=0.1ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:41.817 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-06 14:31:17Z], 1] 13:59:41.818 [debug] QUERY OK source="media_items" db=1.0ms idle=1003.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎓 Is College Still Worth It in 2025? \n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we sit down with David Heinemeier Hansson (DHH), the creator of Ruby on Rails and Basecamp co-founder.\n\n👉 Is College Worth It in 2025?\n\nWe dive deep into:\n\n⏳ The ROI of college in a post-AI world\n🇺🇸 Why American higher ed is broken (from a Danish POV)\n📉 Are CS degrees still worth $250K?\n💸 The myth of the “four-year luxury cruise”\n🤖 How AI is disrupting the junior dev job market\n🔍 Hiring: Is college even a useful signal anymore?\n🧠 IQ vs wisdom vs vibes – what really matters in hiring\n🧰 Is programming a trade? Should we move to apprenticeships?\n👨\u200D🌾 Why every dev wants to be a farmer (and why that’s delusional)\n\nWhether you’re considering college, hiring devs, or already knee-deep in student debt, this conversation pulls no punches and may just change how you think about education, hiring, and the future of software development.\n\n⸻\n\n\n📌 Chapters:\n0:00 intro \n2:05 is college still worth it in 2025? \n5:48 the cost of college in the U.S. vs Europe \n6:57 sponsor: CodeRabbit \n7:42 good point\n9:10 DHH explains the Danish education system \n13:02 is college just a luxury cruise? \n17:45 what are you actually buying with a degree? \n21:20 how companies *really* hire developers \n26:11 Casey’s take: programming should be a trade \n30:40 is college a filter for IQ or just vibes? \n45:50 what skills matter more than a degree \n49:20 how to actually learn to code in 2025 \n53:00 is college redeemable? final thoughts \n57:15 wrap-up & what’s next on the podcast \n\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.\n\n#IsCollegeWorthIt #DHH #CaseyMuratori #DeveloperPodcast #SoftwareEngineering #TechPodcast #BootcampVsCollege #ProgrammerLife #TechCareers #TheStartupPodcast", "DHH IS RIGHT ABOUT EVERYTHING (Again)?", "c0f2b68b-bb28-4054-b4e4-e06f75646023", 3905, false, "EIBxRMH4bvs", "https://www.youtube.com/watch?v=EIBxRMH4bvs", 51, "/downloads/The Standup/2025-06-06 DHH IS RIGHT ABOUT EVERYTHING (Again)?/DHH IS RIGHT ABOUT EVERYTHING (Again)? [EIBxRMH4bvs].mp4", false, false, false, 1, [], 0, ~U[2025-06-06 14:31:17Z], ~U[2026-07-24 11:59:41Z], ~U[2026-07-24 11:59:41Z], "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎓 Is College Still Worth It in 2025? \n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we sit down with David Heinemeier Hansson (DHH), the creator of Ruby on Rails and Basecamp co-founder.\n\n👉 Is College Worth It in 2025?\n\nWe dive deep into:\n\n⏳ The ROI of college in a post-AI world\n🇺🇸 Why American higher ed is broken (from a Danish POV)\n📉 Are CS degrees still worth $250K?\n💸 The myth of the “four-year luxury cruise”\n🤖 How AI is disrupting the junior dev job market\n🔍 Hiring: Is college even a useful signal anymore?\n🧠 IQ vs wisdom vs vibes – what really matters in hiring\n🧰 Is programming a trade? Should we move to apprenticeships?\n👨\u200D🌾 Why every dev wants to be a farmer (and why that’s delusional)\n\nWhether you’re considering college, hiring devs, or already knee-deep in student debt, this conversation pulls no punches and may just change how you think about education, hiring, and the future of software development.\n\n⸻\n\n\n📌 Chapters:\n0:00 intro \n2:05 is college still worth it in 2025? \n5:48 the cost of college in the U.S. vs Europe \n6:57 sponsor: CodeRabbit \n7:42 good point\n9:10 DHH explains the Danish education system \n13:02 is college just a luxury cruise? \n17:45 what are you actually buying with a degree? \n21:20 how companies *really* hire developers \n26:11 Casey’s take: programming should be a trade \n30:40 is college a filter for IQ or just vibes? \n45:50 what skills matter more than a degree \n49:20 how to actually learn to code in 2025 \n53:00 is college redeemable? final thoughts \n57:15 wrap-up & what’s next on the podcast \n\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.\n\n#IsCollegeWorthIt #DHH #CaseyMuratori #DeveloperPodcast #SoftwareEngineering #TechPodcast #BootcampVsCollege #ProgrammerLife #TechCareers #TheStartupPodcast", "DHH IS RIGHT ABOUT EVERYTHING (Again)?", 3905, false, "EIBxRMH4bvs", "https://www.youtube.com/watch?v=EIBxRMH4bvs", "/downloads/The Standup/2025-06-06 DHH IS RIGHT ABOUT EVERYTHING (Again)?/DHH IS RIGHT ABOUT EVERYTHING (Again)? [EIBxRMH4bvs].mp4", false, 1, ~U[2025-06-06 14:31:17Z]] 13:59:41.819 [debug] QUERY OK source="sources" db=0.2ms idle=422.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:41.819 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:41.820 [debug] QUERY OK source="media_items" db=0.1ms idle=3.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [51] 13:59:41.820 [info] Kicking off download for media item #51 (EIBxRMH4bvs) 13:59:41.821 [debug] QUERY OK source="tasks" db=0.2ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [55, 51, ~U[2026-07-24 11:59:41Z], ~U[2026-07-24 11:59:41Z]] 13:59:41.822 [debug] Current batch of media processed. Will check again in 1000ms 13:59:42.619 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BRAieTw2Wy9eMkIRajcAchgjNEN1fgx2vCETWU1L9W0x3vfKAJzpMOd5", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:42.822 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\nTimestamps:\n\n0:00 intro / pre-meeting chaos\n1:48 Welcome to The Standup \n3:16 Prime explains his two-PC streaming config\n5:02 Real story: Netflix internal meeting leak scare\n7:00 Why do game devs still use Windows?\n9:23 Misread tweet kicks off Linux vs Windows debate\n10:48 Casey: No one “loves” Windows — they tolerate it\n13:29 Why studios can’t easily switch from Windows\n15:47 IT/security & enterprise restrictions on Linux\n20:15 Why clean-slate devs still choose Windows\n22:22 Debugger superiority on Windows explained\n24:48 Steam Deck & RAD debugger could change the tide\n32:34 Anti-cheat isn’t the main Linux roadblock\n35:01 Why do *you* use Mac or Linux?\n36:47 Prime’s Windows pain & Linux love\n40:26 Linux window managers vs Exposé\n46:29 The fragility of custom Linux setups\n51:09 Web dev has even more breaking changes\n57:27 AI doesn’t fix underlying dev tool problems\n1:00:04 Trash’s hot take on over-optimizing workflows\n1:02:35 Prime explains why he optimizes *everything*\n1:07:30 Valve anecdote: why default setups can be smarter\n1:14:15 Keyboard nerd segment\n1:16:11 Joke outro + how to “save” Windows\n\n\nWhy Do Game Developers STILL Use Windows?? | The Standup\n🎮💻 In this episode of Standup, we dive deep into the eternal operating system war: Windows vs. macOS vs. Linux. Legendary game dev Casey Muratori (of Handmade Hero fame) joins Primeagen, Trash, and Tee to unpack why game developers still use Windows, even when most modern developers swear by Linux or Mac.\n\n📌 Topics We Cover:\n • Why game devs prefer Windows (spoiler: it’s not because they like it)\n • MacOS vs. Linux vs. Windows for developers\n • Is GDB actually garbage?\n • Debugging tools: RAD Debugger, Visual Studio, and why Linux falls short\n • Why enterprise studios can’t just switch to Linux\n • Anti-cheat, Steam Deck, and the future of Linux gaming\n • The unbearable pain of Windows terminals\n • Why developers obsess over window managers and productivity setups\n • And of course… the real debate: should devs optimize everything or just get stuff done?\n\n🔥 Whether you’re a web developer, game dev, Linux power user, or someone just trying to survive corporate IT policies — this one hits every nerve.\n\n👇 DROP YOUR OS HOT TAKES IN THE COMMENTS 👇\n\n#GameDev #WindowsVsLinux #DeveloperPodcast #StandupPodcast #CaseyMuratori #LinuxGaming #DevTools #Primeagen #TechPodcast #Debugging #VisualStudio #MacVsPC #WebDev #SoftwareEngineering #SteamDeck #OpenSource #RADDebugger", "duration" => 4638, "filename" => "/downloads/The Standup/2025-05-30 Why Use Windows??/Why Use Windows?? [M2ZW4uwxU8k].mp4", "id" => "M2ZW4uwxU8k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=M2ZW4uwxU8k", "playlist_index" => 52, "timestamp" => 1748615015, "title" => "Why Use Windows??", "upload_date" => "20250530"} 13:59:42.823 [debug] QUERY OK source="sources" db=0.3ms idle=1002.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:42.823 [debug] QUERY OK source="sources" db=0.1ms idle=1002.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:42.824 [debug] QUERY OK source="media_items" db=0.2ms idle=1002.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-30 14:23:35Z], 1] 13:59:42.825 [debug] QUERY OK source="media_items" db=1.1ms idle=1002.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\nTimestamps:\n\n0:00 intro / pre-meeting chaos\n1:48 Welcome to The Standup \n3:16 Prime explains his two-PC streaming config\n5:02 Real story: Netflix internal meeting leak scare\n7:00 Why do game devs still use Windows?\n9:23 Misread tweet kicks off Linux vs Windows debate\n10:48 Casey: No one “loves” Windows — they tolerate it\n13:29 Why studios can’t easily switch from Windows\n15:47 IT/security & enterprise restrictions on Linux\n20:15 Why clean-slate devs still choose Windows\n22:22 Debugger superiority on Windows explained\n24:48 Steam Deck & RAD debugger could change the tide\n32:34 Anti-cheat isn’t the main Linux roadblock\n35:01 Why do *you* use Mac or Linux?\n36:47 Prime’s Windows pain & Linux love\n40:26 Linux window managers vs Exposé\n46:29 The fragility of custom Linux setups\n51:09 Web dev has even more breaking changes\n57:27 AI doesn’t fix underlying dev tool problems\n1:00:04 Trash’s hot take on over-optimizing workflows\n1:02:35 Prime explains why he optimizes *everything*\n1:07:30 Valve anecdote: why default setups can be smarter\n1:14:15 Keyboard nerd segment\n1:16:11 Joke outro + how to “save” Windows\n\n\nWhy Do Game Developers STILL Use Windows?? | The Standup\n🎮💻 In this episode of Standup, we dive deep into the eternal operating system war: Windows vs. macOS vs. Linux. Legendary game dev Casey Muratori (of Handmade Hero fame) joins Primeagen, Trash, and Tee to unpack why game developers still use Windows, even when most modern developers swear by Linux or Mac.\n\n📌 Topics We Cover:\n • Why game devs prefer Windows (spoiler: it’s not because they like it)\n • MacOS vs. Linux vs. Windows for developers\n • Is GDB actually garbage?\n • Debugging tools: RAD Debugger, Visual Studio, and why Linux falls short\n • Why enterprise studios can’t just switch to Linux\n • Anti-cheat, Steam Deck, and the future of Linux gaming\n • The unbearable pain of Windows terminals\n • Why developers obsess over window managers and productivity setups\n • And of course… the real debate: should devs optimize everything or just get stuff done?\n\n🔥 Whether you’re a web developer, game dev, Linux power user, or someone just trying to survive corporate IT policies — this one hits every nerve.\n\n👇 DROP YOUR OS HOT TAKES IN THE COMMENTS 👇\n\n#GameDev #WindowsVsLinux #DeveloperPodcast #StandupPodcast #CaseyMuratori #LinuxGaming #DevTools #Primeagen #TechPodcast #Debugging #VisualStudio #MacVsPC #WebDev #SoftwareEngineering #SteamDeck #OpenSource #RADDebugger", "Why Use Windows??", "ea79e190-e9d7-4633-a36b-cbd2e4cf90e9", 4638, false, "M2ZW4uwxU8k", "https://www.youtube.com/watch?v=M2ZW4uwxU8k", 52, "/downloads/The Standup/2025-05-30 Why Use Windows??/Why Use Windows?? [M2ZW4uwxU8k].mp4", false, false, false, 1, [], 0, ~U[2025-05-30 14:23:35Z], ~U[2026-07-24 11:59:42Z], ~U[2026-07-24 11:59:42Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\nTimestamps:\n\n0:00 intro / pre-meeting chaos\n1:48 Welcome to The Standup \n3:16 Prime explains his two-PC streaming config\n5:02 Real story: Netflix internal meeting leak scare\n7:00 Why do game devs still use Windows?\n9:23 Misread tweet kicks off Linux vs Windows debate\n10:48 Casey: No one “loves” Windows — they tolerate it\n13:29 Why studios can’t easily switch from Windows\n15:47 IT/security & enterprise restrictions on Linux\n20:15 Why clean-slate devs still choose Windows\n22:22 Debugger superiority on Windows explained\n24:48 Steam Deck & RAD debugger could change the tide\n32:34 Anti-cheat isn’t the main Linux roadblock\n35:01 Why do *you* use Mac or Linux?\n36:47 Prime’s Windows pain & Linux love\n40:26 Linux window managers vs Exposé\n46:29 The fragility of custom Linux setups\n51:09 Web dev has even more breaking changes\n57:27 AI doesn’t fix underlying dev tool problems\n1:00:04 Trash’s hot take on over-optimizing workflows\n1:02:35 Prime explains why he optimizes *everything*\n1:07:30 Valve anecdote: why default setups can be smarter\n1:14:15 Keyboard nerd segment\n1:16:11 Joke outro + how to “save” Windows\n\n\nWhy Do Game Developers STILL Use Windows?? | The Standup\n🎮💻 In this episode of Standup, we dive deep into the eternal operating system war: Windows vs. macOS vs. Linux. Legendary game dev Casey Muratori (of Handmade Hero fame) joins Primeagen, Trash, and Tee to unpack why game developers still use Windows, even when most modern developers swear by Linux or Mac.\n\n📌 Topics We Cover:\n • Why game devs prefer Windows (spoiler: it’s not because they like it)\n • MacOS vs. Linux vs. Windows for developers\n • Is GDB actually garbage?\n • Debugging tools: RAD Debugger, Visual Studio, and why Linux falls short\n • Why enterprise studios can’t just switch to Linux\n • Anti-cheat, Steam Deck, and the future of Linux gaming\n • The unbearable pain of Windows terminals\n • Why developers obsess over window managers and productivity setups\n • And of course… the real debate: should devs optimize everything or just get stuff done?\n\n🔥 Whether you’re a web developer, game dev, Linux power user, or someone just trying to survive corporate IT policies — this one hits every nerve.\n\n👇 DROP YOUR OS HOT TAKES IN THE COMMENTS 👇\n\n#GameDev #WindowsVsLinux #DeveloperPodcast #StandupPodcast #CaseyMuratori #LinuxGaming #DevTools #Primeagen #TechPodcast #Debugging #VisualStudio #MacVsPC #WebDev #SoftwareEngineering #SteamDeck #OpenSource #RADDebugger", "Why Use Windows??", 4638, false, "M2ZW4uwxU8k", "https://www.youtube.com/watch?v=M2ZW4uwxU8k", "/downloads/The Standup/2025-05-30 Why Use Windows??/Why Use Windows?? [M2ZW4uwxU8k].mp4", false, 1, ~U[2025-05-30 14:23:35Z]] 13:59:42.826 [debug] QUERY OK source="sources" db=0.3ms idle=427.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:42.826 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:42.827 [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 [52] 13:59:42.827 [info] Kicking off download for media item #52 (M2ZW4uwxU8k) 13:59:42.828 [debug] QUERY OK source="tasks" db=0.1ms idle=2.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [56, 52, ~U[2026-07-24 11:59:42Z], ~U[2026-07-24 11:59:42Z]] 13:59:42.828 [debug] Current batch of media processed. Will check again in 1000ms 13:59:42.940 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LCACdxE3BVMGMyUxNzg1bDtZKF8McFAp_seZzTo0aVWXnySUb0fl4A8j", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 13:59:42.952 [debug] MOUNT PinchflatWeb.Sources.SourceLive.IndexTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "initial_sort_direction" => :asc, "initial_sort_key" => :custom_name, "results_per_page" => 10} 13:59:42.952 [debug] QUERY OK source="sources" db=0.4ms idle=125.5ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 13:59:42.954 [debug] QUERY OK source="sources" db=1.0ms idle=125.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 13:59:42.954 [debug] Replied in 2ms 13:59:42.955 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 13:59:42.955 [debug] Replied in 71µs 13:59:43.829 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\n\n📘 Carson’s book: https://hypermedia.systems\n🧠 Grug Brained Dev: https://grugbrain.dev\n\nTimestamps:\n \n0:00 Intro & chaos before the call\n1:45 Meet Carson Gross (HTMX creator & professor)\n3:29 What is \"Coding Dirty\"?\n5:12 Why Carson hates small methods\n7:24 The myth of clean code and method size\n10:06 What the data actually says about long functions\n13:11 Why abstraction is not free\n15:06 Long vs short functions: maintainability & changeability\n18:00 Why small functions make debugging harder\n21:34 Beautiful at any size: the case for fat functions\n24:19 The myth of good naming solving complexity\n26:55 TDD, unit tests, and when they help vs hurt\n35:39 End-to-end testing: the good, the bad, the bloated\n43:23 Meme culture, cringe, and developer humor\n\n\n🎙️ Standup Ep. 9: Breaking Clean Code | The Case for Big Functions, Fewer Tests & Cringe Memes\nIn this episode of The Standup, the team is joined by a professor, framework author, and meme artisan to challenge everything you think you know about writing good code. From clean code myths to giant functions, unit testing philosophy, and the value of being strategically cringe, this one is pure gold.\n📘 Bonus: Hear about the book Hypermedia Systems, writing with HTMX, and how software was meant to be written.\n💬 If you've ever wondered why your code feels overcomplicated or why your test suite is a nightmare, this conversation is for you.\n\n\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com\n🎥 Produced by Terminal Media\n\n#cleancode #HTMX #CodingPhilosophy #SoftwareDevelopment #WebDev #UnitTesting #BigFunctions #CodingMemes #SoftwareEngineering #DevelopersDevelopersDevelopers #TechPodcast #TheStandup", "duration" => 4182, "filename" => "/downloads/The Standup/2025-05-26 Don't Clean Code w⧸ Creator of HTMX/Don't Clean Code w⧸ Creator of HTMX [hQJcGmWXDJw].mp4", "id" => "hQJcGmWXDJw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hQJcGmWXDJw", "playlist_index" => 53, "timestamp" => 1748275150, "title" => "Don't Clean Code w/ Creator of HTMX", "upload_date" => "20250526"} 13:59:43.830 [debug] QUERY OK source="sources" db=0.2ms 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" IN (?)) [1] 13:59:43.830 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [1] 13:59:43.830 [debug] QUERY OK source="media_items" db=0.1ms idle=877.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-26 15:59:10Z], 1] 13:59:43.832 [debug] QUERY OK source="media_items" db=1.3ms idle=877.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\n\n📘 Carson’s book: https://hypermedia.systems\n🧠 Grug Brained Dev: https://grugbrain.dev\n\nTimestamps:\n \n0:00 Intro & chaos before the call\n1:45 Meet Carson Gross (HTMX creator & professor)\n3:29 What is \"Coding Dirty\"?\n5:12 Why Carson hates small methods\n7:24 The myth of clean code and method size\n10:06 What the data actually says about long functions\n13:11 Why abstraction is not free\n15:06 Long vs short functions: maintainability & changeability\n18:00 Why small functions make debugging harder\n21:34 Beautiful at any size: the case for fat functions\n24:19 The myth of good naming solving complexity\n26:55 TDD, unit tests, and when they help vs hurt\n35:39 End-to-end testing: the good, the bad, the bloated\n43:23 Meme culture, cringe, and developer humor\n\n\n🎙️ Standup Ep. 9: Breaking Clean Code | The Case for Big Functions, Fewer Tests & Cringe Memes\nIn this episode of The Standup, the team is joined by a professor, framework author, and meme artisan to challenge everything you think you know about writing good code. From clean code myths to giant functions, unit testing philosophy, and the value of being strategically cringe, this one is pure gold.\n📘 Bonus: Hear about the book Hypermedia Systems, writing with HTMX, and how software was meant to be written.\n💬 If you've ever wondered why your code feels overcomplicated or why your test suite is a nightmare, this conversation is for you.\n\n\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com\n🎥 Produced by Terminal Media\n\n#cleancode #HTMX #CodingPhilosophy #SoftwareDevelopment #WebDev #UnitTesting #BigFunctions #CodingMemes #SoftwareEngineering #DevelopersDevelopersDevelopers #TechPodcast #TheStandup", "Don't Clean Code w/ Creator of HTMX", "eecfcd9d-aaa3-4adb-ad66-7452ab560ffd", 4182, false, "hQJcGmWXDJw", "https://www.youtube.com/watch?v=hQJcGmWXDJw", 53, "/downloads/The Standup/2025-05-26 Don't Clean Code w⧸ Creator of HTMX/Don't Clean Code w⧸ Creator of HTMX [hQJcGmWXDJw].mp4", false, false, false, 1, [], 0, ~U[2025-05-26 15:59:10Z], ~U[2026-07-24 11:59:43Z], ~U[2026-07-24 11:59:43Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\n\n📘 Carson’s book: https://hypermedia.systems\n🧠 Grug Brained Dev: https://grugbrain.dev\n\nTimestamps:\n \n0:00 Intro & chaos before the call\n1:45 Meet Carson Gross (HTMX creator & professor)\n3:29 What is \"Coding Dirty\"?\n5:12 Why Carson hates small methods\n7:24 The myth of clean code and method size\n10:06 What the data actually says about long functions\n13:11 Why abstraction is not free\n15:06 Long vs short functions: maintainability & changeability\n18:00 Why small functions make debugging harder\n21:34 Beautiful at any size: the case for fat functions\n24:19 The myth of good naming solving complexity\n26:55 TDD, unit tests, and when they help vs hurt\n35:39 End-to-end testing: the good, the bad, the bloated\n43:23 Meme culture, cringe, and developer humor\n\n\n🎙️ Standup Ep. 9: Breaking Clean Code | The Case for Big Functions, Fewer Tests & Cringe Memes\nIn this episode of The Standup, the team is joined by a professor, framework author, and meme artisan to challenge everything you think you know about writing good code. From clean code myths to giant functions, unit testing philosophy, and the value of being strategically cringe, this one is pure gold.\n📘 Bonus: Hear about the book Hypermedia Systems, writing with HTMX, and how software was meant to be written.\n💬 If you've ever wondered why your code feels overcomplicated or why your test suite is a nightmare, this conversation is for you.\n\n\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com\n🎥 Produced by Terminal Media\n\n#cleancode #HTMX #CodingPhilosophy #SoftwareDevelopment #WebDev #UnitTesting #BigFunctions #CodingMemes #SoftwareEngineering #DevelopersDevelopersDevelopers #TechPodcast #TheStandup", "Don't Clean Code w/ Creator of HTMX", 4182, false, "hQJcGmWXDJw", "https://www.youtube.com/watch?v=hQJcGmWXDJw", "/downloads/The Standup/2025-05-26 Don't Clean Code w⧸ Creator of HTMX/Don't Clean Code w⧸ Creator of HTMX [hQJcGmWXDJw].mp4", false, 1, ~U[2025-05-26 15:59:10Z]] 13:59:43.833 [debug] QUERY OK source="sources" db=0.1ms idle=432.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:43.833 [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] 13:59:43.834 [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 [53] 13:59:43.834 [info] Kicking off download for media item #53 (hQJcGmWXDJw) 13:59:43.836 [debug] QUERY OK source="tasks" db=0.3ms idle=2.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [57, 53, ~U[2026-07-24 11:59:43Z], ~U[2026-07-24 11:59:43Z]] 13:59:43.836 [debug] Current batch of media processed. Will check again in 1000ms 13:59:44.837 [debug] Current batch of media processed. Will check again in 1000ms 13:59:45.838 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\nTimestamps:\n0:00 – Intro & Time Zone Debate\n1:27 – Meet Dax: New Guest Introduction\n2:29 – Elizabeth Holmes' Partner Starts a New Blood Testing Company\n7:56 – New Pretty URL Browser: Scam Risks & Usability\n13:39 – Are Clean URLs Safer or More Deceptive for Normies?\n15:52 – Dax Rants About Airbnb CEO Brian Chesky\n21:07 – Why Airbnb Experiences Might Fail\n25:00 – “Trash is a Flat Earther?” \n30:16 – Absurd Airbnb Quotes About Steve Jobs\n34:00 – Coinbase Hack: $20M Bounty Instead of Ransom\n35:44 – Closing Roast: Founders With “Show Muscles”\n\n\n🎙️ Standup Podcast Ep. 8: Dax Unfiltered | Behind the Viral Clips, Burnout, and the Creator Grind\nIn this episode of The Standup, we sit down with Dax, a powerhouse creator known for his viral content and unapologetic personality. We go deep on what it takes to stay relevant in today’s social media landscape, the pressure of staying creative, and the hidden cost of internet fame.\n\n\n💡 Keywords: Dax interview, The Standup podcast, creator burnout, viral content strategy, YouTube growth 2025, TikTok algorithm secrets, how to stay relevant as a content creator, building a content brand\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com🎥 Produced by Terminal Media\n#Dax #TheStandupPodcast", "duration" => 2228, "filename" => "/downloads/The Standup/2025-05-23 New Design Meta? URLs are dead? - Standup #8/New Design Meta? URLs are dead? - Standup #8 [CUknkajygOU].mp4", "id" => "CUknkajygOU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CUknkajygOU", "playlist_index" => 54, "timestamp" => 1748019389, "title" => "New Design Meta? URLs are dead? - Standup #8", "upload_date" => "20250523"} 13:59:45.839 [debug] QUERY OK source="sources" db=0.3ms idle=805.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:45.839 [debug] QUERY OK source="sources" db=0.3ms idle=805.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:45.840 [debug] QUERY OK source="media_items" db=0.3ms idle=806.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-23 16:56:29Z], 1] 13:59:45.842 [debug] QUERY OK source="media_items" db=1.2ms idle=807.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\nTimestamps:\n0:00 – Intro & Time Zone Debate\n1:27 – Meet Dax: New Guest Introduction\n2:29 – Elizabeth Holmes' Partner Starts a New Blood Testing Company\n7:56 – New Pretty URL Browser: Scam Risks & Usability\n13:39 – Are Clean URLs Safer or More Deceptive for Normies?\n15:52 – Dax Rants About Airbnb CEO Brian Chesky\n21:07 – Why Airbnb Experiences Might Fail\n25:00 – “Trash is a Flat Earther?” \n30:16 – Absurd Airbnb Quotes About Steve Jobs\n34:00 – Coinbase Hack: $20M Bounty Instead of Ransom\n35:44 – Closing Roast: Founders With “Show Muscles”\n\n\n🎙️ Standup Podcast Ep. 8: Dax Unfiltered | Behind the Viral Clips, Burnout, and the Creator Grind\nIn this episode of The Standup, we sit down with Dax, a powerhouse creator known for his viral content and unapologetic personality. We go deep on what it takes to stay relevant in today’s social media landscape, the pressure of staying creative, and the hidden cost of internet fame.\n\n\n💡 Keywords: Dax interview, The Standup podcast, creator burnout, viral content strategy, YouTube growth 2025, TikTok algorithm secrets, how to stay relevant as a content creator, building a content brand\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com🎥 Produced by Terminal Media\n#Dax #TheStandupPodcast", "New Design Meta? URLs are dead? - Standup #8", "35b6545e-734c-434d-9e24-e2385ca16bbe", 2228, false, "CUknkajygOU", "https://www.youtube.com/watch?v=CUknkajygOU", 54, "/downloads/The Standup/2025-05-23 New Design Meta? URLs are dead? - Standup #8/New Design Meta? URLs are dead? - Standup #8 [CUknkajygOU].mp4", false, false, false, 1, [], 0, ~U[2025-05-23 16:56:29Z], ~U[2026-07-24 11:59:45Z], ~U[2026-07-24 11:59:45Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\nTimestamps:\n0:00 – Intro & Time Zone Debate\n1:27 – Meet Dax: New Guest Introduction\n2:29 – Elizabeth Holmes' Partner Starts a New Blood Testing Company\n7:56 – New Pretty URL Browser: Scam Risks & Usability\n13:39 – Are Clean URLs Safer or More Deceptive for Normies?\n15:52 – Dax Rants About Airbnb CEO Brian Chesky\n21:07 – Why Airbnb Experiences Might Fail\n25:00 – “Trash is a Flat Earther?” \n30:16 – Absurd Airbnb Quotes About Steve Jobs\n34:00 – Coinbase Hack: $20M Bounty Instead of Ransom\n35:44 – Closing Roast: Founders With “Show Muscles”\n\n\n🎙️ Standup Podcast Ep. 8: Dax Unfiltered | Behind the Viral Clips, Burnout, and the Creator Grind\nIn this episode of The Standup, we sit down with Dax, a powerhouse creator known for his viral content and unapologetic personality. We go deep on what it takes to stay relevant in today’s social media landscape, the pressure of staying creative, and the hidden cost of internet fame.\n\n\n💡 Keywords: Dax interview, The Standup podcast, creator burnout, viral content strategy, YouTube growth 2025, TikTok algorithm secrets, how to stay relevant as a content creator, building a content brand\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com🎥 Produced by Terminal Media\n#Dax #TheStandupPodcast", "New Design Meta? URLs are dead? - Standup #8", 2228, false, "CUknkajygOU", "https://www.youtube.com/watch?v=CUknkajygOU", "/downloads/The Standup/2025-05-23 New Design Meta? URLs are dead? - Standup #8/New Design Meta? URLs are dead? - Standup #8 [CUknkajygOU].mp4", false, 1, ~U[2025-05-23 16:56:29Z]] 13:59:45.842 [debug] QUERY OK source="sources" db=0.3ms idle=439.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:45.843 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:45.844 [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 [54] 13:59:45.844 [info] Kicking off download for media item #54 (CUknkajygOU) 13:59:45.849 [debug] QUERY OK source="tasks" db=0.3ms idle=6.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [58, 54, ~U[2026-07-24 11:59:45Z], ~U[2026-07-24 11:59:45Z]] 13:59:45.849 [debug] Current batch of media processed. Will check again in 1000ms 13:59:46.850 [debug] Current batch of media processed. Will check again in 1000ms 13:59:47.851 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nTimestamps\n0:00 Streaming Woes Begin\n0:40 Tech Chaos Recap\n1:22 Prime’s Streaming PC Half-Shutdown\n2:04 Modern Software is a Mess\n3:40 Prime’s Grub Boot Fail\n5:35 Debugging Live\n6:35 Prime’s Linux Setup Style\n7:15 Prime Bricked His Machine\n8:55 AI Won’t Take Jobs — Just Break PCs\n10:06 Confused by Sway vs DE\n11:43 Composite Deez Nuts\n12:34 Top Comment Will Explain It\n14:29 Randall Speech-to-Text Trick\n15:19 PewDiePie vs Prime\n16:52 Chat Paste Mode\n18:20 Pewds or Peudes?\n19:02 Prime’s Journaling Adventure\n22:06 Keyboard Layout Pain\n24:36 Emacs vs Vim Pain\n25:43 GNU+Linux Correction\n26:14 Casey’s Pinky Journey\n27:17 Anders the Typing Wizard\n28:36 Emacs Was a Weighted Bat\n29:18 Real Question: Why Linux?\n31:28 Buddhism & Mac Mindset\n33:48 Forced Cortana Reinstalls\n34:59 Windows Losing Its Edge\n35:48 Plug-and-Play Linux\n38:46 Nvidia vs AMD on Linux\n40:14 Prime’s Login Hope\n42:47 The Real Linux Desktop Experience\n43:45 The Bald Eagle Spiral\n46:58 Why Is Software Like This?\n47:41 Ending in Pain\n\n🎙️ The Standup Ep. 7 – The Linux Desktop Apocalypse, OBS Mayhem, and the Bald Eagle Sex Spiral.\n\nIn this chaotic and hilarious episode of The Standup, the crew dives deep into the reality of running Linux in 2024, bricking systems live on stream, and the painful truth behind modern developer tooling. From bootloader disasters to OBS crashes, this episode captures the true experience of developers trying to “just get things working” — and failing spectacularly.\n\n Featuring real-time Linux troubleshooting, software fails, and priceless developer banter, Ep. 7 is both a comedy of errors and a relatable journey for every dev who’s dared to install Arch.\n\n👨\u200D💻 Topics covered:\n • Live Linux install gone wrong 😬\n • OBS crashes, Stream Deck failures, and power button accidents\n • The real reason modern software is unreliable\n • PewDiePie’s switch to Arch Linux 💥\n • Keyboard layout injuries & pinky pain from Emacs and Vim\n • What the heck is a compositor vs. window manager?\n • Windows vs Mac vs Linux in 2024 🪟🍎🐧\n • And of course… the Bald Eagle Sex Spiral 🦅\n\n🔍 Keywords:\nLinux fail, Arch Linux install, OBS crash, Stream Deck, Windows update rant, dev podcast, software development comedy, PewDiePie Linux, Emacs vs Vim, pinky pain devs, KDE vs GNOME, compositor vs window manager, year of the Linux desktop, developer burnout, live Linux debugging, Ubuntu vs Arch, dev setup fails, Linux install live stream\n\n#Linux #ArchLinux #OBS #DeveloperLife #TechPodcast #SoftwareFails #TheStandup", "duration" => 2895, "filename" => "/downloads/The Standup/2025-05-19 ThePrimeagen's Arch Experience - Standup #7/ThePrimeagen's Arch Experience - Standup #7 [NMgruCb5oWE].mp4", "id" => "NMgruCb5oWE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NMgruCb5oWE", "playlist_index" => 55, "timestamp" => 1747656042, "title" => "ThePrimeagen's Arch Experience - Standup #7", "upload_date" => "20250519"} 13:59:47.852 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=818.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:47.853 [debug] QUERY OK source="sources" db=0.3ms idle=819.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:47.853 [debug] QUERY OK source="media_items" db=0.3ms idle=819.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-19 12:00:42Z], 1] 13:59:47.855 [debug] QUERY OK source="media_items" db=1.4ms idle=820.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nTimestamps\n0:00 Streaming Woes Begin\n0:40 Tech Chaos Recap\n1:22 Prime’s Streaming PC Half-Shutdown\n2:04 Modern Software is a Mess\n3:40 Prime’s Grub Boot Fail\n5:35 Debugging Live\n6:35 Prime’s Linux Setup Style\n7:15 Prime Bricked His Machine\n8:55 AI Won’t Take Jobs — Just Break PCs\n10:06 Confused by Sway vs DE\n11:43 Composite Deez Nuts\n12:34 Top Comment Will Explain It\n14:29 Randall Speech-to-Text Trick\n15:19 PewDiePie vs Prime\n16:52 Chat Paste Mode\n18:20 Pewds or Peudes?\n19:02 Prime’s Journaling Adventure\n22:06 Keyboard Layout Pain\n24:36 Emacs vs Vim Pain\n25:43 GNU+Linux Correction\n26:14 Casey’s Pinky Journey\n27:17 Anders the Typing Wizard\n28:36 Emacs Was a Weighted Bat\n29:18 Real Question: Why Linux?\n31:28 Buddhism & Mac Mindset\n33:48 Forced Cortana Reinstalls\n34:59 Windows Losing Its Edge\n35:48 Plug-and-Play Linux\n38:46 Nvidia vs AMD on Linux\n40:14 Prime’s Login Hope\n42:47 The Real Linux Desktop Experience\n43:45 The Bald Eagle Spiral\n46:58 Why Is Software Like This?\n47:41 Ending in Pain\n\n🎙️ The Standup Ep. 7 – The Linux Desktop Apocalypse, OBS Mayhem, and the Bald Eagle Sex Spiral.\n\nIn this chaotic and hilarious episode of The Standup, the crew dives deep into the reality of running Linux in 2024, bricking systems live on stream, and the painful truth behind modern developer tooling. From bootloader disasters to OBS crashes, this episode captures the true experience of developers trying to “just get things working” — and failing spectacularly.\n\n Featuring real-time Linux troubleshooting, software fails, and priceless developer banter, Ep. 7 is both a comedy of errors and a relatable journey for every dev who’s dared to install Arch.\n\n👨\u200D💻 Topics covered:\n • Live Linux install gone wrong 😬\n • OBS crashes, Stream Deck failures, and power button accidents\n • The real reason modern software is unreliable\n • PewDiePie’s switch to Arch Linux 💥\n • Keyboard layout injuries & pinky pain from Emacs and Vim\n • What the heck is a compositor vs. window manager?\n • Windows vs Mac vs Linux in 2024 🪟🍎🐧\n • And of course… the Bald Eagle Sex Spiral 🦅\n\n🔍 Keywords:\nLinux fail, Arch Linux install, OBS crash, Stream Deck, Windows update rant, dev podcast, software development comedy, PewDiePie Linux, Emacs vs Vim, pinky pain devs, KDE vs GNOME, compositor vs window manager, year of the Linux desktop, developer burnout, live Linux debugging, Ubuntu vs Arch, dev setup fails, Linux install live stream\n\n#Linux #ArchLinux #OBS #DeveloperLife #TechPodcast #SoftwareFails #TheStandup", "ThePrimeagen's Arch Experience - Standup #7", "05fa89d6-2063-471b-a63b-94d977b32ffd", 2895, false, "NMgruCb5oWE", "https://www.youtube.com/watch?v=NMgruCb5oWE", 55, "/downloads/The Standup/2025-05-19 ThePrimeagen's Arch Experience - Standup #7/ThePrimeagen's Arch Experience - Standup #7 [NMgruCb5oWE].mp4", false, false, false, 1, [], 0, ~U[2025-05-19 12:00:42Z], ~U[2026-07-24 11:59:47Z], ~U[2026-07-24 11:59:47Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nTimestamps\n0:00 Streaming Woes Begin\n0:40 Tech Chaos Recap\n1:22 Prime’s Streaming PC Half-Shutdown\n2:04 Modern Software is a Mess\n3:40 Prime’s Grub Boot Fail\n5:35 Debugging Live\n6:35 Prime’s Linux Setup Style\n7:15 Prime Bricked His Machine\n8:55 AI Won’t Take Jobs — Just Break PCs\n10:06 Confused by Sway vs DE\n11:43 Composite Deez Nuts\n12:34 Top Comment Will Explain It\n14:29 Randall Speech-to-Text Trick\n15:19 PewDiePie vs Prime\n16:52 Chat Paste Mode\n18:20 Pewds or Peudes?\n19:02 Prime’s Journaling Adventure\n22:06 Keyboard Layout Pain\n24:36 Emacs vs Vim Pain\n25:43 GNU+Linux Correction\n26:14 Casey’s Pinky Journey\n27:17 Anders the Typing Wizard\n28:36 Emacs Was a Weighted Bat\n29:18 Real Question: Why Linux?\n31:28 Buddhism & Mac Mindset\n33:48 Forced Cortana Reinstalls\n34:59 Windows Losing Its Edge\n35:48 Plug-and-Play Linux\n38:46 Nvidia vs AMD on Linux\n40:14 Prime’s Login Hope\n42:47 The Real Linux Desktop Experience\n43:45 The Bald Eagle Spiral\n46:58 Why Is Software Like This?\n47:41 Ending in Pain\n\n🎙️ The Standup Ep. 7 – The Linux Desktop Apocalypse, OBS Mayhem, and the Bald Eagle Sex Spiral.\n\nIn this chaotic and hilarious episode of The Standup, the crew dives deep into the reality of running Linux in 2024, bricking systems live on stream, and the painful truth behind modern developer tooling. From bootloader disasters to OBS crashes, this episode captures the true experience of developers trying to “just get things working” — and failing spectacularly.\n\n Featuring real-time Linux troubleshooting, software fails, and priceless developer banter, Ep. 7 is both a comedy of errors and a relatable journey for every dev who’s dared to install Arch.\n\n👨\u200D💻 Topics covered:\n • Live Linux install gone wrong 😬\n • OBS crashes, Stream Deck failures, and power button accidents\n • The real reason modern software is unreliable\n • PewDiePie’s switch to Arch Linux 💥\n • Keyboard layout injuries & pinky pain from Emacs and Vim\n • What the heck is a compositor vs. window manager?\n • Windows vs Mac vs Linux in 2024 🪟🍎🐧\n • And of course… the Bald Eagle Sex Spiral 🦅\n\n🔍 Keywords:\nLinux fail, Arch Linux install, OBS crash, Stream Deck, Windows update rant, dev podcast, software development comedy, PewDiePie Linux, Emacs vs Vim, pinky pain devs, KDE vs GNOME, compositor vs window manager, year of the Linux desktop, developer burnout, live Linux debugging, Ubuntu vs Arch, dev setup fails, Linux install live stream\n\n#Linux #ArchLinux #OBS #DeveloperLife #TechPodcast #SoftwareFails #TheStandup", "ThePrimeagen's Arch Experience - Standup #7", 2895, false, "NMgruCb5oWE", "https://www.youtube.com/watch?v=NMgruCb5oWE", "/downloads/The Standup/2025-05-19 ThePrimeagen's Arch Experience - Standup #7/ThePrimeagen's Arch Experience - Standup #7 [NMgruCb5oWE].mp4", false, 1, ~U[2025-05-19 12:00:42Z]] 13:59:47.856 [debug] QUERY OK source="sources" db=0.3ms idle=450.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:47.857 [debug] QUERY OK source="media_profiles" db=0.8ms queue=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] 13:59:47.858 [debug] QUERY OK source="media_items" db=0.5ms idle=4.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [55] 13:59:47.858 [info] Kicking off download for media item #55 (NMgruCb5oWE) 13:59:47.860 [debug] QUERY OK source="tasks" db=0.1ms idle=4.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [59, 55, ~U[2026-07-24 11:59:47Z], ~U[2026-07-24 11:59:47Z]] 13:59:47.860 [debug] Current batch of media processed. Will check again in 1000ms 13:59:48.085 [info] {"source":"oban","duration":578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:48.861 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nChapters\n0:00 Show Intro \n1:54 PRIME ON TDD\n4:32 Trash’s Thoughts \n7:27 Casey on TDD vs OOP \n11:03 Bugs Despite TDD \n11:39 TJ Gets IN \n15:31 Prime Pushes Back \n16:20 Refactoring Woes\n17:00 WTF IS WRONG WITH TRASH\n20:02 Missed Bug Story \n22:55 PDD Explained \n27:00 NeoVim Test Suite\n34:00 Testing by Project \n38:42 Code Coverage Feels \n40:06 WHY DID PRIME DO THAT\n43:05 Signing Off \n\nIs Test-Driven Development a Waste of Time? | The Standup Podcast Ep. 6\n🔥 In this episode of The Standup, the crew dives deep into one of the most debated practices in software engineering: Test-Driven Development (TDD). Is TDD still relevant in modern development? Does it improve code quality, or does it waste precious dev time?\n👨\u200D💻 Featuring developers with strong and hilarious opinions — including Primeagen, Trash Dev, TJ, and Casey Muratori — this roundtable conversation covers:\nReal-world pros and cons of TDD\nGolden/snapshot testing explained (and roasted)\nWhen to test before vs. after writing code\nHow TDD affects API design, architecture, and mental sanity\nStories from the trenches at Netflix, Neovim, and beyond\nPerformance-Driven Development (PDD)? Yes, that’s a thing now.\nThe infamous Falkor bug that could’ve taken down Netflix 😳\n \nKeywords:\nTDD debate, is TDD dead, test-driven development podcast, software engineering discussion, developer podcast, snapshot testing, golden testing, Neovim testing, Primeagen podcast, Netflix developer stories, backend architecture, software testing strategies, code quality vs velocity, performance-driven development, test coverage myths\n\n\n#TDD #SoftwareEngineering #DeveloperPodcast #Primeagen #Neovim #BackendDev #Testing", "duration" => 2685, "filename" => "/downloads/The Standup/2025-05-13 How BAD Is Test Driven Development? - The Standup #6/How BAD Is Test Driven Development? - The Standup #6 [kJWsFWY25GA].mp4", "id" => "kJWsFWY25GA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kJWsFWY25GA", "playlist_index" => 56, "timestamp" => 1747134071, "title" => "How BAD Is Test Driven Development? - The Standup #6", "upload_date" => "20250513"} 13:59:48.863 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=1002.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:48.865 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1004.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:48.866 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1005.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-13 11:01:11Z], 1] 13:59:48.869 [debug] QUERY OK source="media_items" db=1.9ms idle=781.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nChapters\n0:00 Show Intro \n1:54 PRIME ON TDD\n4:32 Trash’s Thoughts \n7:27 Casey on TDD vs OOP \n11:03 Bugs Despite TDD \n11:39 TJ Gets IN \n15:31 Prime Pushes Back \n16:20 Refactoring Woes\n17:00 WTF IS WRONG WITH TRASH\n20:02 Missed Bug Story \n22:55 PDD Explained \n27:00 NeoVim Test Suite\n34:00 Testing by Project \n38:42 Code Coverage Feels \n40:06 WHY DID PRIME DO THAT\n43:05 Signing Off \n\nIs Test-Driven Development a Waste of Time? | The Standup Podcast Ep. 6\n🔥 In this episode of The Standup, the crew dives deep into one of the most debated practices in software engineering: Test-Driven Development (TDD). Is TDD still relevant in modern development? Does it improve code quality, or does it waste precious dev time?\n👨\u200D💻 Featuring developers with strong and hilarious opinions — including Primeagen, Trash Dev, TJ, and Casey Muratori — this roundtable conversation covers:\nReal-world pros and cons of TDD\nGolden/snapshot testing explained (and roasted)\nWhen to test before vs. after writing code\nHow TDD affects API design, architecture, and mental sanity\nStories from the trenches at Netflix, Neovim, and beyond\nPerformance-Driven Development (PDD)? Yes, that’s a thing now.\nThe infamous Falkor bug that could’ve taken down Netflix 😳\n \nKeywords:\nTDD debate, is TDD dead, test-driven development podcast, software engineering discussion, developer podcast, snapshot testing, golden testing, Neovim testing, Primeagen podcast, Netflix developer stories, backend architecture, software testing strategies, code quality vs velocity, performance-driven development, test coverage myths\n\n\n#TDD #SoftwareEngineering #DeveloperPodcast #Primeagen #Neovim #BackendDev #Testing", "How BAD Is Test Driven Development? - The Standup #6", "cbdf698f-bfc7-4931-ba00-c46c5a82e8c2", 2685, false, "kJWsFWY25GA", "https://www.youtube.com/watch?v=kJWsFWY25GA", 56, "/downloads/The Standup/2025-05-13 How BAD Is Test Driven Development? - The Standup #6/How BAD Is Test Driven Development? - The Standup #6 [kJWsFWY25GA].mp4", false, false, false, 1, [], 0, ~U[2025-05-13 11:01:11Z], ~U[2026-07-24 11:59:48Z], ~U[2026-07-24 11:59:48Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nChapters\n0:00 Show Intro \n1:54 PRIME ON TDD\n4:32 Trash’s Thoughts \n7:27 Casey on TDD vs OOP \n11:03 Bugs Despite TDD \n11:39 TJ Gets IN \n15:31 Prime Pushes Back \n16:20 Refactoring Woes\n17:00 WTF IS WRONG WITH TRASH\n20:02 Missed Bug Story \n22:55 PDD Explained \n27:00 NeoVim Test Suite\n34:00 Testing by Project \n38:42 Code Coverage Feels \n40:06 WHY DID PRIME DO THAT\n43:05 Signing Off \n\nIs Test-Driven Development a Waste of Time? | The Standup Podcast Ep. 6\n🔥 In this episode of The Standup, the crew dives deep into one of the most debated practices in software engineering: Test-Driven Development (TDD). Is TDD still relevant in modern development? Does it improve code quality, or does it waste precious dev time?\n👨\u200D💻 Featuring developers with strong and hilarious opinions — including Primeagen, Trash Dev, TJ, and Casey Muratori — this roundtable conversation covers:\nReal-world pros and cons of TDD\nGolden/snapshot testing explained (and roasted)\nWhen to test before vs. after writing code\nHow TDD affects API design, architecture, and mental sanity\nStories from the trenches at Netflix, Neovim, and beyond\nPerformance-Driven Development (PDD)? Yes, that’s a thing now.\nThe infamous Falkor bug that could’ve taken down Netflix 😳\n \nKeywords:\nTDD debate, is TDD dead, test-driven development podcast, software engineering discussion, developer podcast, snapshot testing, golden testing, Neovim testing, Primeagen podcast, Netflix developer stories, backend architecture, software testing strategies, code quality vs velocity, performance-driven development, test coverage myths\n\n\n#TDD #SoftwareEngineering #DeveloperPodcast #Primeagen #Neovim #BackendDev #Testing", "How BAD Is Test Driven Development? - The Standup #6", 2685, false, "kJWsFWY25GA", "https://www.youtube.com/watch?v=kJWsFWY25GA", "/downloads/The Standup/2025-05-13 How BAD Is Test Driven Development? - The Standup #6/How BAD Is Test Driven Development? - The Standup #6 [kJWsFWY25GA].mp4", false, 1, ~U[2025-05-13 11:01:11Z]] 13:59:48.870 [debug] QUERY OK source="sources" db=0.3ms idle=462.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:48.871 [debug] QUERY OK source="media_profiles" db=0.6ms idle=6.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:48.871 [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 [56] 13:59:48.871 [info] Kicking off download for media item #56 (kJWsFWY25GA) 13:59:48.874 [debug] QUERY OK source="tasks" db=0.1ms idle=4.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [60, 56, ~U[2026-07-24 11:59:48Z], ~U[2026-07-24 11:59:48Z]] 13:59:48.874 [debug] Current batch of media processed. Will check again in 1000ms 13:59:49.875 [debug] Current batch of media processed. Will check again in 1000ms 13:59:50.876 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3446, "filename" => "/downloads/The Standup/2025-04-26 Cheat On Everything - The Standup Ep 5/Cheat On Everything - The Standup Ep 5 [1aarKjyj-x4].mp4", "id" => "1aarKjyj-x4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1aarKjyj-x4", "playlist_index" => 57, "timestamp" => 1745697840, "title" => "Cheat On Everything - The Standup Ep 5", "upload_date" => "20250426"} 13:59:50.878 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=843.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:50.879 [debug] QUERY OK source="sources" db=0.5ms idle=845.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:50.881 [debug] QUERY OK source="media_items" db=1.8ms idle=845.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-26 20:04:00Z], 1] 13:59:50.885 [debug] QUERY OK source="media_items" db=3.5ms idle=848.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Cheat On Everything - The Standup Ep 5", "e3d2b0b4-6c76-4a8f-8f3a-bf7993e83301", 3446, false, "1aarKjyj-x4", "https://www.youtube.com/watch?v=1aarKjyj-x4", 57, "/downloads/The Standup/2025-04-26 Cheat On Everything - The Standup Ep 5/Cheat On Everything - The Standup Ep 5 [1aarKjyj-x4].mp4", false, false, false, 1, [], 0, ~U[2025-04-26 20:04:00Z], ~U[2026-07-24 11:59:50Z], ~U[2026-07-24 11:59:50Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Cheat On Everything - The Standup Ep 5", 3446, false, "1aarKjyj-x4", "https://www.youtube.com/watch?v=1aarKjyj-x4", "/downloads/The Standup/2025-04-26 Cheat On Everything - The Standup Ep 5/Cheat On Everything - The Standup Ep 5 [1aarKjyj-x4].mp4", false, 1, ~U[2025-04-26 20:04:00Z]] 13:59:50.886 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=474.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:50.888 [debug] QUERY OK source="media_profiles" db=0.8ms queue=0.3ms idle=9.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:50.890 [debug] QUERY OK source="media_items" db=0.5ms idle=10.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [57] 13:59:50.890 [info] Kicking off download for media item #57 (1aarKjyj-x4) 13:59:50.893 [debug] QUERY OK source="tasks" db=0.2ms idle=6.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [61, 57, ~U[2026-07-24 11:59:50Z], ~U[2026-07-24 11:59:50Z]] 13:59:50.893 [debug] Current batch of media processed. Will check again in 1000ms 13:59:51.893 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "0:00 - Intro\n0:24 - LLM Lawsuit\n30:46 - Shopify Forces Use Of AI\n50:50 - AI Generated Video Games\n\nTwitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### LINKS \nhttps://x.com/cmuratori\nhttps://x.com/trashh_dev\nhttps://x.com/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 3562, "filename" => "/downloads/The Standup/2025-04-10 This Doesn't Look Good For AI - The Standup - Ep 4/This Doesn't Look Good For AI - The Standup - Ep 4 [nmlkY9e4JjQ].mp4", "id" => "nmlkY9e4JjQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nmlkY9e4JjQ", "playlist_index" => 58, "timestamp" => 1744307579, "title" => "This Doesn't Look Good For AI - The Standup - Ep 4", "upload_date" => "20250410"} 13:59:51.894 [debug] QUERY OK source="sources" db=0.7ms 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 (?)) [1] 13:59:51.895 [debug] QUERY OK source="sources" db=0.9ms idle=1002.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:51.898 [debug] QUERY OK source="media_items" db=2.0ms idle=1003.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-10 17:52:59Z], 1] 13:59:51.900 [debug] QUERY OK source="media_items" db=1.6ms idle=1005.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["0:00 - Intro\n0:24 - LLM Lawsuit\n30:46 - Shopify Forces Use Of AI\n50:50 - AI Generated Video Games\n\nTwitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### LINKS \nhttps://x.com/cmuratori\nhttps://x.com/trashh_dev\nhttps://x.com/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "This Doesn't Look Good For AI - The Standup - Ep 4", "3ed98992-8070-4e9e-a5e6-64d56b285236", 3562, false, "nmlkY9e4JjQ", "https://www.youtube.com/watch?v=nmlkY9e4JjQ", 58, "/downloads/The Standup/2025-04-10 This Doesn't Look Good For AI - The Standup - Ep 4/This Doesn't Look Good For AI - The Standup - Ep 4 [nmlkY9e4JjQ].mp4", false, false, false, 1, [], 0, ~U[2025-04-10 17:52:59Z], ~U[2026-07-24 11:59:51Z], ~U[2026-07-24 11:59:51Z], "0:00 - Intro\n0:24 - LLM Lawsuit\n30:46 - Shopify Forces Use Of AI\n50:50 - AI Generated Video Games\n\nTwitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### LINKS \nhttps://x.com/cmuratori\nhttps://x.com/trashh_dev\nhttps://x.com/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "This Doesn't Look Good For AI - The Standup - Ep 4", 3562, false, "nmlkY9e4JjQ", "https://www.youtube.com/watch?v=nmlkY9e4JjQ", "/downloads/The Standup/2025-04-10 This Doesn't Look Good For AI - The Standup - Ep 4/This Doesn't Look Good For AI - The Standup - Ep 4 [nmlkY9e4JjQ].mp4", false, 1, ~U[2025-04-10 17:52:59Z]] 13:59:51.901 [debug] QUERY OK source="sources" db=0.7ms idle=486.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:51.901 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:51.902 [debug] QUERY OK source="media_items" db=0.6ms 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 [58] 13:59:51.903 [info] Kicking off download for media item #58 (nmlkY9e4JjQ) 13:59:51.907 [debug] QUERY OK source="tasks" db=0.4ms idle=5.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [62, 58, ~U[2026-07-24 11:59:51Z], ~U[2026-07-24 11:59:51Z]] 13:59:51.907 [debug] Current batch of media processed. Will check again in 1000ms 13:59:52.909 [debug] Current batch of media processed. Will check again in 1000ms 13:59:53.910 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "duration" => 1932, "filename" => "/downloads/The Standup/2025-04-03 Making A Game GOOD - The Standup EP 3/Making A Game GOOD - The Standup EP 3 [nCxU-OBoISk].mp4", "id" => "nCxU-OBoISk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nCxU-OBoISk", "playlist_index" => 59, "timestamp" => 1743687972, "title" => "Making A Game GOOD - The Standup EP 3", "upload_date" => "20250403"} 13:59:53.911 [debug] QUERY OK source="sources" db=0.5ms idle=875.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:53.912 [debug] QUERY OK source="sources" db=0.4ms idle=876.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:53.913 [debug] QUERY OK source="media_items" db=0.6ms idle=876.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-03 13:46:12Z], 1] 13:59:53.914 [debug] QUERY OK source="media_items" db=0.7ms idle=877.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Making A Game GOOD - The Standup EP 3", "a7b17008-f5f7-4106-8336-f315fd2f5fbe", 1932, false, "nCxU-OBoISk", "https://www.youtube.com/watch?v=nCxU-OBoISk", 59, "/downloads/The Standup/2025-04-03 Making A Game GOOD - The Standup EP 3/Making A Game GOOD - The Standup EP 3 [nCxU-OBoISk].mp4", false, false, false, 1, [], 0, ~U[2025-04-03 13:46:12Z], ~U[2026-07-24 11:59:53Z], ~U[2026-07-24 11:59:53Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Making A Game GOOD - The Standup EP 3", 1932, false, "nCxU-OBoISk", "https://www.youtube.com/watch?v=nCxU-OBoISk", "/downloads/The Standup/2025-04-03 Making A Game GOOD - The Standup EP 3/Making A Game GOOD - The Standup EP 3 [nCxU-OBoISk].mp4", false, 1, ~U[2025-04-03 13:46:12Z]] 13:59:53.915 [debug] QUERY OK source="sources" db=0.6ms idle=498.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:53.915 [debug] QUERY OK source="media_profiles" db=0.3ms queue=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] 13:59:53.916 [debug] QUERY OK source="media_items" db=0.7ms 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 [59] 13:59:53.916 [info] Kicking off download for media item #59 (nCxU-OBoISk) 13:59:53.929 [debug] QUERY OK source="tasks" db=0.4ms idle=14.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [63, 59, ~U[2026-07-24 11:59:53Z], ~U[2026-07-24 11:59:53Z]] 13:59:53.929 [debug] Current batch of media processed. Will check again in 1000ms 13:59:54.930 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n## Timings\n00:00 - Intro\n0:15 - Andy Jassy's Just Be Wild\n19:34 - Games Made With AI \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nGet production ready SQLite with Turso: https://turso.tech/deeznuts", "duration" => 2988, "filename" => "/downloads/The Standup/2025-03-12 Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2/Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2 [6bsaPvyEKQo].mp4", "id" => "6bsaPvyEKQo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6bsaPvyEKQo", "playlist_index" => 60, "timestamp" => 1741783407, "title" => "Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2", "upload_date" => "20250312"} 13:59:54.931 [debug] QUERY OK source="sources" db=0.2ms idle=1014.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:54.931 [debug] QUERY OK source="sources" db=0.2ms idle=1013.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:54.932 [debug] QUERY OK source="media_items" db=0.6ms idle=1002.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-03-12 12:43:27Z], 1] 13:59:54.934 [debug] QUERY OK source="media_items" db=1.4ms idle=1003.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n## Timings\n00:00 - Intro\n0:15 - Andy Jassy's Just Be Wild\n19:34 - Games Made With AI \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nGet production ready SQLite with Turso: https://turso.tech/deeznuts", "Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2", "d6dbc23c-f5c1-46ae-8762-ace70d6ff4fa", 2988, false, "6bsaPvyEKQo", "https://www.youtube.com/watch?v=6bsaPvyEKQo", 60, "/downloads/The Standup/2025-03-12 Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2/Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2 [6bsaPvyEKQo].mp4", false, false, false, 1, [], 0, ~U[2025-03-12 12:43:27Z], ~U[2026-07-24 11:59:54Z], ~U[2026-07-24 11:59:54Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n## Timings\n00:00 - Intro\n0:15 - Andy Jassy's Just Be Wild\n19:34 - Games Made With AI \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nGet production ready SQLite with Turso: https://turso.tech/deeznuts", "Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2", 2988, false, "6bsaPvyEKQo", "https://www.youtube.com/watch?v=6bsaPvyEKQo", "/downloads/The Standup/2025-03-12 Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2/Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2 [6bsaPvyEKQo].mp4", false, 1, ~U[2025-03-12 12:43:27Z]] 13:59:54.935 [debug] QUERY OK source="sources" db=0.5ms idle=516.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:54.936 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 13:59:54.936 [debug] QUERY OK source="media_items" db=0.5ms 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 [60] 13:59:54.937 [info] Kicking off download for media item #60 (6bsaPvyEKQo) 13:59:54.939 [debug] QUERY OK source="tasks" db=0.2ms idle=3.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [64, 60, ~U[2026-07-24 11:59:54Z], ~U[2026-07-24 11:59:54Z]] 13:59:54.939 [debug] Current batch of media processed. Will check again in 1000ms 13:59:55.634 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PL2Fq-K0QdOQiJpufsnhEd1z3xOv2JMHuk&si=9j4fCX4dlq_TMy2P --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/e2/8a/e28a2e3e030769f1760d9ed80a5ad54873d3bffc9c67bf4fdc74ba7cec097910.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:59:55.639 [debug] Gracefully stopping file follower 13:59:55.641 [debug] QUERY OK source="sources" db=1.0ms idle=703.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [1] 13:59:55.641 [debug] QUERY OK source="sources" db=0.5ms idle=703.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.643 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=703.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-06-07 13:00:11Z], 1] 13:59:55.646 [debug] QUERY OK source="media_items" db=2.6ms idle=703.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Don’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nFull Episode:\nYoutube: https://youtu.be/PxNr7k1v-Rk\nSpotify: https://open.spotify.com/episode/4VOHebTzXEThro58G1ArKp\n\n[Description]\nWe dive deep into technical performance debates, specifically the nuances of floating-point math—is multiplying by a reciprocal actually faster than division on modern CPUs?\n\nWe also break down the latest from Microsoft and NVIDIA, including the \"RTX Spark\" and the vision of \"unmetered intelligence.\" Plus, don't miss \"Trash Facts\" about professional bowling and the latest \"Snack Picks.\"\n\n[Chapters]\n00:00:00 - Intro\n00:03:32 - CodeRabbit\n00:05:28 - Prime Blocker\n00:27:48 - Outro\n\n[Partners]\nLinear: https://trm.sh/linear\nSentry: https://trm.sh/sentry\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Casey Destroys Optimization Myths | TheStandup", "bd572d29-953f-45e3-97b0-44b203c20353", 1693, false, "pslodI0Mh_0", "https://www.youtube.com/watch?v=pslodI0Mh_0", 1, "/downloads/The Standup/2026-06-07 Casey Destroys Optimization Myths | TheStandup/Casey Destroys Optimization Myths | TheStandup [pslodI0Mh_0].mp4", false, false, false, 1, [], 1, ~U[2026-06-07 13:00:11Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Don’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nFull Episode:\nYoutube: https://youtu.be/PxNr7k1v-Rk\nSpotify: https://open.spotify.com/episode/4VOHebTzXEThro58G1ArKp\n\n[Description]\nWe dive deep into technical performance debates, specifically the nuances of floating-point math—is multiplying by a reciprocal actually faster than division on modern CPUs?\n\nWe also break down the latest from Microsoft and NVIDIA, including the \"RTX Spark\" and the vision of \"unmetered intelligence.\" Plus, don't miss \"Trash Facts\" about professional bowling and the latest \"Snack Picks.\"\n\n[Chapters]\n00:00:00 - Intro\n00:03:32 - CodeRabbit\n00:05:28 - Prime Blocker\n00:27:48 - Outro\n\n[Partners]\nLinear: https://trm.sh/linear\nSentry: https://trm.sh/sentry\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Casey Destroys Optimization Myths | TheStandup", 1693, false, "pslodI0Mh_0", "https://www.youtube.com/watch?v=pslodI0Mh_0", "/downloads/The Standup/2026-06-07 Casey Destroys Optimization Myths | TheStandup/Casey Destroys Optimization Myths | TheStandup [pslodI0Mh_0].mp4", false, 1, ~U[2026-06-07 13:00:11Z]] 13:59:55.647 [debug] QUERY OK source="sources" db=0.9ms idle=226.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.648 [debug] QUERY OK source="media_items" db=0.9ms idle=6.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-30 13:00:14Z], 1] 13:59:55.653 [debug] QUERY OK source="media_items" db=4.5ms idle=6.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nFull Episode\nSpotify: https://open.spotify.com/episode/7xcNgaZ7d0PgCNqNk9v1ge?si=BoDbRw6rRuSfhQ48wlGTkA\nYoutube: https://youtu.be/AapTIwXPztM\n\nPeep Trash’s Dotfiles: https://github.com/bautistaaa/dotfiles\n\nTrash takes us through his \"hell on earth\" first week switching from Mac to Linux. From battling Wi-Fi drivers on an ancient MacBook Air to discovering the aesthetic joy of Hyperland and custom dot files, this episode covers the highs and lows of the Linux desktop experience. We also dive into the messy definitions of AGI, the utility of efficiency cores in modern CPUs, and why everyone needs a dedicated snack officer.\n\nChapters\n00:00:00 - Intro\n00:00:22 - Choosing a Linux Distro\n00:03:41 - MergeCop\n00:05:32 - Back to Distros\n00:08:42 - Hyprland\n00:11:37 - Scuffed Demo\n00:19:47 - Compositors\n00:22:31 - Linux Pilled\n00:23:46 - Configuration for Everything\n00:25:47 - Picking a Laptop for Linux\n00:29:35 - More Distros\n00:31:06 - Packages and User land\n00:48:17 - DirectX\n00:50:15 - Distro differences and Install experiences\n00:54:57 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash VS Linux | TheStandup", "f47a6ced-bbaa-4686-99aa-a5e58cb39f07", 3359, false, "kSuMjLbjqsI", "https://www.youtube.com/watch?v=kSuMjLbjqsI", 2, "/downloads/The Standup/2026-05-30 Trash VS Linux | TheStandup/Trash VS Linux | TheStandup [kSuMjLbjqsI].mp4", false, false, false, 1, [], 1, ~U[2026-05-30 13:00:14Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nFull Episode\nSpotify: https://open.spotify.com/episode/7xcNgaZ7d0PgCNqNk9v1ge?si=BoDbRw6rRuSfhQ48wlGTkA\nYoutube: https://youtu.be/AapTIwXPztM\n\nPeep Trash’s Dotfiles: https://github.com/bautistaaa/dotfiles\n\nTrash takes us through his \"hell on earth\" first week switching from Mac to Linux. From battling Wi-Fi drivers on an ancient MacBook Air to discovering the aesthetic joy of Hyperland and custom dot files, this episode covers the highs and lows of the Linux desktop experience. We also dive into the messy definitions of AGI, the utility of efficiency cores in modern CPUs, and why everyone needs a dedicated snack officer.\n\nChapters\n00:00:00 - Intro\n00:00:22 - Choosing a Linux Distro\n00:03:41 - MergeCop\n00:05:32 - Back to Distros\n00:08:42 - Hyprland\n00:11:37 - Scuffed Demo\n00:19:47 - Compositors\n00:22:31 - Linux Pilled\n00:23:46 - Configuration for Everything\n00:25:47 - Picking a Laptop for Linux\n00:29:35 - More Distros\n00:31:06 - Packages and User land\n00:48:17 - DirectX\n00:50:15 - Distro differences and Install experiences\n00:54:57 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash VS Linux | TheStandup", 3359, false, "kSuMjLbjqsI", "https://www.youtube.com/watch?v=kSuMjLbjqsI", "/downloads/The Standup/2026-05-30 Trash VS Linux | TheStandup/Trash VS Linux | TheStandup [kSuMjLbjqsI].mp4", false, 1, ~U[2026-05-30 13:00:14Z]] 13:59:55.654 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.656 [debug] QUERY OK source="media_items" db=1.2ms idle=8.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-09 13:02:00Z], 1] 13:59:55.658 [debug] QUERY OK source="media_items" db=1.7ms idle=9.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \nYes, seriously, this is my company, and we selected and found some of the worlds best coffee. US only (for now (the world is hard when you dont do crappy influencer coffee))\n\nFull Ep on Spotify: https://open.spotify.com/episode/2aWwsR6wUnxFZx0Y8YadPK\nFull Ep on Youtube: https://www.youtube.com/watch?v=NvZmBF9YL5o\n\nChapters\n00:00:00 - Intro\n00:00:59 - Windows Run Dialog\n00:04:23 - Terminal Ad\n00:05:31 - FPS or ms\n00:10:49 - Latency\n00:16:39 - Casey Haters\n00:18:37 - FPS in the Web World\n00:32:35 - Red vs Blue\n00:33:21 - Microsoft Problems\n00:37:39 - The median\n00:40:16 - Windows Start Menu\n00:47:20 - Minecraft Machine\n00:48:19 - Windows is OVER\n00:54:14 - Windows 1\n00:54:45 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Microsoft doesn't understand FPS", "031d4d2f-75b6-4094-8bad-244ba53203d3", 3311, false, "znRHdCDw9tQ", "https://www.youtube.com/watch?v=znRHdCDw9tQ", 3, "/downloads/The Standup/2026-05-09 Microsoft doesn't understand FPS/Microsoft doesn't understand FPS [znRHdCDw9tQ].mp4", false, false, false, 1, [], 1, ~U[2026-05-09 13:02:00Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop \nYes, seriously, this is my company, and we selected and found some of the worlds best coffee. US only (for now (the world is hard when you dont do crappy influencer coffee))\n\nFull Ep on Spotify: https://open.spotify.com/episode/2aWwsR6wUnxFZx0Y8YadPK\nFull Ep on Youtube: https://www.youtube.com/watch?v=NvZmBF9YL5o\n\nChapters\n00:00:00 - Intro\n00:00:59 - Windows Run Dialog\n00:04:23 - Terminal Ad\n00:05:31 - FPS or ms\n00:10:49 - Latency\n00:16:39 - Casey Haters\n00:18:37 - FPS in the Web World\n00:32:35 - Red vs Blue\n00:33:21 - Microsoft Problems\n00:37:39 - The median\n00:40:16 - Windows Start Menu\n00:47:20 - Minecraft Machine\n00:48:19 - Windows is OVER\n00:54:14 - Windows 1\n00:54:45 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Microsoft doesn't understand FPS", 3311, false, "znRHdCDw9tQ", "https://www.youtube.com/watch?v=znRHdCDw9tQ", "/downloads/The Standup/2026-05-09 Microsoft doesn't understand FPS/Microsoft doesn't understand FPS [znRHdCDw9tQ].mp4", false, 1, ~U[2026-05-09 13:02:00Z]] 13:59:55.659 [debug] QUERY OK source="sources" db=0.2ms idle=10.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.660 [debug] QUERY OK source="media_items" db=0.9ms idle=6.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-02 13:01:44Z], 1] 13:59:55.663 [debug] QUERY OK source="media_items" db=1.9ms idle=6.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Full Ep on Spotify: https://open.spotify.com/episode/3Jrvpidho5r5JjosPWSmYh\nFull Ep on Youtube: https://www.youtube.com/watch?v=IGXvCMuDE9s\n\nDon’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nThe crew debates the internet’s latest impossible question: red button or blue button, and somehow turns it into a full philosophical breakdown of trust, self-preservation, group behavior, and whether Trash would doom humanity because he hates red cars. They also get into Pokémon card chaos, Wikipedia drama, Odin’s deleted page, and why modern “notability” might be broken.\n\nChapters\n00:00:00 - Intro\n00:00:21 - Blockers\n00:03:12 - Odin Wikipedia Drama\n00:16:51 - Merge Cop\n00:19:39 - More Wikipedia\n00:31:37 - Blue or Red Button\n00:45:40 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus I make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Wikipedia Pressed the Red button on Odin | TheStandup", "470f08c7-78e1-49ff-b626-6178e94892f0", 2768, false, "uo1I6lS5DYU", "https://www.youtube.com/watch?v=uo1I6lS5DYU", 4, "/downloads/The Standup/2026-05-02 Wikipedia Pressed the Red button on Odin | TheStandup/Wikipedia Pressed the Red button on Odin | TheStandup [uo1I6lS5DYU].mp4", false, false, false, 1, [], 1, ~U[2026-05-02 13:01:44Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Full Ep on Spotify: https://open.spotify.com/episode/3Jrvpidho5r5JjosPWSmYh\nFull Ep on Youtube: https://www.youtube.com/watch?v=IGXvCMuDE9s\n\nDon’t let bad code get merged without reviewing (hopefully not by merge cop!). Checkout out Code Rabbit at https://trm.sh/coderabbit\n\nThe crew debates the internet’s latest impossible question: red button or blue button, and somehow turns it into a full philosophical breakdown of trust, self-preservation, group behavior, and whether Trash would doom humanity because he hates red cars. They also get into Pokémon card chaos, Wikipedia drama, Odin’s deleted page, and why modern “notability” might be broken.\n\nChapters\n00:00:00 - Intro\n00:00:21 - Blockers\n00:03:12 - Odin Wikipedia Drama\n00:16:51 - Merge Cop\n00:19:39 - More Wikipedia\n00:31:37 - Blue or Red Button\n00:45:40 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus I make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Wikipedia Pressed the Red button on Odin | TheStandup", 2768, false, "uo1I6lS5DYU", "https://www.youtube.com/watch?v=uo1I6lS5DYU", "/downloads/The Standup/2026-05-02 Wikipedia Pressed the Red button on Odin | TheStandup/Wikipedia Pressed the Red button on Odin | TheStandup [uo1I6lS5DYU].mp4", false, 1, ~U[2026-05-02 13:01:44Z]] 13:59:55.664 [debug] QUERY OK source="sources" db=1.3ms idle=7.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.665 [debug] QUERY OK source="media_items" db=0.6ms idle=5.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-19 13:00:20Z], 1] 13:59:55.667 [debug] QUERY OK source="media_items" db=1.5ms idle=6.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sentry: Catch, trace, and fix bugs across your entire stack. Use code: prime for $100 in free sentry credits → https://trm.sh/sentry\n\nAI, zero-days, and a whole lot of hot takes. The crew dives into the controversy around powerful new AI models and whether they’re making cybersecurity better or way more dangerous. From bug bounties to “anyone can hack now” fears, it’s a mix of serious debate, wild hypotheticals, and classic Standup chaos. \n\n00:00:00 - GeoHot Zero Day\n00:04:02 - CyberGym\n00:05:42 - The Claude Mythos Situation\n00:09:00 - Hacking Econ\n00:13:10 - 50 good programmers\n00:16:48 - AI Company Behaviour\n00:22:47 - Redbull and false claims\n00:25:41 - Opensource and reverse engineering\n00:29:20 - Model withholding and token costs\n00:33:24 - ARC-AGI Benchmarks\n00:37:51 - Vulnerability Research\n00:42:41 - Outro\n\n\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Mythos Situation | TheStandup", "ea9be3b1-c12b-4c74-b18a-b6d8ef4f0695", 2786, false, "6szQxMGX5JI", "https://www.youtube.com/watch?v=6szQxMGX5JI", 5, "/downloads/The Standup/2026-04-19 The Mythos Situation | TheStandup/The Mythos Situation | TheStandup [6szQxMGX5JI].mp4", false, false, false, 1, [], 1, ~U[2026-04-19 13:00:20Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Sentry: Catch, trace, and fix bugs across your entire stack. Use code: prime for $100 in free sentry credits → https://trm.sh/sentry\n\nAI, zero-days, and a whole lot of hot takes. The crew dives into the controversy around powerful new AI models and whether they’re making cybersecurity better or way more dangerous. From bug bounties to “anyone can hack now” fears, it’s a mix of serious debate, wild hypotheticals, and classic Standup chaos. \n\n00:00:00 - GeoHot Zero Day\n00:04:02 - CyberGym\n00:05:42 - The Claude Mythos Situation\n00:09:00 - Hacking Econ\n00:13:10 - 50 good programmers\n00:16:48 - AI Company Behaviour\n00:22:47 - Redbull and false claims\n00:25:41 - Opensource and reverse engineering\n00:29:20 - Model withholding and token costs\n00:33:24 - ARC-AGI Benchmarks\n00:37:51 - Vulnerability Research\n00:42:41 - Outro\n\n\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Mythos Situation | TheStandup", 2786, false, "6szQxMGX5JI", "https://www.youtube.com/watch?v=6szQxMGX5JI", "/downloads/The Standup/2026-04-19 The Mythos Situation | TheStandup/The Mythos Situation | TheStandup [6szQxMGX5JI].mp4", false, 1, ~U[2026-04-19 13:00:20Z]] 13:59:55.667 [debug] QUERY OK source="sources" db=0.3ms idle=6.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.668 [debug] QUERY OK source="media_items" db=0.4ms queue=0.3ms idle=5.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-12 13:00:16Z], 1] 13:59:55.673 [debug] QUERY OK source="media_items" db=4.3ms idle=4.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Download Trash’s App Receipts Here: https://apps.apple.com/us/app/got-receipts/id6760623464\n\nFull episode on Spotify: https://open.spotify.com/episode/4wAFjFkbSPwoTkL6vClhsT\nFull episode on Youtube: https://youtu.be/QD-USE_Vzvs\n\nThanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nChocolate carrots, ghost hunting, and an app that might end marriages. We kick things off with Easter stories and a late-night haunted hotel adventure… then spiral into “Receipts” — a fully vibe-coded app designed to track every petty argument in your life. Yeah. It’s exactly what it sounds like.\n\nChapters\n00:00:00 - Lets get Started (Real intro)\n00:00:25 - Youtube Announcement\n00:01:18 - Trashs Explains His App\n00:03:32 - Merge Cop Ep 4 ends\n00:05:27 - Receipts App Demo\n00:17:34 - Feedback\n00:20:49 - Feature requests\n00:26:39 - Its a black mirror episode\n00:29:55 - The original Idea\n00:32:12 - Did this fix anything?\n00:36:01 - Wife challenge\n00:37:44 - Achievements and badges\n00:38:32 - App AI Dev Experience\n00:39:23 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash Made a Black Mirror App | The Standup", "c8e45be1-02ab-4f4c-a1c2-43dd26a3212a", 2441, false, "CCBe1shjGOw", "https://www.youtube.com/watch?v=CCBe1shjGOw", 6, "/downloads/The Standup/2026-04-12 Trash Made a Black Mirror App | The Standup/Trash Made a Black Mirror App | The Standup [CCBe1shjGOw].mp4", false, false, false, 1, [], 1, ~U[2026-04-12 13:00:16Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Download Trash’s App Receipts Here: https://apps.apple.com/us/app/got-receipts/id6760623464\n\nFull episode on Spotify: https://open.spotify.com/episode/4wAFjFkbSPwoTkL6vClhsT\nFull episode on Youtube: https://youtu.be/QD-USE_Vzvs\n\nThanks to this week's sponsor: Code Rabbit If you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github. https://coderabbit.link/primeagen-vscode\n\nChocolate carrots, ghost hunting, and an app that might end marriages. We kick things off with Easter stories and a late-night haunted hotel adventure… then spiral into “Receipts” — a fully vibe-coded app designed to track every petty argument in your life. Yeah. It’s exactly what it sounds like.\n\nChapters\n00:00:00 - Lets get Started (Real intro)\n00:00:25 - Youtube Announcement\n00:01:18 - Trashs Explains His App\n00:03:32 - Merge Cop Ep 4 ends\n00:05:27 - Receipts App Demo\n00:17:34 - Feedback\n00:20:49 - Feature requests\n00:26:39 - Its a black mirror episode\n00:29:55 - The original Idea\n00:32:12 - Did this fix anything?\n00:36:01 - Wife challenge\n00:37:44 - Achievements and badges\n00:38:32 - App AI Dev Experience\n00:39:23 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Trash Made a Black Mirror App | The Standup", 2441, false, "CCBe1shjGOw", "https://www.youtube.com/watch?v=CCBe1shjGOw", "/downloads/The Standup/2026-04-12 Trash Made a Black Mirror App | The Standup/Trash Made a Black Mirror App | The Standup [CCBe1shjGOw].mp4", false, 1, ~U[2026-04-12 13:00:16Z]] 13:59:55.675 [debug] QUERY OK source="sources" db=1.1ms idle=8.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.676 [debug] QUERY OK source="media_items" db=1.4ms idle=8.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-04-04 13:00:04Z], 1] 13:59:55.679 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=9.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/5JF055lquoK8LHjYuz3eJI\n\nThis week on The Standup, we sit down with the team behind Cloudflare’s “Vinext” experiment an attempt to bring the Next.js API surface onto a completely different runtime. What starts as a simple “why does this exist?” quickly turns into a deep dive on AI-driven development, open source in the age of agents, and what happens when an intern is told to “just build Next.js” .\n\nDane Knecht, Steve Faulkner, and Dillon Mulroy walk through how the project went from a half-finished intern prototype to a full-blown AI-assisted experiment complete with bots reviewing PRs, triaging issues, and even maintaining parity with the Next.js repo itself. Along the way, we get into the realities of maintaining a “not-a-fork-but-kind-of-a-fork,” why developers keep depending on undocumented behavior anyway, and how AI both creates and fixes its own messes .\n\nChapters\n00:00:00 - Intro\n00:01:41 - NextJs\n00:03:28 - Sentry\n00:04:27 - Interns and AI bots\n00:06:42 - Opensource in the AI world\n00:07:46 - Fork or not\n00:10:38 - Surface Area\n00:14:43 - Post Experiment\n00:15:53 - Mitigating Slop\n00:18:10 - Agentic Development\n00:27:37 - Reception\n00:31:13 - What is Vite?\n00:36:49 - Sentiment\n00:38:47 - Managing AI\n00:43:32 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Maintaining a codebase with AI | The Standup", "44745f84-df96-41ae-91b5-5fba413de094", 2644, false, "1o74a8a0rBw", "https://www.youtube.com/watch?v=1o74a8a0rBw", 7, "/downloads/The Standup/2026-04-04 Maintaining a codebase with AI | The Standup/Maintaining a codebase with AI | The Standup [1o74a8a0rBw].mp4", false, false, false, 1, [], 1, ~U[2026-04-04 13:00:04Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/5JF055lquoK8LHjYuz3eJI\n\nThis week on The Standup, we sit down with the team behind Cloudflare’s “Vinext” experiment an attempt to bring the Next.js API surface onto a completely different runtime. What starts as a simple “why does this exist?” quickly turns into a deep dive on AI-driven development, open source in the age of agents, and what happens when an intern is told to “just build Next.js” .\n\nDane Knecht, Steve Faulkner, and Dillon Mulroy walk through how the project went from a half-finished intern prototype to a full-blown AI-assisted experiment complete with bots reviewing PRs, triaging issues, and even maintaining parity with the Next.js repo itself. Along the way, we get into the realities of maintaining a “not-a-fork-but-kind-of-a-fork,” why developers keep depending on undocumented behavior anyway, and how AI both creates and fixes its own messes .\n\nChapters\n00:00:00 - Intro\n00:01:41 - NextJs\n00:03:28 - Sentry\n00:04:27 - Interns and AI bots\n00:06:42 - Opensource in the AI world\n00:07:46 - Fork or not\n00:10:38 - Surface Area\n00:14:43 - Post Experiment\n00:15:53 - Mitigating Slop\n00:18:10 - Agentic Development\n00:27:37 - Reception\n00:31:13 - What is Vite?\n00:36:49 - Sentiment\n00:38:47 - Managing AI\n00:43:32 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Maintaining a codebase with AI | The Standup", 2644, false, "1o74a8a0rBw", "https://www.youtube.com/watch?v=1o74a8a0rBw", "/downloads/The Standup/2026-04-04 Maintaining a codebase with AI | The Standup/Maintaining a codebase with AI | The Standup [1o74a8a0rBw].mp4", false, 1, ~U[2026-04-04 13:00:04Z]] 13:59:55.680 [debug] QUERY OK source="sources" db=0.6ms idle=10.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.685 [debug] QUERY OK source="media_items" db=5.0ms idle=7.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-22 13:01:08Z], 1] 13:59:55.687 [debug] QUERY OK source="media_items" db=1.7ms idle=10.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/11fZy7K1Fu488QMRNLQqZo?si=7e9861c2397d4f09 \n\nThis week on The Standup, we start with snack addictions and somehow spiral into one of the most unhinged breakdowns of tech, startups, and internet culture yet. TJ, DV, Casey, and Trash Dev are back—debating failed Apple products, LinkedIn nonsense, terrible data visualizations, and wild AI takes. Somewhere in the chaos, we even touch on algorithms, complexity, and why most of it doesn’t mean what people think it does. Chaotic, honest, and pretty much how developers actually talk. If you’ve ever questioned the tech industry… this one’s for you.\n\nChapters\n00:00:00 - Introduction\n00:01:45 - Teej was wrong\n00:03:50 - Sentry\n00:05:15 - Apple buyers\n00:06:43 - LinkedIn Translator\n00:10:57 - Complexity\n00:31:55 - Gratitude\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanks for all your hard work you are no longer needed | TheStandup", "4d89b6d9-f062-49d7-a4bc-c365597c1818", 2768, false, "effIaRawUdA", "https://www.youtube.com/watch?v=effIaRawUdA", 8, "/downloads/The Standup/2026-03-22 Thanks for all your hard work you are no longer needed | TheStandup/Thanks for all your hard work you are no longer needed | TheStandup [effIaRawUdA].mp4", false, false, false, 1, [], 1, ~U[2026-03-22 13:01:08Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nFull episode on Spotify: https://open.spotify.com/episode/11fZy7K1Fu488QMRNLQqZo?si=7e9861c2397d4f09 \n\nThis week on The Standup, we start with snack addictions and somehow spiral into one of the most unhinged breakdowns of tech, startups, and internet culture yet. TJ, DV, Casey, and Trash Dev are back—debating failed Apple products, LinkedIn nonsense, terrible data visualizations, and wild AI takes. Somewhere in the chaos, we even touch on algorithms, complexity, and why most of it doesn’t mean what people think it does. Chaotic, honest, and pretty much how developers actually talk. If you’ve ever questioned the tech industry… this one’s for you.\n\nChapters\n00:00:00 - Introduction\n00:01:45 - Teej was wrong\n00:03:50 - Sentry\n00:05:15 - Apple buyers\n00:06:43 - LinkedIn Translator\n00:10:57 - Complexity\n00:31:55 - Gratitude\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanks for all your hard work you are no longer needed | TheStandup", 2768, false, "effIaRawUdA", "https://www.youtube.com/watch?v=effIaRawUdA", "/downloads/The Standup/2026-03-22 Thanks for all your hard work you are no longer needed | TheStandup/Thanks for all your hard work you are no longer needed | TheStandup [effIaRawUdA].mp4", false, 1, ~U[2026-03-22 13:01:08Z]] 13:59:55.688 [debug] QUERY OK source="sources" db=0.5ms idle=11.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.689 [debug] QUERY OK source="media_items" db=0.5ms idle=9.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-21 13:00:22Z], 1] 13:59:55.692 [debug] QUERY OK source="media_items" db=2.7ms idle=9.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nssh terminal.shop\n\nWishlist Insignia NOW: https://store.steampowered.com/app/1127370/Insignia In this episode we talk with indie game developers Nolan and Adam about the weird and creative side of game development. From viral projects like 1 Million Checkboxes to building pixel art games and experimental multiplayer ideas, we dive into how developers actually make games, where ideas come from, and why making lots of small projects can lead to big breakthroughs. We also discuss indie game dev culture, programming tools, game jams, and the unexpected paths that lead people into creating games.\n\nMentioned Adam Links\nWishlist Insignia on steam: https://store.steampowered.com/app/1127370/Insignia/ \n\nAdam's Ludum Dare 49 Entry: Trauma: https://uppon-hill.itch.io/trauma \n\nMentioned Nolan (eieio) links\nOne Million checkboxes blog: https://eieio.games/blog/one-million-checkboxes/ \nSSH Snake: https://snake.eieio.games/\nPatching GO's SSH Library: https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/ \n\nAdditional Shoutouts:\nCakez77 Game TangyTD: https://store.steampowered.com/app/2245620/Tangy_TD/\n\n\nChapters\n00:00:00 - Intro\n00:00:18 - Intro to Game Dev\n00:03:28 - Sentry\n00:04:06 - Back to Intro to Game Dev\n00:10:16 - Personal win conditions\n00:16:00 - Game Jams and Inspiration\n00:19:11 - 1 million checkboxes\n00:22:29 - Developing for the Terminal\n00:32:35 - Old Internet Tech\n00:33:08 - iframes", "The Reality of Making Indie Games | The Standup", "b517b18b-5923-4e84-bec1-47d6790d39d5", 2205, false, "FbmkW8EpNaY", "https://www.youtube.com/watch?v=FbmkW8EpNaY", 9, "/downloads/The Standup/2026-03-21 The Reality of Making Indie Games | The Standup/The Reality of Making Indie Games | The Standup [FbmkW8EpNaY].mp4", false, false, false, 1, [], 1, ~U[2026-03-21 13:00:22Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Ship with confidence. Try Sentry: https://trm.sh/sentry\n\nssh terminal.shop\n\nWishlist Insignia NOW: https://store.steampowered.com/app/1127370/Insignia In this episode we talk with indie game developers Nolan and Adam about the weird and creative side of game development. From viral projects like 1 Million Checkboxes to building pixel art games and experimental multiplayer ideas, we dive into how developers actually make games, where ideas come from, and why making lots of small projects can lead to big breakthroughs. We also discuss indie game dev culture, programming tools, game jams, and the unexpected paths that lead people into creating games.\n\nMentioned Adam Links\nWishlist Insignia on steam: https://store.steampowered.com/app/1127370/Insignia/ \n\nAdam's Ludum Dare 49 Entry: Trauma: https://uppon-hill.itch.io/trauma \n\nMentioned Nolan (eieio) links\nOne Million checkboxes blog: https://eieio.games/blog/one-million-checkboxes/ \nSSH Snake: https://snake.eieio.games/\nPatching GO's SSH Library: https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/ \n\nAdditional Shoutouts:\nCakez77 Game TangyTD: https://store.steampowered.com/app/2245620/Tangy_TD/\n\n\nChapters\n00:00:00 - Intro\n00:00:18 - Intro to Game Dev\n00:03:28 - Sentry\n00:04:06 - Back to Intro to Game Dev\n00:10:16 - Personal win conditions\n00:16:00 - Game Jams and Inspiration\n00:19:11 - 1 million checkboxes\n00:22:29 - Developing for the Terminal\n00:32:35 - Old Internet Tech\n00:33:08 - iframes", "The Reality of Making Indie Games | The Standup", 2205, false, "FbmkW8EpNaY", "https://www.youtube.com/watch?v=FbmkW8EpNaY", "/downloads/The Standup/2026-03-21 The Reality of Making Indie Games | The Standup/The Reality of Making Indie Games | The Standup [FbmkW8EpNaY].mp4", false, 1, ~U[2026-03-21 13:00:22Z]] 13:59:55.693 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [1] 13:59:55.694 [debug] QUERY OK source="media_items" db=0.5ms idle=6.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-14 13:00:51Z], 1] 13:59:55.696 [debug] QUERY OK source="media_items" db=1.1ms idle=6.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\nCHECK OUT THEIR NEW PODCAST ON CASEY'S YOUTUBE: @MollyRocket \n\nAI researcher Dimitri joins the show to talk about the real impact of AI on software engineering. We discuss token costs, AI coding tools, the future of developers, and whether engineers are heading toward a world of reviewing AI-generated code instead of writing it. It’s a grounded conversation about the hype, the risks, and where AI might actually be taking the industry.\n\n\n00:00:00 - Intro\n00:03:57 - Terminal Coffee\n00:04:31 - Wading Through AI\n00:07:00 - Who is Demetri\n00:09:00 - AIs Impact on the Industry\n00:11:43 - Token cost\n00:21:22 - Orbital Data Centers\n00:28:04 - Is my future Reviewing Code \n00:33:51 - Tokenomics\n00:37:51 - Amazon Kiro and Token Metric\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "What's really going on with AI, Expert weighs in | TheStandup", "4f8acd32-33a6-437c-9272-560c11d66fa8", 2541, false, "TtX3jDaZG8Y", "https://www.youtube.com/watch?v=TtX3jDaZG8Y", 10, "/downloads/The Standup/2026-03-14 What's really going on with AI, Expert weighs in | TheStandup/What's really going on with AI, Expert weighs in | TheStandup [TtX3jDaZG8Y].mp4", false, false, false, 1, [], 1, ~U[2026-03-14 13:00:51Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop \n\nCHECK OUT THEIR NEW PODCAST ON CASEY'S YOUTUBE: @MollyRocket \n\nAI researcher Dimitri joins the show to talk about the real impact of AI on software engineering. We discuss token costs, AI coding tools, the future of developers, and whether engineers are heading toward a world of reviewing AI-generated code instead of writing it. It’s a grounded conversation about the hype, the risks, and where AI might actually be taking the industry.\n\n\n00:00:00 - Intro\n00:03:57 - Terminal Coffee\n00:04:31 - Wading Through AI\n00:07:00 - Who is Demetri\n00:09:00 - AIs Impact on the Industry\n00:11:43 - Token cost\n00:21:22 - Orbital Data Centers\n00:28:04 - Is my future Reviewing Code \n00:33:51 - Tokenomics\n00:37:51 - Amazon Kiro and Token Metric\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "What's really going on with AI, Expert weighs in | TheStandup", 2541, false, "TtX3jDaZG8Y", "https://www.youtube.com/watch?v=TtX3jDaZG8Y", "/downloads/The Standup/2026-03-14 What's really going on with AI, Expert weighs in | TheStandup/What's really going on with AI, Expert weighs in | TheStandup [TtX3jDaZG8Y].mp4", false, 1, ~U[2026-03-14 13:00:51Z]] 13:59:55.696 [debug] QUERY OK source="sources" db=0.5ms idle=6.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.697 [debug] QUERY OK source="media_items" db=0.4ms idle=4.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-03-07 14:00:26Z], 1] 13:59:55.699 [debug] QUERY OK source="media_items" db=1.1ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Chapters\n00:00:00 - Intro\n00:03:42 - ssh terminal.shop\n00:04:16 - Notepad Exploit\n00:14:47 - Notepad++ Exploit\n00:30:16 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n\nThe crew talks about one of the biggest debates in programming right now: do lines of code actually matter? They dive into AI coding tools, developer productivity, and why measuring engineers by code output might be completely broken. Along the way they roast the viral “burned out my USB-C ports using Claude Code” tweet, share stories about gamifying developer metrics, and break down some surprisingly wild security vulnerabilities in both Windows Notepad and Notepad++. A mix of tech insight, developer culture, and plenty of chaos.", "Why is Microsoft updating their text editors!? | TheStandup", "56cdec95-98e1-47df-b0ad-8f61335b526b", 1842, false, "OgfdyH4iaps", "https://www.youtube.com/watch?v=OgfdyH4iaps", 11, "/downloads/The Standup/2026-03-07 Why is Microsoft updating their text editors!? | TheStandup/Why is Microsoft updating their text editors!? | TheStandup [OgfdyH4iaps].mp4", false, false, false, 1, [], 1, ~U[2026-03-07 14:00:26Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Chapters\n00:00:00 - Intro\n00:03:42 - ssh terminal.shop\n00:04:16 - Notepad Exploit\n00:14:47 - Notepad++ Exploit\n00:30:16 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n\nThe crew talks about one of the biggest debates in programming right now: do lines of code actually matter? They dive into AI coding tools, developer productivity, and why measuring engineers by code output might be completely broken. Along the way they roast the viral “burned out my USB-C ports using Claude Code” tweet, share stories about gamifying developer metrics, and break down some surprisingly wild security vulnerabilities in both Windows Notepad and Notepad++. A mix of tech insight, developer culture, and plenty of chaos.", "Why is Microsoft updating their text editors!? | TheStandup", 1842, false, "OgfdyH4iaps", "https://www.youtube.com/watch?v=OgfdyH4iaps", "/downloads/The Standup/2026-03-07 Why is Microsoft updating their text editors!? | TheStandup/Why is Microsoft updating their text editors!? | TheStandup [OgfdyH4iaps].mp4", false, 1, ~U[2026-03-07 14:00:26Z]] 13:59:55.699 [debug] QUERY OK source="sources" db=0.5ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.700 [debug] QUERY OK source="media_items" db=0.5ms idle=4.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-28 14:00:36Z], 1] 13:59:55.702 [debug] QUERY OK source="media_items" db=1.5ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\nWe break down the Open Claw insanity taking over Silicon Valley, including the head of AI safety accidentally nuking her own inbox, developers wiring autonomous agents directly into their lives, and the growing trend of giving AI sudo access like that’s a normal thing to do.\n\nTrash admits he’s vibe-coding secret iOS apps, including one that may or may not speedrun divorce. We debate AI personal assistants, spam calls, self-hosting myths, Mac mini bot farms, and whether anyone is actually running these models locally.\n\nWe also dissect the most awkward AI summit moment of the year: Sam Altman and Dario Amodei refusing to hold hands on stage next to the Prime Minister of India. Theater kid energy meets billion-dollar rivalry.\n\n\n\nRead the Harper’s piece we reference in this episode — a deep dive into AI startup culture and the hype surrounding it: https://harpers.org/archive/2026/03/childs-play-sam-kriss-ai-startup-roy-lee/\n\n\n00:00:00 - Intro\n00:02:20 - Terminal Coffee\n00:02:54 - AI Personal Assistants\n00:08:53 - Vibing iOS Apps\n00:11:38 - Bash's projects\n00:13:38 - Primes old Netflix codebase\n00:16:00 - Meta AI safety blunder\n00:21:01 - OpenClaw Mac Minis\n00:24:38 - AI Impact Summit", "AI Personal Assistants are ruining people lives | TheStandup", "d70c2ec7-9d50-4031-b66f-439faa85df44", 2125, false, "LpMn08jW02A", "https://www.youtube.com/watch?v=LpMn08jW02A", 12, "/downloads/The Standup/2026-02-28 AI Personal Assistants are ruining people lives | TheStandup/AI Personal Assistants are ruining people lives | TheStandup [LpMn08jW02A].mp4", false, false, false, 1, [], 1, ~U[2026-02-28 14:00:36Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop \n\nWe break down the Open Claw insanity taking over Silicon Valley, including the head of AI safety accidentally nuking her own inbox, developers wiring autonomous agents directly into their lives, and the growing trend of giving AI sudo access like that’s a normal thing to do.\n\nTrash admits he’s vibe-coding secret iOS apps, including one that may or may not speedrun divorce. We debate AI personal assistants, spam calls, self-hosting myths, Mac mini bot farms, and whether anyone is actually running these models locally.\n\nWe also dissect the most awkward AI summit moment of the year: Sam Altman and Dario Amodei refusing to hold hands on stage next to the Prime Minister of India. Theater kid energy meets billion-dollar rivalry.\n\n\n\nRead the Harper’s piece we reference in this episode — a deep dive into AI startup culture and the hype surrounding it: https://harpers.org/archive/2026/03/childs-play-sam-kriss-ai-startup-roy-lee/\n\n\n00:00:00 - Intro\n00:02:20 - Terminal Coffee\n00:02:54 - AI Personal Assistants\n00:08:53 - Vibing iOS Apps\n00:11:38 - Bash's projects\n00:13:38 - Primes old Netflix codebase\n00:16:00 - Meta AI safety blunder\n00:21:01 - OpenClaw Mac Minis\n00:24:38 - AI Impact Summit", "AI Personal Assistants are ruining people lives | TheStandup", 2125, false, "LpMn08jW02A", "https://www.youtube.com/watch?v=LpMn08jW02A", "/downloads/The Standup/2026-02-28 AI Personal Assistants are ruining people lives | TheStandup/AI Personal Assistants are ruining people lives | TheStandup [LpMn08jW02A].mp4", false, 1, ~U[2026-02-28 14:00:36Z]] 13:59:55.703 [debug] QUERY OK source="sources" db=0.7ms 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" = ?) [1] 13:59:55.704 [debug] QUERY OK source="media_items" db=0.6ms idle=4.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-21 15:28:03Z], 1] 13:59:55.706 [debug] QUERY OK source="media_items" db=1.4ms idle=4.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop\n\nBen and Alexis join the show to talk about their new sketch comedy series, the creative chaos behind it, and what it actually takes to ship something big online. From quitting tech jobs to filming 12-hour shoot days, unreleased music videos, and creative mental breakdowns, this episode is a behind-the-scenes look at building something ambitious with friends.\n\n\nIt’s comedy, tech, risk, and a whole lot of “just make the thing.”\n\n\n\nCHAPTERS\n00:00:00 - Intro\n00:03:00 - BIG KRAZAM Project\n00:04:25 - Terminal Coffee\n00:05:00 - The Tease\n00:05:36 - Output and Delays\n00:08:08 - THE ANNOUCEMENT\n00:11:30 - Why now\n00:20:00 - What it takes to make something like this\n00:26:55 - Teej says something nice\n00:28:10 - Whats different about a making a sketch show\n00:30:50 - Quiting SWE\n00:39:29 - Agentic Life\n00:41:25 - Begins stolen Valor and making a band\n00:43:42 - Instruments\n00:47:00 - We should be making a band!\n00:51:23 - Outro", "Big KRAZAM Announcement | TheStandup", "2c5b77de-481c-499b-ad7e-1156c617f4b5", 2979, false, "uhlBpEkdxhM", "https://www.youtube.com/watch?v=uhlBpEkdxhM", 13, "/downloads/The Standup/2026-02-21 Big KRAZAM Announcement | TheStandup/Big KRAZAM Announcement | TheStandup [uhlBpEkdxhM].mp4", false, false, false, 1, [], 1, ~U[2026-02-21 15:28:03Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop\n\nBen and Alexis join the show to talk about their new sketch comedy series, the creative chaos behind it, and what it actually takes to ship something big online. From quitting tech jobs to filming 12-hour shoot days, unreleased music videos, and creative mental breakdowns, this episode is a behind-the-scenes look at building something ambitious with friends.\n\n\nIt’s comedy, tech, risk, and a whole lot of “just make the thing.”\n\n\n\nCHAPTERS\n00:00:00 - Intro\n00:03:00 - BIG KRAZAM Project\n00:04:25 - Terminal Coffee\n00:05:00 - The Tease\n00:05:36 - Output and Delays\n00:08:08 - THE ANNOUCEMENT\n00:11:30 - Why now\n00:20:00 - What it takes to make something like this\n00:26:55 - Teej says something nice\n00:28:10 - Whats different about a making a sketch show\n00:30:50 - Quiting SWE\n00:39:29 - Agentic Life\n00:41:25 - Begins stolen Valor and making a band\n00:43:42 - Instruments\n00:47:00 - We should be making a band!\n00:51:23 - Outro", "Big KRAZAM Announcement | TheStandup", 2979, false, "uhlBpEkdxhM", "https://www.youtube.com/watch?v=uhlBpEkdxhM", "/downloads/The Standup/2026-02-21 Big KRAZAM Announcement | TheStandup/Big KRAZAM Announcement | TheStandup [uhlBpEkdxhM].mp4", false, 1, ~U[2026-02-21 15:28:03Z]] 13:59:55.707 [debug] QUERY OK source="sources" db=0.7ms idle=5.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.708 [debug] QUERY OK source="media_items" db=0.7ms idle=4.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-14 17:22:55Z], 1] 13:59:55.709 [debug] QUERY OK source="media_items" db=1.2ms idle=4.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nChapters \n00:00:00 - Intro\n00:01:04 - Begins Current Game\n00:04:18 - Terminal Coffee\n00:04:52 - Terraria plugins\n00:07:26 - Primes Current Game\n00:09:25 - Begin Ruins Magic\n00:13:19 - Back to Primes Game\n00:15:50 - Tostitos\n00:18:57 - Trashs Current Game\n00:26:14 - Trash pro gamer lore\n00:28:49 - Replacing toxic gaming with coding\n00:32:13 - Perfect Dark VS 007 Golden Gun\n00:33:07 - Old School Cheating and Retro Games\n00:36:22 - Educational games\n00:38:16 - DOTA\n00:45:00 - Zelda\n00:46:48 - Teejs Current game\n00:47:58 - Games we are excited for\n00:53:48 - Age Of Empires\n00:57:58 - LOTR\n00:59:19 - Outro\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We used to be gamers | TheStandup", "825e9e38-641f-4e3e-ac8f-322bc340cb25", 3629, false, "FBvB1MQis4Y", "https://www.youtube.com/watch?v=FBvB1MQis4Y", 14, "/downloads/The Standup/2026-02-14 We used to be gamers | TheStandup/We used to be gamers | TheStandup [FBvB1MQis4Y].mp4", false, false, false, 1, [], 1, ~U[2026-02-14 17:22:55Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nChapters \n00:00:00 - Intro\n00:01:04 - Begins Current Game\n00:04:18 - Terminal Coffee\n00:04:52 - Terraria plugins\n00:07:26 - Primes Current Game\n00:09:25 - Begin Ruins Magic\n00:13:19 - Back to Primes Game\n00:15:50 - Tostitos\n00:18:57 - Trashs Current Game\n00:26:14 - Trash pro gamer lore\n00:28:49 - Replacing toxic gaming with coding\n00:32:13 - Perfect Dark VS 007 Golden Gun\n00:33:07 - Old School Cheating and Retro Games\n00:36:22 - Educational games\n00:38:16 - DOTA\n00:45:00 - Zelda\n00:46:48 - Teejs Current game\n00:47:58 - Games we are excited for\n00:53:48 - Age Of Empires\n00:57:58 - LOTR\n00:59:19 - Outro\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We used to be gamers | TheStandup", 3629, false, "FBvB1MQis4Y", "https://www.youtube.com/watch?v=FBvB1MQis4Y", "/downloads/The Standup/2026-02-14 We used to be gamers | TheStandup/We used to be gamers | TheStandup [FBvB1MQis4Y].mp4", false, 1, ~U[2026-02-14 17:22:55Z]] 13:59:55.710 [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" = ?) [1] 13:59:55.711 [debug] QUERY OK source="media_items" db=0.5ms idle=4.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-08 14:00:53Z], 1] 13:59:55.713 [debug] QUERY OK source="media_items" db=1.1ms idle=4.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\nThis week on The Standup, the crew digs into the chaos of AI “skills,” agent tooling, and the growing security risks nobody seems to be paying attention to. From hallucinated commands spreading across GitHub to supply-chain nightmares and wild real-world examples, it’s a funny, slightly terrifying look at where AI tooling is headed. Laughs, hot takes, and a reality check for anyone letting agents run loose on their machine.\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:04:01 - Terminal Coffee\n00:04:34 - Skills & Hallucinated npx Commands\n00:14:26 - Hiding commands in Skill.md\n00:18:52 - What Would Elon Do?\n00:24:46 - Skills.sh\n00:33:00 - AI Social Networks\n00:35:41 - Simulation Theory\n00:40:31 - Moltbook\n00:47:50 - Outro", "AGI Achieved?! | TheStandup", "33999aef-6e52-42db-a574-fbec8bb2865f", 2891, false, "_CzEmKTk5Rs", "https://www.youtube.com/watch?v=_CzEmKTk5Rs", 15, "/downloads/The Standup/2026-02-08 AGI Achieved?! | TheStandup/AGI Achieved?! | TheStandup [_CzEmKTk5Rs].mp4", false, false, false, 1, [], 1, ~U[2026-02-08 14:00:53Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop \n\nThis week on The Standup, the crew digs into the chaos of AI “skills,” agent tooling, and the growing security risks nobody seems to be paying attention to. From hallucinated commands spreading across GitHub to supply-chain nightmares and wild real-world examples, it’s a funny, slightly terrifying look at where AI tooling is headed. Laughs, hot takes, and a reality check for anyone letting agents run loose on their machine.\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:04:01 - Terminal Coffee\n00:04:34 - Skills & Hallucinated npx Commands\n00:14:26 - Hiding commands in Skill.md\n00:18:52 - What Would Elon Do?\n00:24:46 - Skills.sh\n00:33:00 - AI Social Networks\n00:35:41 - Simulation Theory\n00:40:31 - Moltbook\n00:47:50 - Outro", "AGI Achieved?! | TheStandup", 2891, false, "_CzEmKTk5Rs", "https://www.youtube.com/watch?v=_CzEmKTk5Rs", "/downloads/The Standup/2026-02-08 AGI Achieved?! | TheStandup/AGI Achieved?! | TheStandup [_CzEmKTk5Rs].mp4", false, 1, ~U[2026-02-08 14:00:53Z]] 13:59:55.713 [debug] QUERY OK source="sources" db=0.5ms idle=4.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.714 [debug] QUERY OK source="media_items" db=0.5ms idle=4.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-02-03 14:01:20Z], 1] 13:59:55.716 [debug] QUERY OK source="media_items" db=1.0ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\n00:00:00 - Intro\n00:02:16 - The RAM Situation\n00:04:25 - Merge Cop Ep 3\n00:06:16 - RAM FABS\n00:07:19 - DDR5 not for the consumer\n00:10:30 - Primes Windows Issues\n00:12:43 - The Great RAMming\n00:35:40 - Is Other hardware pricing effected\n00:40:46 - Is Renting a computer the future?\n00:44:40 - What about Phones\n00:48:40 - Hiring at LTT in an AI world\n00:53:08 - Developers at LTT\n01:02:04 - Is Tech Youtube Changing?\n01:17:34 - Year of the Linux Desktop\n01:19:08 - Outro", "Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup", "d77ca98b-56de-491b-b1d8-26868a6809ac", 4808, false, "kD7CRXRbcrw", "https://www.youtube.com/watch?v=kD7CRXRbcrw", 16, "/downloads/The Standup/2026-02-03 Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup/Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup [kD7CRXRbcrw].mp4", false, false, false, 1, [], 1, ~U[2026-02-03 14:01:20Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\n00:00:00 - Intro\n00:02:16 - The RAM Situation\n00:04:25 - Merge Cop Ep 3\n00:06:16 - RAM FABS\n00:07:19 - DDR5 not for the consumer\n00:10:30 - Primes Windows Issues\n00:12:43 - The Great RAMming\n00:35:40 - Is Other hardware pricing effected\n00:40:46 - Is Renting a computer the future?\n00:44:40 - What about Phones\n00:48:40 - Hiring at LTT in an AI world\n00:53:08 - Developers at LTT\n01:02:04 - Is Tech Youtube Changing?\n01:17:34 - Year of the Linux Desktop\n01:19:08 - Outro", "Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup", 4808, false, "kD7CRXRbcrw", "https://www.youtube.com/watch?v=kD7CRXRbcrw", "/downloads/The Standup/2026-02-03 Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup/Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup [kD7CRXRbcrw].mp4", false, 1, ~U[2026-02-03 14:01:20Z]] 13:59:55.716 [debug] QUERY OK source="sources" db=0.6ms 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" = ?) [1] 13:59:55.717 [debug] QUERY OK source="media_items" db=0.6ms idle=4.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-22 19:14:23Z], 1] 13:59:55.719 [debug] QUERY OK source="media_items" db=1.0ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop \n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:02:17 - Disclaimer\n00:02:51 - Terminal Coffee\n00:03:25 - Quote from 'Sam'\n00:04:48 - How worldcoin started\n00:08:59 - How to prove you're human\n00:12:29 - How to get it\n00:14:59 - what is it\n00:19:45 - Privacy\n00:21:15 - Teejs concerns\n00:23:58 - Tools for Humanity\n00:26:55 - Early rollout\n00:31:37 - Analytics\n00:37:48 - Digital Adoption without scans\n00:40:05 - End of Presentation (Questions?)\n00:56:55 - AI will solve this\n01:00:52 - Outro", "Scam Altman's Crypto Currency | The standup", "009e9353-a1cd-4291-b0f1-3710dbc3110c", 3691, false, "vbmcHjZWI_U", "https://www.youtube.com/watch?v=vbmcHjZWI_U", 17, "/downloads/The Standup/2026-01-22 Scam Altman's Crypto Currency | The standup/Scam Altman's Crypto Currency | The standup [vbmcHjZWI_U].mp4", false, false, false, 1, [], 1, ~U[2026-01-22 19:14:23Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop \n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:02:17 - Disclaimer\n00:02:51 - Terminal Coffee\n00:03:25 - Quote from 'Sam'\n00:04:48 - How worldcoin started\n00:08:59 - How to prove you're human\n00:12:29 - How to get it\n00:14:59 - what is it\n00:19:45 - Privacy\n00:21:15 - Teejs concerns\n00:23:58 - Tools for Humanity\n00:26:55 - Early rollout\n00:31:37 - Analytics\n00:37:48 - Digital Adoption without scans\n00:40:05 - End of Presentation (Questions?)\n00:56:55 - AI will solve this\n01:00:52 - Outro", "Scam Altman's Crypto Currency | The standup", 3691, false, "vbmcHjZWI_U", "https://www.youtube.com/watch?v=vbmcHjZWI_U", "/downloads/The Standup/2026-01-22 Scam Altman's Crypto Currency | The standup/Scam Altman's Crypto Currency | The standup [vbmcHjZWI_U].mp4", false, 1, ~U[2026-01-22 19:14:23Z]] 13:59:55.720 [debug] QUERY OK source="sources" db=0.5ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.720 [debug] QUERY OK source="media_items" db=0.5ms idle=4.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-16 12:01:25Z], 1] 13:59:55.722 [debug] QUERY OK source="media_items" db=0.8ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!", "Casey Breaks Down AWS Outage | The Standup", "531b7735-8203-4dcd-9e09-be1215d2df54", 3056, false, "gstn9qcNdlc", "https://www.youtube.com/watch?v=gstn9qcNdlc", 18, "/downloads/The Standup/2026-01-16 Casey Breaks Down AWS Outage | The Standup/Casey Breaks Down AWS Outage | The Standup [gstn9qcNdlc].mp4", false, false, false, 1, [], 1, ~U[2026-01-16 12:01:25Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!", "Casey Breaks Down AWS Outage | The Standup", 3056, false, "gstn9qcNdlc", "https://www.youtube.com/watch?v=gstn9qcNdlc", "/downloads/The Standup/2026-01-16 Casey Breaks Down AWS Outage | The Standup/Casey Breaks Down AWS Outage | The Standup [gstn9qcNdlc].mp4", false, 1, ~U[2026-01-16 12:01:25Z]] 13:59:55.722 [debug] QUERY OK source="sources" db=0.5ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.723 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=3.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-01-08 13:01:55Z], 1] 13:59:55.725 [debug] QUERY OK source="media_items" db=1.2ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\nWant more predictions, listen to the full episode here: https://open.spotify.com/episode/3L3FpdwyFrMklX6yFUYDD5?si=wugl7a9cSImRRTBJtvuWHg\n\n\n00:00:00 - Intro\n00:02:03 - Merge Cop Ep 2\n00:04:50 - Caseys 1st Prediction\n00:07:27 - Teejs 1st Prediction\n00:09:18 - Primes 1st Prediction\n00:16:22 - Trashs 1st Prediction\n00:19:06 - Trashs 2nd Prediction\n00:20:34 - Primes 2nd Prediction\n00:23:38 - Teejs 2nd Prediction\n00:25:45 - Caseys 2nd Prediction\n00:35:47 - Caseys 3rd Prediction\n00:42:00 - Teejs 3rd Prediction\n00:45:41 - Primes 3rd Prediction\n00:48:17 - Trashes 3rd Prediction\n00:51:51 - Side Quest Predictions\n00:52:58 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nMore Standup - \nClips: @TheStandupPodClips\nFull Length Podcasts: https://trm.sh/thestandup", "Spiciest 2026 Predictions | The Standup", "7a0ae040-28fb-4d80-a515-bc6019d9b139", 3209, false, "vFcgXdm-0yY", "https://www.youtube.com/watch?v=vFcgXdm-0yY", 19, "/downloads/The Standup/2026-01-08 Spiciest 2026 Predictions | The Standup/Spiciest 2026 Predictions | The Standup [vFcgXdm-0yY].mp4", false, false, false, 1, [], 1, ~U[2026-01-08 13:01:55Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thanks to this week's sponsor: Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\n\n\n\nWant more predictions, listen to the full episode here: https://open.spotify.com/episode/3L3FpdwyFrMklX6yFUYDD5?si=wugl7a9cSImRRTBJtvuWHg\n\n\n00:00:00 - Intro\n00:02:03 - Merge Cop Ep 2\n00:04:50 - Caseys 1st Prediction\n00:07:27 - Teejs 1st Prediction\n00:09:18 - Primes 1st Prediction\n00:16:22 - Trashs 1st Prediction\n00:19:06 - Trashs 2nd Prediction\n00:20:34 - Primes 2nd Prediction\n00:23:38 - Teejs 2nd Prediction\n00:25:45 - Caseys 2nd Prediction\n00:35:47 - Caseys 3rd Prediction\n00:42:00 - Teejs 3rd Prediction\n00:45:41 - Primes 3rd Prediction\n00:48:17 - Trashes 3rd Prediction\n00:51:51 - Side Quest Predictions\n00:52:58 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nMore Standup - \nClips: @TheStandupPodClips\nFull Length Podcasts: https://trm.sh/thestandup", "Spiciest 2026 Predictions | The Standup", 3209, false, "vFcgXdm-0yY", "https://www.youtube.com/watch?v=vFcgXdm-0yY", "/downloads/The Standup/2026-01-08 Spiciest 2026 Predictions | The Standup/Spiciest 2026 Predictions | The Standup [vFcgXdm-0yY].mp4", false, 1, ~U[2026-01-08 13:01:55Z]] 13:59:55.726 [debug] QUERY OK source="sources" db=0.5ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.726 [debug] QUERY OK source="media_items" db=0.5ms idle=4.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-31 12:00:10Z], 1] 13:59:55.728 [debug] QUERY OK source="media_items" db=1.0ms idle=4.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Chapters\n00:00:00 - Intro\n00:01:38 - Teej Interupts\n00:03:30 - Intro Again\n00:05:46 - Trashs Pick\n00:09:09 - Teejs Band Dream\n00:10:18 - Marimba\n00:14:59 - Caseys Pick\n00:28:38 - Teejs Pick\n00:44:17 - More Marimba\n00:48:03 - Primes Pick\n00:53:00 - Twitch Pick\n00:57:52 - Youtubes Pick\n01:03:55 - Bonus Pick\n01:07:39 - Neovim Donation\n01:09:07 - PlanetScale\n01:14:53 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We gave $50,000 to OSS! Merry Christmas | The Standup", "8a0577b0-94ca-45e3-91d5-87ff4ab32318", 4028, false, "5Hs4Ikwphe0", "https://www.youtube.com/watch?v=5Hs4Ikwphe0", 20, "/downloads/The Standup/2025-12-31 We gave $50,000 to OSS! Merry Christmas | The Standup/We gave $50,000 to OSS! Merry Christmas | The Standup [5Hs4Ikwphe0].mp4", false, false, false, 1, [], 1, ~U[2025-12-31 12:00:10Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Chapters\n00:00:00 - Intro\n00:01:38 - Teej Interupts\n00:03:30 - Intro Again\n00:05:46 - Trashs Pick\n00:09:09 - Teejs Band Dream\n00:10:18 - Marimba\n00:14:59 - Caseys Pick\n00:28:38 - Teejs Pick\n00:44:17 - More Marimba\n00:48:03 - Primes Pick\n00:53:00 - Twitch Pick\n00:57:52 - Youtubes Pick\n01:03:55 - Bonus Pick\n01:07:39 - Neovim Donation\n01:09:07 - PlanetScale\n01:14:53 - Outro\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "We gave $50,000 to OSS! Merry Christmas | The Standup", 4028, false, "5Hs4Ikwphe0", "https://www.youtube.com/watch?v=5Hs4Ikwphe0", "/downloads/The Standup/2025-12-31 We gave $50,000 to OSS! Merry Christmas | The Standup/We gave $50,000 to OSS! Merry Christmas | The Standup [5Hs4Ikwphe0].mp4", false, 1, ~U[2025-12-31 12:00:10Z]] 13:59:55.729 [debug] QUERY OK source="sources" db=0.8ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.730 [debug] QUERY OK source="media_items" db=0.5ms idle=4.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-20 13:02:01Z], 1] 13:59:55.732 [debug] QUERY OK source="media_items" db=1.2ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Chapters \n00:00:00 - Intro\n00:00:12 - Order of the Sinking Star Trailer\n00:02:33 - Casey helped come up with the idea for Braid - part1 \n00:05:12 - Terminal Coffee\n00:05:46 - Casey helped come up with the idea for Braid - part2\n00:10:32 - Questions\n00:11:11 - Where did the design idea for sinking star come from / game design\n00:19:26 - Raspberry\n00:22:18 - JAI and C++\n00:29:06 - JAI name and Quality of software names\n00:31:38 - Why make a new language\n00:41:13 - Compile Time\nRapid Fire Questions\n00:44:47 - Will AI Save the Gaming Industry\n00:45:57 - How long should you spend on a project\n00:49:22 - Advice on balancing CEO and Game Dev\n00:51:37 - Why Braid\n00:52:10 - Advice for Modern Webdevs\n01:01:17 - Any Blockers\n01:04:20 - Outro\n\nMore Standup - \nClips: @TheStandupPod\nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Legendary Game Dev Jonathan Blow | The Standup", "da1fa512-7d7c-4ee3-bd3e-c33f63db273f", 3896, false, "vHfdUqLmPNU", "https://www.youtube.com/watch?v=vHfdUqLmPNU", 21, "/downloads/The Standup/2025-12-20 Legendary Game Dev Jonathan Blow | The Standup/Legendary Game Dev Jonathan Blow | The Standup [vHfdUqLmPNU].mp4", false, false, false, 1, [], 1, ~U[2025-12-20 13:02:01Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Chapters \n00:00:00 - Intro\n00:00:12 - Order of the Sinking Star Trailer\n00:02:33 - Casey helped come up with the idea for Braid - part1 \n00:05:12 - Terminal Coffee\n00:05:46 - Casey helped come up with the idea for Braid - part2\n00:10:32 - Questions\n00:11:11 - Where did the design idea for sinking star come from / game design\n00:19:26 - Raspberry\n00:22:18 - JAI and C++\n00:29:06 - JAI name and Quality of software names\n00:31:38 - Why make a new language\n00:41:13 - Compile Time\nRapid Fire Questions\n00:44:47 - Will AI Save the Gaming Industry\n00:45:57 - How long should you spend on a project\n00:49:22 - Advice on balancing CEO and Game Dev\n00:51:37 - Why Braid\n00:52:10 - Advice for Modern Webdevs\n01:01:17 - Any Blockers\n01:04:20 - Outro\n\nMore Standup - \nClips: @TheStandupPod\nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Legendary Game Dev Jonathan Blow | The Standup", 3896, false, "vHfdUqLmPNU", "https://www.youtube.com/watch?v=vHfdUqLmPNU", "/downloads/The Standup/2025-12-20 Legendary Game Dev Jonathan Blow | The Standup/Legendary Game Dev Jonathan Blow | The Standup [vHfdUqLmPNU].mp4", false, 1, ~U[2025-12-20 13:02:01Z]] 13:59:55.732 [debug] QUERY OK source="sources" db=0.3ms idle=5.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.733 [debug] QUERY OK source="media_items" db=0.5ms idle=4.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 13:01:29Z], 1] 13:59:55.734 [debug] QUERY OK source="media_items" db=1.0ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app/prime CODE: PRIME\n\n\nChapters\n00:00:00 - Intro\n00:01:39 - Presentation Start\n00:03:37 - Tuple\n00:05:07 - Part 1 - JSON-based Domain Specific Language\n00:09:50 - Part 2 - JDSL In Action\n00:15:19 - Part 3 - Rise and Grind\n00:16:54 - Part 4 - Tom\n00:19:03 - Part 5 - The Meeting\n00:23:13 - Presentation End\n00:24:55 - Casey has questions\n00:29:46 - Outro\n\nMore Standup - \nClips: @TheStandupPodClips \nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Worst Onboarding Experience Ever | The Standup", "5147e854-379a-440b-b2d9-e70b2f199917", 1840, false, "kZGyz9jCUj0", "https://www.youtube.com/watch?v=kZGyz9jCUj0", 22, "/downloads/The Standup/2025-12-19 Worst Onboarding Experience Ever | The Standup/Worst Onboarding Experience Ever | The Standup [kZGyz9jCUj0].mp4", false, false, false, 1, [], 1, ~U[2025-12-19 13:01:29Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app/prime CODE: PRIME\n\n\nChapters\n00:00:00 - Intro\n00:01:39 - Presentation Start\n00:03:37 - Tuple\n00:05:07 - Part 1 - JSON-based Domain Specific Language\n00:09:50 - Part 2 - JDSL In Action\n00:15:19 - Part 3 - Rise and Grind\n00:16:54 - Part 4 - Tom\n00:19:03 - Part 5 - The Meeting\n00:23:13 - Presentation End\n00:24:55 - Casey has questions\n00:29:46 - Outro\n\nMore Standup - \nClips: @TheStandupPodClips \nFull Length Podcasts: https://trm.sh/thestandup\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Worst Onboarding Experience Ever | The Standup", 1840, false, "kZGyz9jCUj0", "https://www.youtube.com/watch?v=kZGyz9jCUj0", "/downloads/The Standup/2025-12-19 Worst Onboarding Experience Ever | The Standup/Worst Onboarding Experience Ever | The Standup [kZGyz9jCUj0].mp4", false, 1, ~U[2025-12-19 13:01:29Z]] 13:59:55.735 [debug] QUERY OK source="sources" db=0.8ms 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" = ?) [1] 13:59:55.736 [debug] QUERY OK source="media_items" db=0.5ms idle=4.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-04 13:01:52Z], 1] 13:59:55.738 [debug] QUERY OK source="media_items" db=1.1ms idle=4.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:54 - Caseys Intro\n00:01:15 - The Setup\n00:02:55 - The Story\n00:08:44 - The Post Mortem\n00:12:11 - The Informants\n00:14:10 - The Suspect\n00:15:34 - The Code\n00:20:33 - The Deal\n00:23:05 - The Conclusion \n00:24:37 - The Debrief\n00:26:40 - Google Testing Utility Failure\n00:28:43 - Production Code is Forever\n00:40:10 - Outro", "The Secret of the AWS Outage | The Standup", "d3656565-c84a-48da-9540-758ed3da2d4d", 2452, false, "r3bPmtEP9SQ", "https://www.youtube.com/watch?v=r3bPmtEP9SQ", 23, "/downloads/The Standup/2025-12-04 The Secret of the AWS Outage | The Standup/The Secret of the AWS Outage | The Standup [r3bPmtEP9SQ].mp4", false, false, false, 1, [], 1, ~U[2025-12-04 13:01:52Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "If you're on Mac or Windows, check out tuple today! And if you're on Linux, let's just say come back and check soon 🙂 Say thanks to our sponsor by checking out https://tuple.app\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:54 - Caseys Intro\n00:01:15 - The Setup\n00:02:55 - The Story\n00:08:44 - The Post Mortem\n00:12:11 - The Informants\n00:14:10 - The Suspect\n00:15:34 - The Code\n00:20:33 - The Deal\n00:23:05 - The Conclusion \n00:24:37 - The Debrief\n00:26:40 - Google Testing Utility Failure\n00:28:43 - Production Code is Forever\n00:40:10 - Outro", "The Secret of the AWS Outage | The Standup", 2452, false, "r3bPmtEP9SQ", "https://www.youtube.com/watch?v=r3bPmtEP9SQ", "/downloads/The Standup/2025-12-04 The Secret of the AWS Outage | The Standup/The Secret of the AWS Outage | The Standup [r3bPmtEP9SQ].mp4", false, 1, ~U[2025-12-04 13:01:52Z]] 13:59:55.739 [debug] QUERY OK source="sources" db=0.5ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.740 [debug] QUERY OK source="media_items" db=1.2ms idle=4.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-27 16:12:45Z], 1] 13:59:55.743 [debug] QUERY OK source="media_items" db=2.1ms idle=4.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["00:00:00 - Intro\n00:00:45 - Trash is thankful for snacks\nThankful for a Tech Project / Person\n00:05:30 - Topic Intro\n00:05:33 - Casey’s Pick\n00:11:16 - Prime’s Pick\n00:14:47 - Teej’s Pick\n00:18:36 - Trash’s Pick\n00:20:54 - Opencode\nThankful for Current Job / Situation\n00:22:51 - Topic Intro\n00:23:09 - Trash’s Situation\n00:24:25 - Teej’s Situation\n00:26:41 - Casey’s Situation\n00:28:28 - Prime’s Situation\nMost Recent Programming Project That Made You Happy\n00:31:41 - Topic Intro\n00:32:15 - Prime’s Project\n00:33:05 - Casey’s Project\n00:38:19 - Teej’s Project\n00:39:48 - Casey’s Tower Cupcakes\n00:47:16 - Trash’s Project\n00:51:03 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanksgiving Special - TheStandup", "640f4e32-96f7-4182-b963-b57091604cf4", 3106, false, "mxzx2Ps7OY0", "https://www.youtube.com/watch?v=mxzx2Ps7OY0", 24, "/downloads/The Standup/2025-11-27 Thanksgiving Special - TheStandup/Thanksgiving Special - TheStandup [mxzx2Ps7OY0].mp4", false, false, false, 1, [], 1, ~U[2025-11-27 16:12:45Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "00:00:00 - Intro\n00:00:45 - Trash is thankful for snacks\nThankful for a Tech Project / Person\n00:05:30 - Topic Intro\n00:05:33 - Casey’s Pick\n00:11:16 - Prime’s Pick\n00:14:47 - Teej’s Pick\n00:18:36 - Trash’s Pick\n00:20:54 - Opencode\nThankful for Current Job / Situation\n00:22:51 - Topic Intro\n00:23:09 - Trash’s Situation\n00:24:25 - Teej’s Situation\n00:26:41 - Casey’s Situation\n00:28:28 - Prime’s Situation\nMost Recent Programming Project That Made You Happy\n00:31:41 - Topic Intro\n00:32:15 - Prime’s Project\n00:33:05 - Casey’s Project\n00:38:19 - Teej’s Project\n00:39:48 - Casey’s Tower Cupcakes\n00:47:16 - Trash’s Project\n00:51:03 - Outro\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Thanksgiving Special - TheStandup", 3106, false, "mxzx2Ps7OY0", "https://www.youtube.com/watch?v=mxzx2Ps7OY0", "/downloads/The Standup/2025-11-27 Thanksgiving Special - TheStandup/Thanksgiving Special - TheStandup [mxzx2Ps7OY0].mp4", false, 1, ~U[2025-11-27 16:12:45Z]] 13:59:55.744 [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" = ?) [1] 13:59:55.745 [debug] QUERY OK source="media_items" db=0.9ms idle=6.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-20 13:01:56Z], 1] 13:59:55.749 [debug] QUERY OK source="media_items" db=3.8ms idle=6.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\nWe break down the most infamous \"thought-terminating clichés\" in software engineering. From the classic \"It depends\" to the controversial \"Premature optimization is the root of all evil,\" the team ranks these common dev phrases on a tier list based on how much they actually hinder or help real problem-solving.\n\nChapters\n00:00:00 - Intro\n00:01:18 - The List\n00:03:56 - The Rules\n00:06:28 - Never do a full rewrite\n00:12:27 - Programmer time is worth more than CPU time\n00:17:29 - Dont repeat yourself (DRY)\n00:23:23 - Use the right tool for the right job\n00:27:22 - It depends\n00:30:04 - Make it work make it right make it fast\n00:38:54 - You aint gonna need it (YAGNI)\n00:40:38 - Premature optimization is the root of all evil\n00:42:47 - You just need to be disciplined\n00:44:12 - Best practices\n00:46:33 - Real programmers dont make that mistake\n00:47:44 - Fast, Cheap, Good - Pick any two\n00:50:27 - Outro", "Bullsh*t Engineers Say Tier List | The Standup", "186f5e50-abbc-403f-b216-11c6bf81298d", 3080, false, "y2jH37EObQY", "https://www.youtube.com/watch?v=y2jH37EObQY", 25, "/downloads/The Standup/2025-11-20 Bullsh*t Engineers Say Tier List | The Standup/Bullsh*t Engineers Say Tier List | The Standup [y2jH37EObQY].mp4", false, false, false, 1, [], 1, ~U[2025-11-20 13:01:56Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\nWe break down the most infamous \"thought-terminating clichés\" in software engineering. From the classic \"It depends\" to the controversial \"Premature optimization is the root of all evil,\" the team ranks these common dev phrases on a tier list based on how much they actually hinder or help real problem-solving.\n\nChapters\n00:00:00 - Intro\n00:01:18 - The List\n00:03:56 - The Rules\n00:06:28 - Never do a full rewrite\n00:12:27 - Programmer time is worth more than CPU time\n00:17:29 - Dont repeat yourself (DRY)\n00:23:23 - Use the right tool for the right job\n00:27:22 - It depends\n00:30:04 - Make it work make it right make it fast\n00:38:54 - You aint gonna need it (YAGNI)\n00:40:38 - Premature optimization is the root of all evil\n00:42:47 - You just need to be disciplined\n00:44:12 - Best practices\n00:46:33 - Real programmers dont make that mistake\n00:47:44 - Fast, Cheap, Good - Pick any two\n00:50:27 - Outro", "Bullsh*t Engineers Say Tier List | The Standup", 3080, false, "y2jH37EObQY", "https://www.youtube.com/watch?v=y2jH37EObQY", "/downloads/The Standup/2025-11-20 Bullsh*t Engineers Say Tier List | The Standup/Bullsh*t Engineers Say Tier List | The Standup [y2jH37EObQY].mp4", false, 1, ~U[2025-11-20 13:01:56Z]] 13:59:55.750 [debug] QUERY OK source="sources" db=0.5ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.751 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=7.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-17 16:38:13Z], 1] 13:59:55.752 [debug] QUERY OK source="media_items" db=1.1ms idle=7.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nFil-C creators: https://x.com/filpizlo \n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:01:29 - Fil-C Demo\n00:07:56 - Security\n00:11:52 - Game Engine Use Case\n00:14:20 - What cant it do\n00:18:02 - Different to ASan\n00:23:57 - How Fil-C works\n00:36:38 - Choosing Fil-C over Rust\n00:51:31 - Outro", "Memory Safe C", "ff4f2d54-be93-4da9-ab9e-64763acceef8", 3148, false, "_AsXnyi2Mus", "https://www.youtube.com/watch?v=_AsXnyi2Mus", 26, "/downloads/The Standup/2025-11-17 Memory Safe C/Memory Safe C [_AsXnyi2Mus].mp4", false, false, false, 1, [], 1, ~U[2025-11-17 16:38:13Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nFil-C creators: https://x.com/filpizlo \n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:01:29 - Fil-C Demo\n00:07:56 - Security\n00:11:52 - Game Engine Use Case\n00:14:20 - What cant it do\n00:18:02 - Different to ASan\n00:23:57 - How Fil-C works\n00:36:38 - Choosing Fil-C over Rust\n00:51:31 - Outro", "Memory Safe C", 3148, false, "_AsXnyi2Mus", "https://www.youtube.com/watch?v=_AsXnyi2Mus", "/downloads/The Standup/2025-11-17 Memory Safe C/Memory Safe C [_AsXnyi2Mus].mp4", false, 1, ~U[2025-11-17 16:38:13Z]] 13:59:55.754 [debug] QUERY OK source="sources" db=0.7ms idle=8.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.755 [debug] QUERY OK source="media_items" db=0.6ms idle=5.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-09 12:01:11Z], 1] 13:59:55.756 [debug] QUERY OK source="media_items" db=1.2ms idle=5.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Try it now sentry.io\n\n00:00:00 - Intro\n00:01:23 - the issue\n00:04:01 - the takes\n00:09:16 - the bug\n00:10:22 - AI Disclosure\n00:11:42 - Prime weighs in\n00:13:28 - Disclosure credit\n00:14:40 - Big Sleep\n00:15:24 - AI Bugs Finders vs Static Analysis\n00:17:40 - Do they owe them anything at all\n00:19:40 - Is this optional or worthwhile\n00:23:33 - Bugs in general\n00:26:08 - Triage timespend\n00:27:01 - Outro", "FFMPEG takes a Big Sleep", "0cf7e54f-780e-47fd-a2fc-c813c6a6f80d", 1653, false, "dI64JeCIO8k", "https://www.youtube.com/watch?v=dI64JeCIO8k", 27, "/downloads/The Standup/2025-11-09 FFMPEG takes a Big Sleep/FFMPEG takes a Big Sleep [dI64JeCIO8k].mp4", false, false, false, 1, [], 1, ~U[2025-11-09 12:01:11Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Try it now sentry.io\n\n00:00:00 - Intro\n00:01:23 - the issue\n00:04:01 - the takes\n00:09:16 - the bug\n00:10:22 - AI Disclosure\n00:11:42 - Prime weighs in\n00:13:28 - Disclosure credit\n00:14:40 - Big Sleep\n00:15:24 - AI Bugs Finders vs Static Analysis\n00:17:40 - Do they owe them anything at all\n00:19:40 - Is this optional or worthwhile\n00:23:33 - Bugs in general\n00:26:08 - Triage timespend\n00:27:01 - Outro", "FFMPEG takes a Big Sleep", 1653, false, "dI64JeCIO8k", "https://www.youtube.com/watch?v=dI64JeCIO8k", "/downloads/The Standup/2025-11-09 FFMPEG takes a Big Sleep/FFMPEG takes a Big Sleep [dI64JeCIO8k].mp4", false, 1, ~U[2025-11-09 12:01:11Z]] 13:59:55.757 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [1] 13:59:55.758 [debug] QUERY OK source="media_items" db=0.6ms idle=5.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-05 16:47:16Z], 1] 13:59:55.760 [debug] QUERY OK source="media_items" db=2.1ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n 00:00:00 - Intro\n00:01:14 - Unitree Robot Security\n00:02:09 - Merge Cop ep. 1 \n00:03:33 - Base unit robot\n00:07:50 - Back to the Unitree story\n00:12:07 - Robots spread virus by proximity\n00:13:13 - Skynet is coming\n00:15:59 - Automation for no reason\n00:19:51 - Software Success\n00:22:01 - Whos gonna buy these\n00:24:55 - Laundry\n00:26:57 - what are you going to do after robots\n00:31:50 - Early adoption risks\n00:37:32 - Price\n00:38:22 - Band name loop holes\n00:39:34 - Jelly eyeballs\n00:43:40 - Outro", "The Robots are getting Hacked | The Standup", "7c26ea5e-19e1-49cf-97c3-d246639a4dd5", 2708, false, "Bxvfd2wi8ZQ", "https://www.youtube.com/watch?v=Bxvfd2wi8ZQ", 28, "/downloads/The Standup/2025-11-05 The Robots are getting Hacked | The Standup/The Robots are getting Hacked | The Standup [Bxvfd2wi8ZQ].mp4", false, false, false, 1, [], 1, ~U[2025-11-05 16:47:16Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thanks to this week's sponsor: Code Rabbit\n\nIf you're tired of developers just replying with LGTM, then you NEED Code Rabbit. An actually useful application of AI where it can use your own rules, lints and more to provide instant feedback in your editor OR a review on Github.\n\nhttps://coderabbit.link/primeagen-vscode\n\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n 00:00:00 - Intro\n00:01:14 - Unitree Robot Security\n00:02:09 - Merge Cop ep. 1 \n00:03:33 - Base unit robot\n00:07:50 - Back to the Unitree story\n00:12:07 - Robots spread virus by proximity\n00:13:13 - Skynet is coming\n00:15:59 - Automation for no reason\n00:19:51 - Software Success\n00:22:01 - Whos gonna buy these\n00:24:55 - Laundry\n00:26:57 - what are you going to do after robots\n00:31:50 - Early adoption risks\n00:37:32 - Price\n00:38:22 - Band name loop holes\n00:39:34 - Jelly eyeballs\n00:43:40 - Outro", "The Robots are getting Hacked | The Standup", 2708, false, "Bxvfd2wi8ZQ", "https://www.youtube.com/watch?v=Bxvfd2wi8ZQ", "/downloads/The Standup/2025-11-05 The Robots are getting Hacked | The Standup/The Robots are getting Hacked | The Standup [Bxvfd2wi8ZQ].mp4", false, 1, ~U[2025-11-05 16:47:16Z]] 13:59:55.762 [debug] QUERY OK source="sources" db=1.0ms idle=6.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.763 [debug] QUERY OK source="media_items" db=0.8ms idle=5.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-01 11:01:32Z], 1] 13:59:55.765 [debug] QUERY OK source="media_items" db=1.4ms idle=6.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\nhttps://x.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:39 - Express JS readme PRoblem\n00:01:50 - What is the right way to contribute to opensource\n00:11:54 - Ghosty PR Policies and process\n00:15:39 - Vetting Contributers and how to get noticed\n00:23:22 - is opensourcing worth it\n00:32:20 - maintaining a project in a linux community\n00:35:37 - Zig \n00:37:48 - hacktober LLMs\n00:38:53 - Contributing with LLMs\n00:47:54 - make a package instead of contributing to the main repo\n00:51:25 - Fortnite\n00:52:02 - Outro", "is AI ruining opensource?", "0853bb15-25f6-488c-bca1-9862197d4ef4", 3206, false, "kP93L683UOE", "https://www.youtube.com/watch?v=kP93L683UOE", 29, "/downloads/The Standup/2025-11-01 is AI ruining opensource?/is AI ruining opensource? [kP93L683UOE].mp4", false, false, false, 1, [], 1, ~U[2025-11-01 11:01:32Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\nhttps://x.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nhttps://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n00:00:00 - Intro\n00:00:39 - Express JS readme PRoblem\n00:01:50 - What is the right way to contribute to opensource\n00:11:54 - Ghosty PR Policies and process\n00:15:39 - Vetting Contributers and how to get noticed\n00:23:22 - is opensourcing worth it\n00:32:20 - maintaining a project in a linux community\n00:35:37 - Zig \n00:37:48 - hacktober LLMs\n00:38:53 - Contributing with LLMs\n00:47:54 - make a package instead of contributing to the main repo\n00:51:25 - Fortnite\n00:52:02 - Outro", "is AI ruining opensource?", 3206, false, "kP93L683UOE", "https://www.youtube.com/watch?v=kP93L683UOE", "/downloads/The Standup/2025-11-01 is AI ruining opensource?/is AI ruining opensource? [kP93L683UOE].mp4", false, 1, ~U[2025-11-01 11:01:32Z]] 13:59:55.766 [debug] QUERY OK source="sources" db=0.9ms 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" = ?) [1] 13:59:55.767 [debug] QUERY OK source="media_items" db=0.6ms queue=0.2ms idle=6.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-27 11:00:32Z], 1] 13:59:55.769 [debug] QUERY OK source="media_items" db=1.1ms queue=0.3ms idle=5.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n00:00:00 - Intro\n00:02:46 - Intro to Quantum, qbits and superpositions\n00:07:20 - Entanglement\n00:10:52 - Shor's algorithm\n00:12:07 - Inteference and decoherence \n00:14:31 - The fragility question\n00:17:00 - heisenbergs uncertainty principle\n00:18:03 - off topic\n00:20:16 - Magnetic field aim assist\n00:22:34 - Quantum Gates & Basis Vectors\n00:30:48 - Quantum Algorithyms and passwords\n00:37:50 - Uncerainty principle\n00:40:15 - What are people planning on using this for\n00:42:41 - Willow Chip\n00:44:33 - Quantum programming languages\n00:48:41 - Willow paper\n00:51:02 - Trash notes\n00:52:07 - Mapping Proteins and other uses for Quantum Computing\n00:55:37 - Quantum Echos\n00:58:20 - The future of Quantum computing\n01:05:19 - Quantum AI is a lie tell Facebook\n01:08:09 - Outro", "What even is Quantum Computing?!", "e0139714-e85b-44cc-80cf-010638ee5542", 4254, false, "ED-Q4N7ECMs", "https://www.youtube.com/watch?v=ED-Q4N7ECMs", 30, "/downloads/The Standup/2025-10-27 What even is Quantum Computing?!/What even is Quantum Computing?! [ED-Q4N7ECMs].mp4", false, false, false, 1, [], 1, ~U[2025-10-27 11:00:32Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n00:00:00 - Intro\n00:02:46 - Intro to Quantum, qbits and superpositions\n00:07:20 - Entanglement\n00:10:52 - Shor's algorithm\n00:12:07 - Inteference and decoherence \n00:14:31 - The fragility question\n00:17:00 - heisenbergs uncertainty principle\n00:18:03 - off topic\n00:20:16 - Magnetic field aim assist\n00:22:34 - Quantum Gates & Basis Vectors\n00:30:48 - Quantum Algorithyms and passwords\n00:37:50 - Uncerainty principle\n00:40:15 - What are people planning on using this for\n00:42:41 - Willow Chip\n00:44:33 - Quantum programming languages\n00:48:41 - Willow paper\n00:51:02 - Trash notes\n00:52:07 - Mapping Proteins and other uses for Quantum Computing\n00:55:37 - Quantum Echos\n00:58:20 - The future of Quantum computing\n01:05:19 - Quantum AI is a lie tell Facebook\n01:08:09 - Outro", "What even is Quantum Computing?!", 4254, false, "ED-Q4N7ECMs", "https://www.youtube.com/watch?v=ED-Q4N7ECMs", "/downloads/The Standup/2025-10-27 What even is Quantum Computing?!/What even is Quantum Computing?! [ED-Q4N7ECMs].mp4", false, 1, ~U[2025-10-27 11:00:32Z]] 13:59:55.771 [debug] QUERY OK source="sources" db=1.2ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.772 [debug] QUERY OK source="media_items" db=1.1ms idle=5.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-23 11:00:38Z], 1] 13:59:55.775 [debug] QUERY OK source="media_items" db=2.8ms idle=5.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n\n00:00:00 - Intro & Snacks\n00:02:24 - AWS Outage and companies effected\n00:07:54 - Insident report\n00:10:22 - How do data centers work?\n00:20:07 - Actual Post mortem\n00:22:00 - Vibe coding brought down the internet\n00:24:00 - Why is every company on US-EAST-1\n00:27:00 - CDNS and cloudDBS\n00:28:49 - 8sleep rant\n00:35:08 - Dumb IOT devices\n00:39:11 - Culture of new product companies\n00:43:00 - How much is cloud storage\n00:44:05 - OpenAI Browser, Atlas\n00:56:00 - Outro", "AWS Outage And ANOTHER AI BROWSER???? - TheStandup", "9e54a68d-63ff-4439-a2a2-e4982f1977e9", 3490, false, "J893_8HlkPM", "https://www.youtube.com/watch?v=J893_8HlkPM", 31, "/downloads/The Standup/2025-10-23 AWS Outage And ANOTHER AI BROWSER???? - TheStandup/AWS Outage And ANOTHER AI BROWSER???? - TheStandup [J893_8HlkPM].mp4", false, false, false, 1, [], 1, ~U[2025-10-23 11:00:38Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "SQUASH THOSE BUGS with Sentry - the best way to monitor your bugs in production (we know you have a lot of them) and fix them with ease. Check out https://sentry.io and get started today!\n\n\n\n00:00:00 - Intro & Snacks\n00:02:24 - AWS Outage and companies effected\n00:07:54 - Insident report\n00:10:22 - How do data centers work?\n00:20:07 - Actual Post mortem\n00:22:00 - Vibe coding brought down the internet\n00:24:00 - Why is every company on US-EAST-1\n00:27:00 - CDNS and cloudDBS\n00:28:49 - 8sleep rant\n00:35:08 - Dumb IOT devices\n00:39:11 - Culture of new product companies\n00:43:00 - How much is cloud storage\n00:44:05 - OpenAI Browser, Atlas\n00:56:00 - Outro", "AWS Outage And ANOTHER AI BROWSER???? - TheStandup", 3490, false, "J893_8HlkPM", "https://www.youtube.com/watch?v=J893_8HlkPM", "/downloads/The Standup/2025-10-23 AWS Outage And ANOTHER AI BROWSER???? - TheStandup/AWS Outage And ANOTHER AI BROWSER???? - TheStandup [J893_8HlkPM].mp4", false, 1, ~U[2025-10-23 11:00:38Z]] 13:59:55.776 [debug] QUERY OK source="sources" db=0.6ms idle=8.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.777 [debug] QUERY OK source="media_items" db=0.6ms idle=7.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-22 12:01:27Z], 1] 13:59:55.778 [debug] QUERY OK source="media_items" db=0.6ms idle=6.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "TheStandup - DHH Talks Omarchy", "d08d7eea-c96e-4405-b350-b9a0c219e65a", 3954, false, "ljGPvgMPOn8", "https://www.youtube.com/watch?v=ljGPvgMPOn8", 32, "/downloads/The Standup/2025-10-22 TheStandup - DHH Talks Omarchy/TheStandup - DHH Talks Omarchy [ljGPvgMPOn8].mp4", false, false, false, 1, [], 1, ~U[2025-10-22 12:01:27Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "https://twitch.tv/ThePrimeagen - I Stream on Twitch\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "TheStandup - DHH Talks Omarchy", 3954, false, "ljGPvgMPOn8", "https://www.youtube.com/watch?v=ljGPvgMPOn8", "/downloads/The Standup/2025-10-22 TheStandup - DHH Talks Omarchy/TheStandup - DHH Talks Omarchy [ljGPvgMPOn8].mp4", false, 1, ~U[2025-10-22 12:01:27Z]] 13:59:55.779 [debug] QUERY OK source="sources" db=0.3ms idle=6.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.779 [debug] QUERY OK source="media_items" db=0.6ms idle=3.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-18 16:30:32Z], 1] 13:59:55.781 [debug] QUERY OK source="media_items" db=1.6ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:04:06 - Blacksmith #ad \n00:04:44 - Who is Atlassian?\n00:15:34 - How Enterprise Software really works\n00:22:30 - Switching Browsers\n00:24:15 - Terminal Coffee #ad\n00:28:55 - Did AI make us lazy\n00:42:15 - AI Data centers and their impacts\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Standup - Jira Bought 2 Browsers???", "07e4537f-70cf-4a8c-a8d0-dd680472b093", 3275, false, "v9gsMFozXK0", "https://www.youtube.com/watch?v=v9gsMFozXK0", 33, "/downloads/The Standup/2025-09-18 The Standup - Jira Bought 2 Browsers???/The Standup - Jira Bought 2 Browsers??? [v9gsMFozXK0].mp4", false, false, false, 1, [], 1, ~U[2025-09-18 16:30:32Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:04:06 - Blacksmith #ad \n00:04:44 - Who is Atlassian?\n00:15:34 - How Enterprise Software really works\n00:22:30 - Switching Browsers\n00:24:15 - Terminal Coffee #ad\n00:28:55 - Did AI make us lazy\n00:42:15 - AI Data centers and their impacts\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Standup - Jira Bought 2 Browsers???", 3275, false, "v9gsMFozXK0", "https://www.youtube.com/watch?v=v9gsMFozXK0", "/downloads/The Standup/2025-09-18 The Standup - Jira Bought 2 Browsers???/The Standup - Jira Bought 2 Browsers??? [v9gsMFozXK0].mp4", false, 1, ~U[2025-09-18 16:30:32Z]] 13:59:55.782 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.783 [debug] QUERY OK source="media_items" db=0.6ms queue=0.3ms idle=4.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 18:22:50Z], 1] 13:59:55.787 [debug] QUERY OK source="media_items" db=3.0ms idle=5.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:03:50 - Blacksmith #ad \n00:04:27 - Is the IPhone Pro Strap cool?\n00:12:40 - Airpods Live Translation\n00:23:40 - The Worlds Best Scratchability Test\n00:26:30 - Apple adds matmul acceleration to A19 Pro GPU\n00:42:09 - GPT-5 Announcement\n00:54:38 - Paying Trash's Bills\n\nhttps://twitch.tv/ThePrimeagen - I Stream!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Most Insightful Apple Commentary | The Standup", "3b9f733b-1691-4410-a51a-66e44b264c87", 3580, false, "iCpcE6tMpz8", "https://www.youtube.com/watch?v=iCpcE6tMpz8", 34, "/downloads/The Standup/2025-09-12 The Most Insightful Apple Commentary | The Standup/The Most Insightful Apple Commentary | The Standup [iCpcE6tMpz8].mp4", false, false, false, 1, [], 1, ~U[2025-09-12 18:22:50Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thank You! https://blacksmith.sh our #sponsor today! Speed up your GitHub Actions AND pay less!\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:03:50 - Blacksmith #ad \n00:04:27 - Is the IPhone Pro Strap cool?\n00:12:40 - Airpods Live Translation\n00:23:40 - The Worlds Best Scratchability Test\n00:26:30 - Apple adds matmul acceleration to A19 Pro GPU\n00:42:09 - GPT-5 Announcement\n00:54:38 - Paying Trash's Bills\n\nhttps://twitch.tv/ThePrimeagen - I Stream!\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "The Most Insightful Apple Commentary | The Standup", 3580, false, "iCpcE6tMpz8", "https://www.youtube.com/watch?v=iCpcE6tMpz8", "/downloads/The Standup/2025-09-12 The Most Insightful Apple Commentary | The Standup/The Most Insightful Apple Commentary | The Standup [iCpcE6tMpz8].mp4", false, 1, ~U[2025-09-12 18:22:50Z]] 13:59:55.788 [debug] QUERY OK source="sources" db=0.9ms 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" = ?) [1] 13:59:55.789 [debug] QUERY OK source="media_items" db=0.4ms idle=7.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-21 13:30:17Z], 1] 13:59:55.792 [debug] QUERY OK source="media_items" db=1.9ms idle=7.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 Intro\n00:02:10 Printf Debugging\n00:10:20 RAD Debugger Origins\n00:25:00 PDB (Program Database) Limit\n00:27:27 RAD Linker\n00:28:40 Working for Epic\n00:32:13 What the hell is MUMPS\n00:33:28 D Sucks\n00:34:45 Oodle Adjacent\n00:35:40 How do steps work?\n00:42:50 INT 3 Instruction/Trap\n00:46:20 Step count\n00:47:50 Overwrite and replace\n00:49:42 The desire for user level INT 3 handling\n01:00:39 Alternative to User level INT 3\n01:03:10 Chrome Debugger complaints\n01:07:51 RAD Debug features\n01:16:52 Compatible languages\n01:18:41 Gabe Newell annoucement strategy\n01:19:37 Outro 1\n01:20:01 Cleverer than Stack pointers\n01:22:55 Prime pees on stream\n01:24:20 Faking addresses and the shadow stack\n01:27:50 Data breakpoints\n01:28:38 Prime shoots his shot\n01:32:46 TLDR\n01:34:28 Debugging in VM langs\n01:35:00 PUBE G\n01:36:28 Outro 2", "Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)", "65075bfa-d368-4a63-bf2e-dac0027eacb6", 5914, false, "O-3gEsfEm0g", "https://www.youtube.com/watch?v=O-3gEsfEm0g", 35, "/downloads/The Standup/2025-08-21 Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)/Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury) [O-3gEsfEm0g].mp4", false, false, false, 1, [], 1, ~U[2025-08-21 13:30:17Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 Intro\n00:02:10 Printf Debugging\n00:10:20 RAD Debugger Origins\n00:25:00 PDB (Program Database) Limit\n00:27:27 RAD Linker\n00:28:40 Working for Epic\n00:32:13 What the hell is MUMPS\n00:33:28 D Sucks\n00:34:45 Oodle Adjacent\n00:35:40 How do steps work?\n00:42:50 INT 3 Instruction/Trap\n00:46:20 Step count\n00:47:50 Overwrite and replace\n00:49:42 The desire for user level INT 3 handling\n01:00:39 Alternative to User level INT 3\n01:03:10 Chrome Debugger complaints\n01:07:51 RAD Debug features\n01:16:52 Compatible languages\n01:18:41 Gabe Newell annoucement strategy\n01:19:37 Outro 1\n01:20:01 Cleverer than Stack pointers\n01:22:55 Prime pees on stream\n01:24:20 Faking addresses and the shadow stack\n01:27:50 Data breakpoints\n01:28:38 Prime shoots his shot\n01:32:46 TLDR\n01:34:28 Debugging in VM langs\n01:35:00 PUBE G\n01:36:28 Outro 2", "Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)", 5914, false, "O-3gEsfEm0g", "https://www.youtube.com/watch?v=O-3gEsfEm0g", "/downloads/The Standup/2025-08-21 Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)/Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury) [O-3gEsfEm0g].mp4", false, 1, ~U[2025-08-21 13:30:17Z]] 13:59:55.793 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.794 [debug] QUERY OK source="media_items" db=0.6ms idle=6.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-14 13:30:56Z], 1] 13:59:55.796 [debug] QUERY OK source="media_items" db=1.3ms idle=5.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["When traffic spikes, Neon’s serverless Postgres autoscales to meet demand, without all that extra ops work. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:02:13 - neon.com #ad\n00:03:23 - Why Functional Programming Failed?\n00:10:20 - Erlang is Functional AND OOP\n00:15:00 - The Ruby to Rust Pipeline\n00:26:00 - Ginger Bill Rust Rant\n00:29:53 - Are Macros Good or Evil?\n00:43:30 - Printing in Rust VS Odin\n00:48:00 - Mechanism Not Policy\n00:57:45 - LSP Hater VS LSP Lover\n01:04:20 - are Package Managers required?\n01:21:10 - Advice to Future Language Creators", "2 Language Creators vs 2 Idiots | The Standup", "e4077f2d-09e1-4bd3-a9ab-14224fe58a15", 5070, false, "tXJfS6jI9Z0", "https://www.youtube.com/watch?v=tXJfS6jI9Z0", 36, "/downloads/The Standup/2025-08-14 2 Language Creators vs 2 Idiots | The Standup/2 Language Creators vs 2 Idiots | The Standup [tXJfS6jI9Z0].mp4", false, false, false, 1, [], 1, ~U[2025-08-14 13:30:56Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "When traffic spikes, Neon’s serverless Postgres autoscales to meet demand, without all that extra ops work. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Intro\n00:02:13 - neon.com #ad\n00:03:23 - Why Functional Programming Failed?\n00:10:20 - Erlang is Functional AND OOP\n00:15:00 - The Ruby to Rust Pipeline\n00:26:00 - Ginger Bill Rust Rant\n00:29:53 - Are Macros Good or Evil?\n00:43:30 - Printing in Rust VS Odin\n00:48:00 - Mechanism Not Policy\n00:57:45 - LSP Hater VS LSP Lover\n01:04:20 - are Package Managers required?\n01:21:10 - Advice to Future Language Creators", "2 Language Creators vs 2 Idiots | The Standup", 5070, false, "tXJfS6jI9Z0", "https://www.youtube.com/watch?v=tXJfS6jI9Z0", "/downloads/The Standup/2025-08-14 2 Language Creators vs 2 Idiots | The Standup/2 Language Creators vs 2 Idiots | The Standup [tXJfS6jI9Z0].mp4", false, 1, ~U[2025-08-14 13:30:56Z]] 13:59:55.796 [debug] QUERY OK source="sources" db=0.4ms idle=7.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.797 [debug] QUERY OK source="media_items" db=0.5ms idle=5.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-07 13:31:02Z], 1] 13:59:55.799 [debug] QUERY OK source="media_items" db=1.1ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Prime is a Great Host\n00:04:06 - Neon #ad\n00:05:04 - Giving a 2 hour talk\n00:10:16 - C++ Launch Night\n00:14:15 - Mount Rushmore of Programming Languages\n00:18:40 - What languages were influential and died off?\n00:24:00 - What is Plex\n00:42:00 - The Evolution of Languages\n00:45:40 - How Casey does Research + HOPL 5\n00:56:95 - Casey's Next Deep Dive\n01:00:00 - The Rise of Programming Historians", "The Evolution of Programming | The Standup", "0195d2cd-0d61-406b-903a-bf8eb38d8ce5", 4392, false, "qhzTawm3_6Y", "https://www.youtube.com/watch?v=qhzTawm3_6Y", 37, "/downloads/The Standup/2025-08-07 The Evolution of Programming | The Standup/The Evolution of Programming | The Standup [qhzTawm3_6Y].mp4", false, false, false, 1, [], 1, ~U[2025-08-07 13:31:02Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Ship Faster with Neon Postgres #ad \nNeon comes with Branching, Schema Diff, and Instant Point-In-Time Recovery to help you ship fast and recover faster. Get the free plan at https://neon.com\n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\n📍 Chapters:\n\n00:00:00 - Prime is a Great Host\n00:04:06 - Neon #ad\n00:05:04 - Giving a 2 hour talk\n00:10:16 - C++ Launch Night\n00:14:15 - Mount Rushmore of Programming Languages\n00:18:40 - What languages were influential and died off?\n00:24:00 - What is Plex\n00:42:00 - The Evolution of Languages\n00:45:40 - How Casey does Research + HOPL 5\n00:56:95 - Casey's Next Deep Dive\n01:00:00 - The Rise of Programming Historians", "The Evolution of Programming | The Standup", 4392, false, "qhzTawm3_6Y", "https://www.youtube.com/watch?v=qhzTawm3_6Y", "/downloads/The Standup/2025-08-07 The Evolution of Programming | The Standup/The Evolution of Programming | The Standup [qhzTawm3_6Y].mp4", false, 1, ~U[2025-08-07 13:31:02Z]] 13:59:55.799 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [1] 13:59:55.800 [debug] QUERY OK source="media_items" db=0.6ms queue=0.2ms idle=3.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-01 13:30:55Z], 1] 13:59:55.808 [debug] QUERY OK source="media_items" db=7.2ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nHosts:\n@ThePrimeagen \n@trash_dev \n@teej_dv \n@caseymuratori \n\nFor more about Casey: https://www.computerenhance.com\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\nDiscord https://discord.gg/ThePrimeagen\n\n00:00:00 - Intro\n00:01:12 - Running Galaga at compile time \n00:03:09 - J AI\n00:05:36 - The Ginger Bill Business model\n00:08:24 - OCaml + Rust features\n00:10:14 - Back on topic\n00:15:11 - Handmade Hero and inspiring others\n00:19:03 - Conferences", "Casey Muratori's Origin Story | The Standup", "a0d10857-df85-4e96-9260-fd16121a410a", 1562, false, "tpe1bLzydhU", "https://www.youtube.com/watch?v=tpe1bLzydhU", 38, "/downloads/The Standup/2025-08-01 Casey Muratori's Origin Story | The Standup/Casey Muratori's Origin Story | The Standup [tpe1bLzydhU].mp4", false, false, false, 1, [], 1, ~U[2025-08-01 13:30:55Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\nhttps://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Want to order coffee over SSH?\nssh terminal.shop\n\nHosts:\n@ThePrimeagen \n@trash_dev \n@teej_dv \n@caseymuratori \n\nFor more about Casey: https://www.computerenhance.com\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\nDiscord https://discord.gg/ThePrimeagen\n\n00:00:00 - Intro\n00:01:12 - Running Galaga at compile time \n00:03:09 - J AI\n00:05:36 - The Ginger Bill Business model\n00:08:24 - OCaml + Rust features\n00:10:14 - Back on topic\n00:15:11 - Handmade Hero and inspiring others\n00:19:03 - Conferences", "Casey Muratori's Origin Story | The Standup", 1562, false, "tpe1bLzydhU", "https://www.youtube.com/watch?v=tpe1bLzydhU", "/downloads/The Standup/2025-08-01 Casey Muratori's Origin Story | The Standup/Casey Muratori's Origin Story | The Standup [tpe1bLzydhU].mp4", false, 1, ~U[2025-08-01 13:30:55Z]] 13:59:55.809 [debug] QUERY OK source="sources" db=0.8ms idle=11.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.810 [debug] QUERY OK source="media_items" db=0.8ms idle=10.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-28 13:30:00Z], 1] 13:59:55.812 [debug] QUERY OK source="media_items" db=1.2ms idle=11.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\n## 📌 Chapters:\n\n00:00:00 - Intro & Teejs Medical Records Disaster \n00:04:20 - Code Rabbit Sponsor #ad \n00:05:04 - Nobody wants to work in Healthcare\n00:07:05 - Healthcare testing process\n00:12:00 - Epic's Development Pipeline Deep Dive \n00:21:33 - Load Testing Nightmare \n00:25:00 - The 45-Minute Site Outage \n00:27:50 - Class Registration Disaster \n00:32:00 - Everything Goes Wrong in Production \n00:35:55 - Netflix Static Variable Mistake \n00:39:00 - The Boss Who Spotted the Obvious Bug \n00:42:00 - Lady Gaga's Broken Countdown Billboard \n00:47:00 - 10 Requests /s Disaster \n00:49:30 - GraphQL Query Explosion\n\n## Key Topics:\n- Medical software development challenges and patient safety\n- Epic Systems development process and MUMPS language\n- Load testing disasters and production outages \n- Netflix development war stories\n- Server-side rendering performance pitfalls\n- GraphQL resolver optimization nightmares\n- The importance of proper testing before production releases\n\n## Hosts:\n- **TJ** (@teej_dv) - Epic Systems horror stories\n- **Trash Dev** (@trash_dev) - Load testing and Next.js disasters \n- **Prime** (@ThePrimeagen) - Netflix static variable nightmares", "Software Horror Stories | The Standup", "18c7fa50-060a-465f-9524-08810ccefc0b", 3044, false, "0_5aOO980uI", "https://www.youtube.com/watch?v=0_5aOO980uI", 39, "/downloads/The Standup/2025-07-28 Software Horror Stories | The Standup/Software Horror Stories | The Standup [0_5aOO980uI].mp4", false, false, false, 1, [], 1, ~U[2025-07-28 13:30:00Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Code Rabbit https://coderabbit.link/primeagen-vscode #sponsored \n\n## 📌 Chapters:\n\n00:00:00 - Intro & Teejs Medical Records Disaster \n00:04:20 - Code Rabbit Sponsor #ad \n00:05:04 - Nobody wants to work in Healthcare\n00:07:05 - Healthcare testing process\n00:12:00 - Epic's Development Pipeline Deep Dive \n00:21:33 - Load Testing Nightmare \n00:25:00 - The 45-Minute Site Outage \n00:27:50 - Class Registration Disaster \n00:32:00 - Everything Goes Wrong in Production \n00:35:55 - Netflix Static Variable Mistake \n00:39:00 - The Boss Who Spotted the Obvious Bug \n00:42:00 - Lady Gaga's Broken Countdown Billboard \n00:47:00 - 10 Requests /s Disaster \n00:49:30 - GraphQL Query Explosion\n\n## Key Topics:\n- Medical software development challenges and patient safety\n- Epic Systems development process and MUMPS language\n- Load testing disasters and production outages \n- Netflix development war stories\n- Server-side rendering performance pitfalls\n- GraphQL resolver optimization nightmares\n- The importance of proper testing before production releases\n\n## Hosts:\n- **TJ** (@teej_dv) - Epic Systems horror stories\n- **Trash Dev** (@trash_dev) - Load testing and Next.js disasters \n- **Prime** (@ThePrimeagen) - Netflix static variable nightmares", "Software Horror Stories | The Standup", 3044, false, "0_5aOO980uI", "https://www.youtube.com/watch?v=0_5aOO980uI", "/downloads/The Standup/2025-07-28 Software Horror Stories | The Standup/Software Horror Stories | The Standup [0_5aOO980uI].mp4", false, 1, ~U[2025-07-28 13:30:00Z]] 13:59:55.812 [debug] QUERY OK source="sources" db=0.4ms idle=11.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.813 [debug] QUERY OK source="media_items" db=0.6ms idle=4.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-23 13:30:32Z], 1] 13:59:55.816 [debug] QUERY OK source="media_items" db=1.5ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thank You! https://blacksmith.sh our sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://tailwindcss.com/sponsor Love Tailwind? Consider Sponsoring! \n\nIf you want delicious coffee sold only over SSH:\n\nssh terminal.shop\n\n🎙️ Hosts:\n- TJ @teej_dv\n- Trash Dev @trash_dev\n- Prime @ThePrimeagen\n\n🎯 Guest:\nAdam Wathan - Creator of Tailwind CSS\nhttps://adamwathan.me\nhttps://x.com/adamwathan\nhttps://tailwindcss.com/\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:04 - \"Open Source is Pain\" - Tailwind Creator\n00:04:37 - Sponsor: Blacksmith - Faster GitHub Actions #ad\n00:05:15 - The Reality of Open Source at Scale\n00:10:55 - Cost of Full-Time Open Source\n00:13:06 - Rust Rewrite & Performance Gains\n00:16:29 - Sponsorship vs Business Models\n00:22:48 - The Emotional Side of Open Source\n00:30:15 - The Courage to Fire Users\n00:37:46 - How Tailwind Spends Money\n00:44:04 - How to Champion Open Source while making money\n00:54:06 - Licenses in Open Source\n00:58:00 - Tailwind is a hard business\n01:00:14 - VC vs Lifestyle Open Source Projects\n01:07:50 - Replication in Open Source\n01:11:00 - Tailwind Fortnite Skins\n01:16:00 - We agree on the words finally\n01:18:00 - Thanks & Wrap Up\n\nKey topics include:\n- The reality of maintaining open source at massive scale\n- Why sponsorship models often fail and what works instead\n- The psychological challenges of community management\n- How to build sustainable businesses around open source\n- The future of developer tooling and AI's impact\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n🐬 Bonus Section 🐬   \n┆ ┆ ┆ ┆ ┆  \n┆ ┆ ࣪ ˖☆ ࣪⭑┆ ݁˖ .☆ . ݁ ˖\n☆⊹ ࣪ ┆ ˖ ࣪ ⊹ ࣪ ★ ⋆.˚ ⊹ ࣪ .  \n ࣪ ˖⋆˚★ ₊ ⊹  ࣪˖ ࣪ ₊ ࣪ ˖  .  \u2008˚ .  \n. ݁ ⊹ ࣪ ˖    ࣪ ˖    .  \u2008˚ .   *   . \n  . ݁    ݁   .  \u2008˚   *   . \n  .   .  \u2008˚ .  *   . *  *   . *   .   *   . \nDid you actually read this description?   .  \u2008˚ .   *  .\nWas it useful?  *  .  \u2008˚ . ˚  . *   .  *   .  *   . \nDid it have everything you were looking for?   .  \u2008 .  . *   . \nIf you wanted to see something different, what would that be? .  \u2008 . . *  \nDo you think Tailwind would have been as popular if it was named Headwind? .  \u2008˚ .  \nHow much Tailwind do you think Prime really knows?  .  \u2008˚ .   *   . \nWho do you want to see on The Standup next?   .  \u2008˚   *   . *   .  \n .  \u2008˚ .   *  .  \u2008˚ . ˚  .  \u2008 .  .  \u2008 . . *  .  \u2008˚ .  .  .  \u2008˚ .  .  \u2008˚   *   . *   .  *   .  *   .  *   .  *   .  *   .  *   .  *   .", "Tailwind Creator on the Challenges of Open Source | The Standup", "22da0e1e-5c9c-48c7-b789-b60350bda9e2", 4822, false, "OrHorwH5Pco", "https://www.youtube.com/watch?v=OrHorwH5Pco", 40, "/downloads/The Standup/2025-07-23 Tailwind Creator on the Challenges of Open Source | The Standup/Tailwind Creator on the Challenges of Open Source | The Standup [OrHorwH5Pco].mp4", false, false, false, 1, [], 1, ~U[2025-07-23 13:30:32Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thank You! https://blacksmith.sh our sponsor today! Speed up your GitHub Actions AND pay less!\n\nhttps://tailwindcss.com/sponsor Love Tailwind? Consider Sponsoring! \n\nIf you want delicious coffee sold only over SSH:\n\nssh terminal.shop\n\n🎙️ Hosts:\n- TJ @teej_dv\n- Trash Dev @trash_dev\n- Prime @ThePrimeagen\n\n🎯 Guest:\nAdam Wathan - Creator of Tailwind CSS\nhttps://adamwathan.me\nhttps://x.com/adamwathan\nhttps://tailwindcss.com/\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:04 - \"Open Source is Pain\" - Tailwind Creator\n00:04:37 - Sponsor: Blacksmith - Faster GitHub Actions #ad\n00:05:15 - The Reality of Open Source at Scale\n00:10:55 - Cost of Full-Time Open Source\n00:13:06 - Rust Rewrite & Performance Gains\n00:16:29 - Sponsorship vs Business Models\n00:22:48 - The Emotional Side of Open Source\n00:30:15 - The Courage to Fire Users\n00:37:46 - How Tailwind Spends Money\n00:44:04 - How to Champion Open Source while making money\n00:54:06 - Licenses in Open Source\n00:58:00 - Tailwind is a hard business\n01:00:14 - VC vs Lifestyle Open Source Projects\n01:07:50 - Replication in Open Source\n01:11:00 - Tailwind Fortnite Skins\n01:16:00 - We agree on the words finally\n01:18:00 - Thanks & Wrap Up\n\nKey topics include:\n- The reality of maintaining open source at massive scale\n- Why sponsorship models often fail and what works instead\n- The psychological challenges of community management\n- How to build sustainable businesses around open source\n- The future of developer tooling and AI's impact\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n🐬 Bonus Section 🐬   \n┆ ┆ ┆ ┆ ┆  \n┆ ┆ ࣪ ˖☆ ࣪⭑┆ ݁˖ .☆ . ݁ ˖\n☆⊹ ࣪ ┆ ˖ ࣪ ⊹ ࣪ ★ ⋆.˚ ⊹ ࣪ .  \n ࣪ ˖⋆˚★ ₊ ⊹  ࣪˖ ࣪ ₊ ࣪ ˖  .  \u2008˚ .  \n. ݁ ⊹ ࣪ ˖    ࣪ ˖    .  \u2008˚ .   *   . \n  . ݁    ݁   .  \u2008˚   *   . \n  .   .  \u2008˚ .  *   . *  *   . *   .   *   . \nDid you actually read this description?   .  \u2008˚ .   *  .\nWas it useful?  *  .  \u2008˚ . ˚  . *   .  *   .  *   . \nDid it have everything you were looking for?   .  \u2008 .  . *   . \nIf you wanted to see something different, what would that be? .  \u2008 . . *  \nDo you think Tailwind would have been as popular if it was named Headwind? .  \u2008˚ .  \nHow much Tailwind do you think Prime really knows?  .  \u2008˚ .   *   . \nWho do you want to see on The Standup next?   .  \u2008˚   *   . *   .  \n .  \u2008˚ .   *  .  \u2008˚ . ˚  .  \u2008 .  .  \u2008 . . *  .  \u2008˚ .  .  .  \u2008˚ .  .  \u2008˚   *   . *   .  *   .  *   .  *   .  *   .  *   .  *   .  *   .", "Tailwind Creator on the Challenges of Open Source | The Standup", 4822, false, "OrHorwH5Pco", "https://www.youtube.com/watch?v=OrHorwH5Pco", "/downloads/The Standup/2025-07-23 Tailwind Creator on the Challenges of Open Source | The Standup/Tailwind Creator on the Challenges of Open Source | The Standup [OrHorwH5Pco].mp4", false, 1, ~U[2025-07-23 13:30:32Z]] 13:59:55.816 [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" = ?) [1] 13:59:55.817 [debug] QUERY OK source="media_items" db=0.5ms idle=4.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-20 13:30:19Z], 1] 13:59:55.819 [debug] QUERY OK source="media_items" db=1.7ms idle=4.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on / theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:55 - The downward trend of performance expectations\n00:07:10 - The internet isn't to blame for slow speeds anymore\n00:11:27 - Dial up\n00:12:50 - School day routines and the reason behind modem sounds\n00:18:00 - Trash was a Catfish \n00:20:25 - Primes School Habits and his Moms prophetic Internet dream\n00:23:58 - Teej's highschool experience\n00:27:24 - Back on topic (its performance btw) WHO/WHAT is to blame\n00:39:38 - Speed = Sales and WHERE is the problem\n00:43:46 - Netflix BTW and WHEN performance is important\n00:48:35 - Too performant and waste\n00:53:14 - 'Hardware will catch up'\n01:01:13 - GPU vs CPU \n01:06:00 - Wrap up and closing thoughts \n\nLinks:\n- Casey's Performance Course: https://computerenhance.com\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nTeej: https://x.com/teej_dv\nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev\n\n---\n\nIn this episode of The Standup, we tackle one of the most frustrating aspects of modern computing: why everything feels so sluggish despite having incredibly powerful hardware. Casey Muratori joins us to share his perspective on performance culture and how we've collectively lowered our standards over the past two decades.\n\nFrom nostalgic stories about dial-up internet and modem sounds to serious discussions about software architecture, this conversation covers the technical, cultural, and business factors that have led to today's performance problems. We explore real-world examples from Netflix, discuss the impact of layered abstractions, and examine how corporate development pressures contribute to the problem.\n\nKey topics include:\n- How performance standards have declined while hardware has improved exponentially\n- The role of abstractions and frameworks in creating performance bottlenecks\n- Real Netflix case studies showing the complex relationship between performance and user behavior\n- Why the \"hardware will catch up\" mentality is fundamentally flawed\n- The difference between GPU and CPU performance paradigms\n- How AI might make performance problems even worse\n- Potential solutions through better substrate design\n\nWhether you're a developer frustrated with slow tools, a user wondering why your powerful computer still feels sluggish, or someone interested in the intersection of technology and culture, this discussion offers valuable insights into one of computing's most persistent challenges.", "Why Performance Actually Matters (The Standup)", "8a407749-de92-4d32-9125-dc9cebb62786", 4314, false, "RlTVMi4JzZA", "https://www.youtube.com/watch?v=RlTVMi4JzZA", 41, "/downloads/The Standup/2025-07-20 Why Performance Actually Matters (The Standup)/Why Performance Actually Matters (The Standup) [RlTVMi4JzZA].mp4", false, false, false, 1, [], 1, ~U[2025-07-20 13:30:19Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on / theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:01:55 - The downward trend of performance expectations\n00:07:10 - The internet isn't to blame for slow speeds anymore\n00:11:27 - Dial up\n00:12:50 - School day routines and the reason behind modem sounds\n00:18:00 - Trash was a Catfish \n00:20:25 - Primes School Habits and his Moms prophetic Internet dream\n00:23:58 - Teej's highschool experience\n00:27:24 - Back on topic (its performance btw) WHO/WHAT is to blame\n00:39:38 - Speed = Sales and WHERE is the problem\n00:43:46 - Netflix BTW and WHEN performance is important\n00:48:35 - Too performant and waste\n00:53:14 - 'Hardware will catch up'\n01:01:13 - GPU vs CPU \n01:06:00 - Wrap up and closing thoughts \n\nLinks:\n- Casey's Performance Course: https://computerenhance.com\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nTeej: https://x.com/teej_dv\nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev\n\n---\n\nIn this episode of The Standup, we tackle one of the most frustrating aspects of modern computing: why everything feels so sluggish despite having incredibly powerful hardware. Casey Muratori joins us to share his perspective on performance culture and how we've collectively lowered our standards over the past two decades.\n\nFrom nostalgic stories about dial-up internet and modem sounds to serious discussions about software architecture, this conversation covers the technical, cultural, and business factors that have led to today's performance problems. We explore real-world examples from Netflix, discuss the impact of layered abstractions, and examine how corporate development pressures contribute to the problem.\n\nKey topics include:\n- How performance standards have declined while hardware has improved exponentially\n- The role of abstractions and frameworks in creating performance bottlenecks\n- Real Netflix case studies showing the complex relationship between performance and user behavior\n- Why the \"hardware will catch up\" mentality is fundamentally flawed\n- The difference between GPU and CPU performance paradigms\n- How AI might make performance problems even worse\n- Potential solutions through better substrate design\n\nWhether you're a developer frustrated with slow tools, a user wondering why your powerful computer still feels sluggish, or someone interested in the intersection of technology and culture, this discussion offers valuable insights into one of computing's most persistent challenges.", "Why Performance Actually Matters (The Standup)", 4314, false, "RlTVMi4JzZA", "https://www.youtube.com/watch?v=RlTVMi4JzZA", "/downloads/The Standup/2025-07-20 Why Performance Actually Matters (The Standup)/Why Performance Actually Matters (The Standup) [RlTVMi4JzZA].mp4", false, 1, ~U[2025-07-20 13:30:19Z]] 13:59:55.821 [debug] QUERY OK source="sources" db=0.8ms queue=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" = ?) [1] 13:59:55.822 [debug] QUERY OK source="media_items" db=0.4ms idle=6.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-17 13:01:10Z], 1] 13:59:55.824 [debug] QUERY OK source="media_items" db=1.7ms idle=5.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n#sponsored \n\nssh terminal.shop\nhttps://lowlevel.academy/\n\n📌 Chapters:\n00:00:00 - Intro\n00:02:04 - Low level explains what we know\n00:05:32 - How does this compare to the CrowdStrike outage?\n00:07:13 - What is a memory fuzzer?\n00:10:17 - What was the impact of the outage?\n00:12:22 - Movie talk sidebar\n00:14:58 - AUTH, choices and risk managment\n00:19:33 - Cloudflare also went down\n00:21:14 - Knowledge management \n00:23:07 - Chaos at Netflix\n00:32:00 - DHH's response\n00:33:21- Personally effected\n00:34:15 - Internet Of Things Devices\n00:39:38 - Personal Network Security vs Faith in Humanity\n00:42:27 - More on IOT devices\n00:48:10 - Car talk and internet connected failures\n00:51:17 - Fail open\n00:55:30 - Could Rust have prevented this?\n00:57:45 - Wrap up and outro\n\n\nCould Your Company Survive a Google Outage?\nLast week, Google Cloud went down—and with it, a massive chunk of the internet. In this episode of Standup, we’re joined by security expert Low Level Learning to break down what actually happened, how a single null pointer crashed Google’s management plane, and why Cloudflare and other services followed. We also go deep on software fuzzing, dependency risk, fail-open systems, and the absurd reality of internet-connected lamps.\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev \nLow Level Learning: https://x.com/LowLevelTweets \n\n\n Bonus topics include: automated cat feeders, Teslas on fire, and Baby Shark as a disaster protocol.", "Google takes down the internet! (The Standup)", "8412713f-e9cf-46a4-af6e-4ec7f1bc7b22", 3559, false, "ZBk8oCmfpMg", "https://www.youtube.com/watch?v=ZBk8oCmfpMg", 42, "/downloads/The Standup/2025-07-17 Google takes down the internet! (The Standup)/Google takes down the internet! (The Standup) [ZBk8oCmfpMg].mp4", false, false, false, 1, [], 1, ~U[2025-07-17 13:01:10Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n#sponsored \n\nssh terminal.shop\nhttps://lowlevel.academy/\n\n📌 Chapters:\n00:00:00 - Intro\n00:02:04 - Low level explains what we know\n00:05:32 - How does this compare to the CrowdStrike outage?\n00:07:13 - What is a memory fuzzer?\n00:10:17 - What was the impact of the outage?\n00:12:22 - Movie talk sidebar\n00:14:58 - AUTH, choices and risk managment\n00:19:33 - Cloudflare also went down\n00:21:14 - Knowledge management \n00:23:07 - Chaos at Netflix\n00:32:00 - DHH's response\n00:33:21- Personally effected\n00:34:15 - Internet Of Things Devices\n00:39:38 - Personal Network Security vs Faith in Humanity\n00:42:27 - More on IOT devices\n00:48:10 - Car talk and internet connected failures\n00:51:17 - Fail open\n00:55:30 - Could Rust have prevented this?\n00:57:45 - Wrap up and outro\n\n\nCould Your Company Survive a Google Outage?\nLast week, Google Cloud went down—and with it, a massive chunk of the internet. In this episode of Standup, we’re joined by security expert Low Level Learning to break down what actually happened, how a single null pointer crashed Google’s management plane, and why Cloudflare and other services followed. We also go deep on software fuzzing, dependency risk, fail-open systems, and the absurd reality of internet-connected lamps.\n\nFeaturing: \nPrime: https://x.com/ThePrimeagen \nCasey Muratori: https://x.com/cmuratori\nTrash Dev: https://x.com/trashh_dev \nLow Level Learning: https://x.com/LowLevelTweets \n\n\n Bonus topics include: automated cat feeders, Teslas on fire, and Baby Shark as a disaster protocol.", "Google takes down the internet! (The Standup)", 3559, false, "ZBk8oCmfpMg", "https://www.youtube.com/watch?v=ZBk8oCmfpMg", "/downloads/The Standup/2025-07-17 Google takes down the internet! (The Standup)/Google takes down the internet! (The Standup) [ZBk8oCmfpMg].mp4", false, 1, ~U[2025-07-17 13:01:10Z]] 13:59:55.825 [debug] QUERY OK source="sources" db=0.8ms idle=7.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.826 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=6.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-15 13:30:27Z], 1] 13:59:55.829 [debug] QUERY OK source="media_items" db=2.1ms idle=5.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on https://www.twitch.tv/theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - balls.yoga, drama & intro\n00:02:00 - Building OpenCode: terminal AI agents\n00:03:00 - Bolt.new Reward Ceremony - July 26 10AM PST\n00:03:18 - Agent architecture basics explained\n00:04:08 - What is an AI Agent?\n00:05:00 - Prompt engineering and tool calling\n00:06:10 - OpenCode UX and mobile plans\n00:07:27 - Why OpenCode runs agents locally\n00:08:34 - Vision for mobile remote dev workflows\n00:09:15 - The reality of build opencode\n00:10:10 - Claude vs Opus vs others\n00:13:32 - Tool usage & LSP integration\n00:14:20 - LSP tool feedback loop\n00:17:00 - Claude is best at calling tools\n00:18:10 - Prompt tuning limitations and expectations\n00:22:20 - Modeling agent loops with tool calls\n00:24:40 - Why building a real agent isn’t just weekend work\n00:26:20 - Security tradeoffs in early development\n00:28:30 - Loop management & lossy compression\n00:29:40 - Session design & managing context\n00:30:40 - Parallel sessions and subagents\n00:33:20 - Adam banned from Twitch by his cofounder\n00:34:20 - OpenCode & Terminal.Shop development connection\n00:35:00 - What surprised them building an agent\n00:36:30 - Why TUIs are hard compared to web\n00:37:30 - Layering, pixel constraints, UI struggles\n00:38:30 - Final laughs & wrap-up\n00:39:00 - Plug for OpenCode: sst.dev/opencode\n00:40:00 - Outro: still no clue how agents work, but fun ride\n\n⸻\n\nTopics Covered:\n • AI agents in terminal environments\n • OpenCode’s CLI-first agent approach\n • Loop-based tool calling in LLMs\n • Integrating LSP feedback into agents\n • Prompt engineering & model tool awareness\n • Evaluating agents: benchmarks & metrics\n • Local vs remote dev environments\n • Designing for low-friction agent UX\n • Safety, permission models & sandboxing\n • The tradeoffs of TUIs vs web UIs\n • Session design, compression & memory limits\n • Humor, Twitch drama & voice AI characters", "What even is an AI Agent?! (The Standup)", "09f8691d-afa6-40bb-bafa-77fd66f3fe1b", 2417, false, "VsTbgYawoVc", "https://www.youtube.com/watch?v=VsTbgYawoVc", 43, "/downloads/The Standup/2025-07-15 What even is an AI Agent?! (The Standup)/What even is an AI Agent?! (The Standup) [VsTbgYawoVc].mp4", false, false, false, 1, [], 1, ~U[2025-07-15 13:30:27Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Watch the https://bolt.new Reward Ceremony Live!\nJuly 26th 10AM PST on https://www.twitch.tv/theprimeagen\n#sponsored https://balls.yoga\n\n📌 Chapters:\n\n00:00:00 - balls.yoga, drama & intro\n00:02:00 - Building OpenCode: terminal AI agents\n00:03:00 - Bolt.new Reward Ceremony - July 26 10AM PST\n00:03:18 - Agent architecture basics explained\n00:04:08 - What is an AI Agent?\n00:05:00 - Prompt engineering and tool calling\n00:06:10 - OpenCode UX and mobile plans\n00:07:27 - Why OpenCode runs agents locally\n00:08:34 - Vision for mobile remote dev workflows\n00:09:15 - The reality of build opencode\n00:10:10 - Claude vs Opus vs others\n00:13:32 - Tool usage & LSP integration\n00:14:20 - LSP tool feedback loop\n00:17:00 - Claude is best at calling tools\n00:18:10 - Prompt tuning limitations and expectations\n00:22:20 - Modeling agent loops with tool calls\n00:24:40 - Why building a real agent isn’t just weekend work\n00:26:20 - Security tradeoffs in early development\n00:28:30 - Loop management & lossy compression\n00:29:40 - Session design & managing context\n00:30:40 - Parallel sessions and subagents\n00:33:20 - Adam banned from Twitch by his cofounder\n00:34:20 - OpenCode & Terminal.Shop development connection\n00:35:00 - What surprised them building an agent\n00:36:30 - Why TUIs are hard compared to web\n00:37:30 - Layering, pixel constraints, UI struggles\n00:38:30 - Final laughs & wrap-up\n00:39:00 - Plug for OpenCode: sst.dev/opencode\n00:40:00 - Outro: still no clue how agents work, but fun ride\n\n⸻\n\nTopics Covered:\n • AI agents in terminal environments\n • OpenCode’s CLI-first agent approach\n • Loop-based tool calling in LLMs\n • Integrating LSP feedback into agents\n • Prompt engineering & model tool awareness\n • Evaluating agents: benchmarks & metrics\n • Local vs remote dev environments\n • Designing for low-friction agent UX\n • Safety, permission models & sandboxing\n • The tradeoffs of TUIs vs web UIs\n • Session design, compression & memory limits\n • Humor, Twitch drama & voice AI characters", "What even is an AI Agent?! (The Standup)", 2417, false, "VsTbgYawoVc", "https://www.youtube.com/watch?v=VsTbgYawoVc", "/downloads/The Standup/2025-07-15 What even is an AI Agent?! (The Standup)/What even is an AI Agent?! (The Standup) [VsTbgYawoVc].mp4", false, 1, ~U[2025-07-15 13:30:27Z]] 13:59:55.830 [debug] QUERY OK source="sources" db=0.4ms idle=7.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.830 [debug] QUERY OK source="media_items" db=0.6ms idle=6.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 13:30:39Z], 1] 13:59:55.854 [debug] QUERY OK source="media_items" db=23.1ms idle=5.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:00:42 - Who’s actually a “web developer”?\n00:02:31 - Trash’s live intro & TypeScript presentation setup\n00:03:59 - Sentry #ad\n00:04:38 - Excess property checks in TS\n00:09:42 - WTF: Object spreads silence type errors\n00:14:30 - React prop spreading madness\n00:18:22 - Structural vs duck typing debate\n00:24:00 - WTF: Enums and why everyone hates them\n00:27:45 - Enum strings vs numbers behavior\n00:33:10 - Why enums in Node are cursed\n00:36:55 - Safer enum alternatives using const objects\n00:43:10 - TS quirks: Boolean filter keeps undefined in types\n00:46:40 - TSReset: The “CSS reset” for TypeScript\n00:49:01 - WTF: Empty object {} lets everything through\n00:52:32 - Doom rendered in TypeScript type system\n00:54:00 - Type-level math in TS (it’s real)\n00:56:33 - Scaling hell: TS performance bottlenecks\n01:00:01 - Flamegraphs and fighting TS perf without docs\n01:04:55 - TS inference vs explicit typing in large codebases\n01:09:30 - Prime’s favorite TS bug strikes again\n01:14:01 - Casey breaks down the compiler logic\n01:17:50 - Is this a TypeScript bug or a feature?\n01:22:44 - Final thoughts and community love\n\n---\n\n**Topics Covered:**\n\n • TypeScript excess property checks\n • Enums vs object literals\n • Structural vs duck typing\n • TS compiler edge cases\n • WTFs that break your mental model\n • Type-level math\n • Performance debugging hell\n • Massive monorepo pain points\n • The one TypeScript bug Prime can’t let go", "WTF Typescript?! (The Standup)", "ab520a3f-b79d-4593-897b-dd97ffb75d03", 5106, false, "dh6BCSzaF6g", "https://www.youtube.com/watch?v=dh6BCSzaF6g", 44, "/downloads/The Standup/2025-07-08 WTF Typescript?! (The Standup)/WTF Typescript?! (The Standup) [dh6BCSzaF6g].mp4", false, false, false, 1, [], 1, ~U[2025-07-08 13:30:39Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Sentry https://sentry.io | Code breaks, fix it faster\n\n📌 Chapters:\n\n00:00:00 - Intro\n00:00:42 - Who’s actually a “web developer”?\n00:02:31 - Trash’s live intro & TypeScript presentation setup\n00:03:59 - Sentry #ad\n00:04:38 - Excess property checks in TS\n00:09:42 - WTF: Object spreads silence type errors\n00:14:30 - React prop spreading madness\n00:18:22 - Structural vs duck typing debate\n00:24:00 - WTF: Enums and why everyone hates them\n00:27:45 - Enum strings vs numbers behavior\n00:33:10 - Why enums in Node are cursed\n00:36:55 - Safer enum alternatives using const objects\n00:43:10 - TS quirks: Boolean filter keeps undefined in types\n00:46:40 - TSReset: The “CSS reset” for TypeScript\n00:49:01 - WTF: Empty object {} lets everything through\n00:52:32 - Doom rendered in TypeScript type system\n00:54:00 - Type-level math in TS (it’s real)\n00:56:33 - Scaling hell: TS performance bottlenecks\n01:00:01 - Flamegraphs and fighting TS perf without docs\n01:04:55 - TS inference vs explicit typing in large codebases\n01:09:30 - Prime’s favorite TS bug strikes again\n01:14:01 - Casey breaks down the compiler logic\n01:17:50 - Is this a TypeScript bug or a feature?\n01:22:44 - Final thoughts and community love\n\n---\n\n**Topics Covered:**\n\n • TypeScript excess property checks\n • Enums vs object literals\n • Structural vs duck typing\n • TS compiler edge cases\n • WTFs that break your mental model\n • Type-level math\n • Performance debugging hell\n • Massive monorepo pain points\n • The one TypeScript bug Prime can’t let go", "WTF Typescript?! (The Standup)", 5106, false, "dh6BCSzaF6g", "https://www.youtube.com/watch?v=dh6BCSzaF6g", "/downloads/The Standup/2025-07-08 WTF Typescript?! (The Standup)/WTF Typescript?! (The Standup) [dh6BCSzaF6g].mp4", false, 1, ~U[2025-07-08 13:30:39Z]] 13:59:55.855 [debug] QUERY OK source="sources" db=0.5ms idle=28.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.856 [debug] QUERY OK source="media_items" db=0.9ms idle=26.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-30 13:30:55Z], 1] 13:59:55.860 [debug] QUERY OK source="media_items" db=2.8ms idle=27.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["ssh terminal.shop\n\nOpencode\nhttps://github.com/sst/opencode\n\n📌 Chapters:\n\n00:00:00 - Intro & Chess Talk\n00:01:55 - Who uses AI\n00:02:49 - ssh terminal.shop ad\n00:03:22 - Dax developing opencode\n00:11:00 - ssh terminal.shop TOS\n00:13:32 - Casey's take on AI\n00:31:22 - Teej's take on AI\n00:35:55 - Prime's take on AI\n00:40:40 - Zero to One development being prioritized\n00:48:00 - Begging Dax to teach us to build an agent\n\n---\n\n**Topics Covered:**\n\n- AI agents in programming workflows \n- Using LLMs for 0-to-1 product development \n- Prototyping with AI tools \n- Maintaining vs generating code \n- When AI fails in complex codebases \n- Developer productivity tools \n- Code quality and long-term maintainability \n- API stability and tech stack evolution \n- Vibe coding vs structured design \n- Frontend frustration: CSS, layout, and abstractions \n- Real-world use cases for AI-assisted coding \n- Opinions on OpenCode and agent tooling \n- The future of software automation", "How **WE** Use AI In Software Development", "1c413cb0-dc83-4d76-8942-debbedc82bad", 2970, false, "s7YQHWzZMYY", "https://www.youtube.com/watch?v=s7YQHWzZMYY", 45, "/downloads/The Standup/2025-06-30 How **WE** Use AI In Software Development/How **WE** Use AI In Software Development [s7YQHWzZMYY].mp4", false, false, false, 1, [], 1, ~U[2025-06-30 13:30:55Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "ssh terminal.shop\n\nOpencode\nhttps://github.com/sst/opencode\n\n📌 Chapters:\n\n00:00:00 - Intro & Chess Talk\n00:01:55 - Who uses AI\n00:02:49 - ssh terminal.shop ad\n00:03:22 - Dax developing opencode\n00:11:00 - ssh terminal.shop TOS\n00:13:32 - Casey's take on AI\n00:31:22 - Teej's take on AI\n00:35:55 - Prime's take on AI\n00:40:40 - Zero to One development being prioritized\n00:48:00 - Begging Dax to teach us to build an agent\n\n---\n\n**Topics Covered:**\n\n- AI agents in programming workflows \n- Using LLMs for 0-to-1 product development \n- Prototyping with AI tools \n- Maintaining vs generating code \n- When AI fails in complex codebases \n- Developer productivity tools \n- Code quality and long-term maintainability \n- API stability and tech stack evolution \n- Vibe coding vs structured design \n- Frontend frustration: CSS, layout, and abstractions \n- Real-world use cases for AI-assisted coding \n- Opinions on OpenCode and agent tooling \n- The future of software automation", "How **WE** Use AI In Software Development", 2970, false, "s7YQHWzZMYY", "https://www.youtube.com/watch?v=s7YQHWzZMYY", "/downloads/The Standup/2025-06-30 How **WE** Use AI In Software Development/How **WE** Use AI In Software Development [s7YQHWzZMYY].mp4", false, 1, ~U[2025-06-30 13:30:55Z]] 13:59:55.861 [debug] QUERY OK source="sources" db=0.5ms idle=30.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.864 [debug] QUERY OK source="media_items" db=1.5ms queue=0.5ms idle=7.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-26 11:00:16Z], 1] 13:59:55.869 [debug] QUERY OK source="media_items" db=3.1ms idle=10.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Order coffee over SSH!\nssh terminal.shop\n\n📌 Chapters:\n\n00:00:00 - Intro Bonus Episode!\n00:04:10 - Twofish\n00:04:28 - ssh terminal.shop ad\n00:05:01 - Nothing is going to work!\n00:07:22 - Prime shares Vibe Coding Experience\n00:08:58 - Casey hates progress\n00:13:40 - Casey endorses Javascript\n00:14:21- Can AI Reduce the Entropy of a System?\n00:19:10 - Chopping Wood + AI\n00:22:05 - AI and Security \n00:26:26 - No Coders learning to Code\n00:30:30 - Learning without shortcuts VS with AI\n00:36:27 - We Love You\n\n---\n\nTopics Covered:\n• Why software always breaks\n• API fragility and long-term reliability\n• AI use in insecure coding patterns\n• Software complexity and maintenance\n• AI and security risks\n• LLMs vs traditional frameworks\n• Education and AI-assisted learning\n• AI-generated code quality concerns\n• Entropy and codebase maintenance\n• Future risks of AI-generated exploits\n• Programming fundamentals vs vibe coding\n• Experience vs speed trade-offs\n• Reinforcement learning and code refinement\n• Safe AI use in education and bootcamps", "Why Does Software Keep Breaking?", "24d7bf5f-df5c-49eb-b308-414e184a2daa", 2286, false, "Aqj1Z1vgE6I", "https://www.youtube.com/watch?v=Aqj1Z1vgE6I", 46, "/downloads/The Standup/2025-06-26 Why Does Software Keep Breaking?/Why Does Software Keep Breaking? [Aqj1Z1vgE6I].mp4", false, false, false, 1, [], 1, ~U[2025-06-26 11:00:16Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "https://twitch.tv/ThePrimeagen - I Stream 5 days a Week\n\nhttps://twitter.com/terminaldotshop - Order coffee over SSH!\nssh terminal.shop\n\n📌 Chapters:\n\n00:00:00 - Intro Bonus Episode!\n00:04:10 - Twofish\n00:04:28 - ssh terminal.shop ad\n00:05:01 - Nothing is going to work!\n00:07:22 - Prime shares Vibe Coding Experience\n00:08:58 - Casey hates progress\n00:13:40 - Casey endorses Javascript\n00:14:21- Can AI Reduce the Entropy of a System?\n00:19:10 - Chopping Wood + AI\n00:22:05 - AI and Security \n00:26:26 - No Coders learning to Code\n00:30:30 - Learning without shortcuts VS with AI\n00:36:27 - We Love You\n\n---\n\nTopics Covered:\n• Why software always breaks\n• API fragility and long-term reliability\n• AI use in insecure coding patterns\n• Software complexity and maintenance\n• AI and security risks\n• LLMs vs traditional frameworks\n• Education and AI-assisted learning\n• AI-generated code quality concerns\n• Entropy and codebase maintenance\n• Future risks of AI-generated exploits\n• Programming fundamentals vs vibe coding\n• Experience vs speed trade-offs\n• Reinforcement learning and code refinement\n• Safe AI use in education and bootcamps", "Why Does Software Keep Breaking?", 2286, false, "Aqj1Z1vgE6I", "https://www.youtube.com/watch?v=Aqj1Z1vgE6I", "/downloads/The Standup/2025-06-26 Why Does Software Keep Breaking?/Why Does Software Keep Breaking? [Aqj1Z1vgE6I].mp4", false, 1, ~U[2025-06-26 11:00:16Z]] 13:59:55.873 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=15.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.875 [debug] QUERY OK source="media_items" db=2.4ms idle=13.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-20 13:04:45Z], 1] 13:59:55.879 [debug] QUERY OK source="media_items" db=2.6ms idle=14.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎹 Finding the Right Keyboard\n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we talk about all things Keyboards.\n\nWe dive deep into:\n\n- Keyboard Obsession Origins\n- Mechanical Keyboards 101: Switch types, thock vs. clicky, creamy vs. crispy\n- Keychron, GMMK Pro, Dactyl Manuform & Voyager Reviews\n- Box Switches & Keycap Profiles (Cherry, DSA, OEM)\n- Silent Switches vs. Clicky Switches Debate\n- Typing Ergonomics & Wrist Pain Fixes\n- Split Keyboards, Thumb Clusters, and Concavity Explained\n- Custom Keyboards with RGB & Anime Keycaps\n- Keyboard Lubing\n- ZMK vs. QMK Keyboard Programming\n- Typing Competitions & Internet Speed Typing Lore\n- Casey’s Journey: From Amiga to Custom Builds\n- ASMR & Key Sounds Showcase\n- Trash’s Keyboard Garage Sale Finds\n- Ergonomic vs. Aesthetic Keyboards\n- How Much is Too Much for a Keyboard?\n\n⸻\n\n\n📌 Chapters:\n0:00 - intro + banter\n2:13 - the only coffee to drink\n3:50 - who are the keyboard fiends\n5:22 - sponsor: CodeRabbit \n6:03 - Casey learns about Keyboards\n2:05 - is college still worth it in 2025? \n5:48 - the cost of college in the U.S. vs Europe \n10:24 - What is Thock?\n15:45 - What are Box Switches?\n17:08 - Trashes Keyboard\n24:00 - Primes insane keyboard\n25:45 - Caseys keyboard\n27:00 - Programming your Keyboard\n29:25 - Touch Typing and the Home-Row\n33:30 Teej's keyboard\n36:38 - Trash's AOL Dragonball Z Battles\n37:55 - More Prime Keyboards\n42:18 - How much is too much money on a Keyboard\n45:00 - Lube talk\n47:05 - Mice suck\n50:05 - Casey's Keycaps\n53:56 - Pressure\n58:55 - Prime is NOT in charge of the Airbnb\n1:00:40 - Outro and Inspiration\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.", "Keyboard Show and Tell | The Standup", "45871a99-63a1-422b-ad7f-98e0c1a54c4e", 3885, false, "otYrZPbzfV0", "https://www.youtube.com/watch?v=otYrZPbzfV0", 47, "/downloads/The Standup/2025-06-20 Keyboard Show and Tell | The Standup/Keyboard Show and Tell | The Standup [otYrZPbzfV0].mp4", false, false, false, 1, [], 1, ~U[2025-06-20 13:04:45Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎹 Finding the Right Keyboard\n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we talk about all things Keyboards.\n\nWe dive deep into:\n\n- Keyboard Obsession Origins\n- Mechanical Keyboards 101: Switch types, thock vs. clicky, creamy vs. crispy\n- Keychron, GMMK Pro, Dactyl Manuform & Voyager Reviews\n- Box Switches & Keycap Profiles (Cherry, DSA, OEM)\n- Silent Switches vs. Clicky Switches Debate\n- Typing Ergonomics & Wrist Pain Fixes\n- Split Keyboards, Thumb Clusters, and Concavity Explained\n- Custom Keyboards with RGB & Anime Keycaps\n- Keyboard Lubing\n- ZMK vs. QMK Keyboard Programming\n- Typing Competitions & Internet Speed Typing Lore\n- Casey’s Journey: From Amiga to Custom Builds\n- ASMR & Key Sounds Showcase\n- Trash’s Keyboard Garage Sale Finds\n- Ergonomic vs. Aesthetic Keyboards\n- How Much is Too Much for a Keyboard?\n\n⸻\n\n\n📌 Chapters:\n0:00 - intro + banter\n2:13 - the only coffee to drink\n3:50 - who are the keyboard fiends\n5:22 - sponsor: CodeRabbit \n6:03 - Casey learns about Keyboards\n2:05 - is college still worth it in 2025? \n5:48 - the cost of college in the U.S. vs Europe \n10:24 - What is Thock?\n15:45 - What are Box Switches?\n17:08 - Trashes Keyboard\n24:00 - Primes insane keyboard\n25:45 - Caseys keyboard\n27:00 - Programming your Keyboard\n29:25 - Touch Typing and the Home-Row\n33:30 Teej's keyboard\n36:38 - Trash's AOL Dragonball Z Battles\n37:55 - More Prime Keyboards\n42:18 - How much is too much money on a Keyboard\n45:00 - Lube talk\n47:05 - Mice suck\n50:05 - Casey's Keycaps\n53:56 - Pressure\n58:55 - Prime is NOT in charge of the Airbnb\n1:00:40 - Outro and Inspiration\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.", "Keyboard Show and Tell | The Standup", 3885, false, "otYrZPbzfV0", "https://www.youtube.com/watch?v=otYrZPbzfV0", "/downloads/The Standup/2025-06-20 Keyboard Show and Tell | The Standup/Keyboard Show and Tell | The Standup [otYrZPbzfV0].mp4", false, 1, ~U[2025-06-20 13:04:45Z]] 13:59:55.880 [debug] QUERY OK source="sources" db=0.8ms idle=14.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.882 [debug] QUERY OK source="media_items" db=1.9ms idle=11.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-18 14:01:31Z], 1] 13:59:55.884 [debug] QUERY OK source="media_items" db=1.5ms idle=10.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nssh terminal.shop\n\n00:00:00 - Intro\n00:00:57 - The New Standup Dress Code\n00:03:38 - What we're gonna talk about\n00:05:05 - Code Rabbit Ad!\n00:05:50 - Prime and Begin argue about Botched Rebases\n00:09:21 - What Source Control *Should* Be \n00:20:01 - Casey and Begin agree on the future Source Control\n00:26:00 - Prime makes Git Branching even more Complicated by comparing it to Quantum Mechanics\n00:27:56 - The Idiot's Perspective\n00:34:00 - When Teej deals with Merges\n00:36:48 - Conway's Law informs Git process\n00:42:05 - Google Docs Analogy\n00:45:30 - How Real Developers Ship Code\n00:47:55 - What Should Version Control be?\n00:50:54 - Would Casey let a Junior Eng roll their own VCS\n00:59:25 - Why Prime Rebases and we all Fight\n01:16:50 - Begin's Law\n01:17:22 - Git Hooks\n01:23:48 - Git Koans", "The Real Problems w/ Git", "356efdcc-a95d-41b8-8153-6658b46b90b0", 5267, false, "t6qL_FbLArk", "https://www.youtube.com/watch?v=t6qL_FbLArk", 48, "/downloads/The Standup/2025-06-18 The Real Problems w⧸ Git/The Real Problems w⧸ Git [t6qL_FbLArk].mp4", false, false, false, 1, [], 1, ~U[2025-06-18 14:01:31Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\nssh terminal.shop\n\n00:00:00 - Intro\n00:00:57 - The New Standup Dress Code\n00:03:38 - What we're gonna talk about\n00:05:05 - Code Rabbit Ad!\n00:05:50 - Prime and Begin argue about Botched Rebases\n00:09:21 - What Source Control *Should* Be \n00:20:01 - Casey and Begin agree on the future Source Control\n00:26:00 - Prime makes Git Branching even more Complicated by comparing it to Quantum Mechanics\n00:27:56 - The Idiot's Perspective\n00:34:00 - When Teej deals with Merges\n00:36:48 - Conway's Law informs Git process\n00:42:05 - Google Docs Analogy\n00:45:30 - How Real Developers Ship Code\n00:47:55 - What Should Version Control be?\n00:50:54 - Would Casey let a Junior Eng roll their own VCS\n00:59:25 - Why Prime Rebases and we all Fight\n01:16:50 - Begin's Law\n01:17:22 - Git Hooks\n01:23:48 - Git Koans", "The Real Problems w/ Git", 5267, false, "t6qL_FbLArk", "https://www.youtube.com/watch?v=t6qL_FbLArk", "/downloads/The Standup/2025-06-18 The Real Problems w⧸ Git/The Real Problems w⧸ Git [t6qL_FbLArk].mp4", false, 1, ~U[2025-06-18 14:01:31Z]] 13:59:55.885 [debug] QUERY OK source="sources" db=0.6ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.887 [debug] QUERY OK source="media_items" db=1.1ms idle=7.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-13 13:52:42Z], 1] 13:59:55.889 [debug] QUERY OK source="media_items" db=1.7ms idle=7.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Thanks to our sponsor, https://blacksmith.sh today! Speed up your GitHub Actions AND pay less!!\n\nssh terminal.shop\n\n00:00:00 - Trash Has Other Standups?!\n00:00:40 - Trash Worked on Main frames\n00:07:03 - Trash's Actual Advice\n00:09:00 - Blacksmith.sh Sponsor\n00:09:44 - Begin Transitions Into Tech\n00:14:01 - Begin Actual Advice\n00:17:22 - Begin's Craziest Story?!\n00:25:33 - TJ's First Job & Career Track\n00:33:10 - What we look for in hiring\n00:35:01 - Prime yapping\n00:44:55 - Software is a social game\n00:50:33 - Begin gets entire we-work banned from Stack Overflow", "How We Got Our First Dev Job", "78cb6212-8b91-465e-9d70-1c793f0ba91a", 3246, false, "_CwpzZ8AVio", "https://www.youtube.com/watch?v=_CwpzZ8AVio", 49, "/downloads/The Standup/2025-06-13 How We Got Our First Dev Job/How We Got Our First Dev Job [_CwpzZ8AVio].mp4", false, false, false, 1, [], 1, ~U[2025-06-13 13:52:42Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Thanks to our sponsor, https://blacksmith.sh today! Speed up your GitHub Actions AND pay less!!\n\nssh terminal.shop\n\n00:00:00 - Trash Has Other Standups?!\n00:00:40 - Trash Worked on Main frames\n00:07:03 - Trash's Actual Advice\n00:09:00 - Blacksmith.sh Sponsor\n00:09:44 - Begin Transitions Into Tech\n00:14:01 - Begin Actual Advice\n00:17:22 - Begin's Craziest Story?!\n00:25:33 - TJ's First Job & Career Track\n00:33:10 - What we look for in hiring\n00:35:01 - Prime yapping\n00:44:55 - Software is a social game\n00:50:33 - Begin gets entire we-work banned from Stack Overflow", "How We Got Our First Dev Job", 3246, false, "_CwpzZ8AVio", "https://www.youtube.com/watch?v=_CwpzZ8AVio", "/downloads/The Standup/2025-06-13 How We Got Our First Dev Job/How We Got Our First Dev Job [_CwpzZ8AVio].mp4", false, 1, ~U[2025-06-13 13:52:42Z]] 13:59:55.890 [debug] QUERY OK source="sources" db=0.9ms idle=6.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.891 [debug] QUERY OK source="media_items" db=0.6ms idle=6.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-11 14:02:47Z], 1] 13:59:55.893 [debug] QUERY OK source="media_items" db=1.7ms idle=6.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💸 $1M+ hackathon is live — https://hackathon.dev\n\nMicrosoft just open-sourced Copilot Chat for VS Code — but is it a W or a panic move? 👀\n\nPrime, Teej, Casey & Trash break it all down:\n⚔️ Cursor & Windsurf eating VS Code’s lunch\n🧠 Is MSFT losing the AI dev wars?\n🌐 Open source or just open copium?\n💀 Also: mustaches, rats, and corporate trauma\n\n\n\n📌 Chapters:\n0:00:00 intro \n0:03:25 Trash humiliated by a German Man\n0:05:23 Prime admits he knows nothing about TMNT\n0:06:00 Sponsor: Bolt\n0:06:48 VSCODE Copilot going Open Source 4 Real\n0:16:11 Inept vs Incapable (semantics)\n0:25:37 AI Models vs AI Integration\n0:41:20 Economics and Cheese Puffs\n0:57:00 Klarna Klarna Klarna!\n1:08:00 use code \"Casey\" at check w/ Klarna\n1:09:42 Vote Teej!", "Microsoft Admits AI Defeat?", "b4902acf-aaee-4da0-96fa-615a4efff074", 4277, false, "l6K9Q7hsh18", "https://www.youtube.com/watch?v=l6K9Q7hsh18", 50, "/downloads/The Standup/2025-06-11 Microsoft Admits AI Defeat?/Microsoft Admits AI Defeat? [l6K9Q7hsh18].mp4", false, false, false, 1, [], 1, ~U[2025-06-11 14:02:47Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "💸 $1M+ hackathon is live — https://hackathon.dev\n\nMicrosoft just open-sourced Copilot Chat for VS Code — but is it a W or a panic move? 👀\n\nPrime, Teej, Casey & Trash break it all down:\n⚔️ Cursor & Windsurf eating VS Code’s lunch\n🧠 Is MSFT losing the AI dev wars?\n🌐 Open source or just open copium?\n💀 Also: mustaches, rats, and corporate trauma\n\n\n\n📌 Chapters:\n0:00:00 intro \n0:03:25 Trash humiliated by a German Man\n0:05:23 Prime admits he knows nothing about TMNT\n0:06:00 Sponsor: Bolt\n0:06:48 VSCODE Copilot going Open Source 4 Real\n0:16:11 Inept vs Incapable (semantics)\n0:25:37 AI Models vs AI Integration\n0:41:20 Economics and Cheese Puffs\n0:57:00 Klarna Klarna Klarna!\n1:08:00 use code \"Casey\" at check w/ Klarna\n1:09:42 Vote Teej!", "Microsoft Admits AI Defeat?", 4277, false, "l6K9Q7hsh18", "https://www.youtube.com/watch?v=l6K9Q7hsh18", "/downloads/The Standup/2025-06-11 Microsoft Admits AI Defeat?/Microsoft Admits AI Defeat? [l6K9Q7hsh18].mp4", false, 1, ~U[2025-06-11 14:02:47Z]] 13:59:55.894 [debug] QUERY OK source="sources" db=0.7ms 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" = ?) [1] 13:59:55.895 [debug] QUERY OK source="media_items" db=0.6ms idle=5.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-06 14:31:17Z], 1] 13:59:55.899 [debug] QUERY OK source="media_items" db=2.5ms idle=5.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎓 Is College Still Worth It in 2025? \n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we sit down with David Heinemeier Hansson (DHH), the creator of Ruby on Rails and Basecamp co-founder.\n\n👉 Is College Worth It in 2025?\n\nWe dive deep into:\n\n⏳ The ROI of college in a post-AI world\n🇺🇸 Why American higher ed is broken (from a Danish POV)\n📉 Are CS degrees still worth $250K?\n💸 The myth of the “four-year luxury cruise”\n🤖 How AI is disrupting the junior dev job market\n🔍 Hiring: Is college even a useful signal anymore?\n🧠 IQ vs wisdom vs vibes – what really matters in hiring\n🧰 Is programming a trade? Should we move to apprenticeships?\n👨\u200D🌾 Why every dev wants to be a farmer (and why that’s delusional)\n\nWhether you’re considering college, hiring devs, or already knee-deep in student debt, this conversation pulls no punches and may just change how you think about education, hiring, and the future of software development.\n\n⸻\n\n\n📌 Chapters:\n0:00 intro \n2:05 is college still worth it in 2025? \n5:48 the cost of college in the U.S. vs Europe \n6:57 sponsor: CodeRabbit \n7:42 good point\n9:10 DHH explains the Danish education system \n13:02 is college just a luxury cruise? \n17:45 what are you actually buying with a degree? \n21:20 how companies *really* hire developers \n26:11 Casey’s take: programming should be a trade \n30:40 is college a filter for IQ or just vibes? \n45:50 what skills matter more than a degree \n49:20 how to actually learn to code in 2025 \n53:00 is college redeemable? final thoughts \n57:15 wrap-up & what’s next on the podcast \n\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.\n\n#IsCollegeWorthIt #DHH #CaseyMuratori #DeveloperPodcast #SoftwareEngineering #TechPodcast #BootcampVsCollege #ProgrammerLife #TechCareers #TheStartupPodcast", "DHH IS RIGHT ABOUT EVERYTHING (Again)?", "4ee71082-bb9b-4c4a-bf62-3201e404ced7", 3905, false, "EIBxRMH4bvs", "https://www.youtube.com/watch?v=EIBxRMH4bvs", 51, "/downloads/The Standup/2025-06-06 DHH IS RIGHT ABOUT EVERYTHING (Again)?/DHH IS RIGHT ABOUT EVERYTHING (Again)? [EIBxRMH4bvs].mp4", false, false, false, 1, [], 1, ~U[2025-06-06 14:31:17Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "🔗 Sponsored by Code Rabbit\nhttps://coderabbit.link/primeagen-vscode\n\n⸻\n\n🎓 Is College Still Worth It in 2025? \n\nWelcome to The Standup – where developers, creators, and founders debate the big questions. In this episode, we sit down with David Heinemeier Hansson (DHH), the creator of Ruby on Rails and Basecamp co-founder.\n\n👉 Is College Worth It in 2025?\n\nWe dive deep into:\n\n⏳ The ROI of college in a post-AI world\n🇺🇸 Why American higher ed is broken (from a Danish POV)\n📉 Are CS degrees still worth $250K?\n💸 The myth of the “four-year luxury cruise”\n🤖 How AI is disrupting the junior dev job market\n🔍 Hiring: Is college even a useful signal anymore?\n🧠 IQ vs wisdom vs vibes – what really matters in hiring\n🧰 Is programming a trade? Should we move to apprenticeships?\n👨\u200D🌾 Why every dev wants to be a farmer (and why that’s delusional)\n\nWhether you’re considering college, hiring devs, or already knee-deep in student debt, this conversation pulls no punches and may just change how you think about education, hiring, and the future of software development.\n\n⸻\n\n\n📌 Chapters:\n0:00 intro \n2:05 is college still worth it in 2025? \n5:48 the cost of college in the U.S. vs Europe \n6:57 sponsor: CodeRabbit \n7:42 good point\n9:10 DHH explains the Danish education system \n13:02 is college just a luxury cruise? \n17:45 what are you actually buying with a degree? \n21:20 how companies *really* hire developers \n26:11 Casey’s take: programming should be a trade \n30:40 is college a filter for IQ or just vibes? \n45:50 what skills matter more than a degree \n49:20 how to actually learn to code in 2025 \n53:00 is college redeemable? final thoughts \n57:15 wrap-up & what’s next on the podcast \n\n\n⸻\n\n📢 Subscribe for more honest convos about dev life, startups, and tech culture.\n🧠 Hit the bell so you don’t miss the next one.\n\n#IsCollegeWorthIt #DHH #CaseyMuratori #DeveloperPodcast #SoftwareEngineering #TechPodcast #BootcampVsCollege #ProgrammerLife #TechCareers #TheStartupPodcast", "DHH IS RIGHT ABOUT EVERYTHING (Again)?", 3905, false, "EIBxRMH4bvs", "https://www.youtube.com/watch?v=EIBxRMH4bvs", "/downloads/The Standup/2025-06-06 DHH IS RIGHT ABOUT EVERYTHING (Again)?/DHH IS RIGHT ABOUT EVERYTHING (Again)? [EIBxRMH4bvs].mp4", false, 1, ~U[2025-06-06 14:31:17Z]] 13:59:55.900 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=8.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.903 [debug] QUERY OK source="media_items" db=2.9ms idle=7.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-30 14:23:35Z], 1] 13:59:55.909 [debug] QUERY OK source="media_items" db=4.0ms idle=10.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\nTimestamps:\n\n0:00 intro / pre-meeting chaos\n1:48 Welcome to The Standup \n3:16 Prime explains his two-PC streaming config\n5:02 Real story: Netflix internal meeting leak scare\n7:00 Why do game devs still use Windows?\n9:23 Misread tweet kicks off Linux vs Windows debate\n10:48 Casey: No one “loves” Windows — they tolerate it\n13:29 Why studios can’t easily switch from Windows\n15:47 IT/security & enterprise restrictions on Linux\n20:15 Why clean-slate devs still choose Windows\n22:22 Debugger superiority on Windows explained\n24:48 Steam Deck & RAD debugger could change the tide\n32:34 Anti-cheat isn’t the main Linux roadblock\n35:01 Why do *you* use Mac or Linux?\n36:47 Prime’s Windows pain & Linux love\n40:26 Linux window managers vs Exposé\n46:29 The fragility of custom Linux setups\n51:09 Web dev has even more breaking changes\n57:27 AI doesn’t fix underlying dev tool problems\n1:00:04 Trash’s hot take on over-optimizing workflows\n1:02:35 Prime explains why he optimizes *everything*\n1:07:30 Valve anecdote: why default setups can be smarter\n1:14:15 Keyboard nerd segment\n1:16:11 Joke outro + how to “save” Windows\n\n\nWhy Do Game Developers STILL Use Windows?? | The Standup\n🎮💻 In this episode of Standup, we dive deep into the eternal operating system war: Windows vs. macOS vs. Linux. Legendary game dev Casey Muratori (of Handmade Hero fame) joins Primeagen, Trash, and Tee to unpack why game developers still use Windows, even when most modern developers swear by Linux or Mac.\n\n📌 Topics We Cover:\n • Why game devs prefer Windows (spoiler: it’s not because they like it)\n • MacOS vs. Linux vs. Windows for developers\n • Is GDB actually garbage?\n • Debugging tools: RAD Debugger, Visual Studio, and why Linux falls short\n • Why enterprise studios can’t just switch to Linux\n • Anti-cheat, Steam Deck, and the future of Linux gaming\n • The unbearable pain of Windows terminals\n • Why developers obsess over window managers and productivity setups\n • And of course… the real debate: should devs optimize everything or just get stuff done?\n\n🔥 Whether you’re a web developer, game dev, Linux power user, or someone just trying to survive corporate IT policies — this one hits every nerve.\n\n👇 DROP YOUR OS HOT TAKES IN THE COMMENTS 👇\n\n#GameDev #WindowsVsLinux #DeveloperPodcast #StandupPodcast #CaseyMuratori #LinuxGaming #DevTools #Primeagen #TechPodcast #Debugging #VisualStudio #MacVsPC #WebDev #SoftwareEngineering #SteamDeck #OpenSource #RADDebugger", "Why Use Windows??", "0e3e8744-34c3-4ba7-81ee-e3322032a6e7", 4638, false, "M2ZW4uwxU8k", "https://www.youtube.com/watch?v=M2ZW4uwxU8k", 52, "/downloads/The Standup/2025-05-30 Why Use Windows??/Why Use Windows?? [M2ZW4uwxU8k].mp4", false, false, false, 1, [], 1, ~U[2025-05-30 14:23:35Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\nTimestamps:\n\n0:00 intro / pre-meeting chaos\n1:48 Welcome to The Standup \n3:16 Prime explains his two-PC streaming config\n5:02 Real story: Netflix internal meeting leak scare\n7:00 Why do game devs still use Windows?\n9:23 Misread tweet kicks off Linux vs Windows debate\n10:48 Casey: No one “loves” Windows — they tolerate it\n13:29 Why studios can’t easily switch from Windows\n15:47 IT/security & enterprise restrictions on Linux\n20:15 Why clean-slate devs still choose Windows\n22:22 Debugger superiority on Windows explained\n24:48 Steam Deck & RAD debugger could change the tide\n32:34 Anti-cheat isn’t the main Linux roadblock\n35:01 Why do *you* use Mac or Linux?\n36:47 Prime’s Windows pain & Linux love\n40:26 Linux window managers vs Exposé\n46:29 The fragility of custom Linux setups\n51:09 Web dev has even more breaking changes\n57:27 AI doesn’t fix underlying dev tool problems\n1:00:04 Trash’s hot take on over-optimizing workflows\n1:02:35 Prime explains why he optimizes *everything*\n1:07:30 Valve anecdote: why default setups can be smarter\n1:14:15 Keyboard nerd segment\n1:16:11 Joke outro + how to “save” Windows\n\n\nWhy Do Game Developers STILL Use Windows?? | The Standup\n🎮💻 In this episode of Standup, we dive deep into the eternal operating system war: Windows vs. macOS vs. Linux. Legendary game dev Casey Muratori (of Handmade Hero fame) joins Primeagen, Trash, and Tee to unpack why game developers still use Windows, even when most modern developers swear by Linux or Mac.\n\n📌 Topics We Cover:\n • Why game devs prefer Windows (spoiler: it’s not because they like it)\n • MacOS vs. Linux vs. Windows for developers\n • Is GDB actually garbage?\n • Debugging tools: RAD Debugger, Visual Studio, and why Linux falls short\n • Why enterprise studios can’t just switch to Linux\n • Anti-cheat, Steam Deck, and the future of Linux gaming\n • The unbearable pain of Windows terminals\n • Why developers obsess over window managers and productivity setups\n • And of course… the real debate: should devs optimize everything or just get stuff done?\n\n🔥 Whether you’re a web developer, game dev, Linux power user, or someone just trying to survive corporate IT policies — this one hits every nerve.\n\n👇 DROP YOUR OS HOT TAKES IN THE COMMENTS 👇\n\n#GameDev #WindowsVsLinux #DeveloperPodcast #StandupPodcast #CaseyMuratori #LinuxGaming #DevTools #Primeagen #TechPodcast #Debugging #VisualStudio #MacVsPC #WebDev #SoftwareEngineering #SteamDeck #OpenSource #RADDebugger", "Why Use Windows??", 4638, false, "M2ZW4uwxU8k", "https://www.youtube.com/watch?v=M2ZW4uwxU8k", "/downloads/The Standup/2025-05-30 Why Use Windows??/Why Use Windows?? [M2ZW4uwxU8k].mp4", false, 1, ~U[2025-05-30 14:23:35Z]] 13:59:55.910 [debug] QUERY OK source="sources" db=0.3ms idle=14.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.910 [debug] QUERY OK source="media_items" db=0.4ms idle=11.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-26 15:59:10Z], 1] 13:59:55.913 [debug] QUERY OK source="media_items" db=2.5ms idle=10.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\n\n📘 Carson’s book: https://hypermedia.systems\n🧠 Grug Brained Dev: https://grugbrain.dev\n\nTimestamps:\n \n0:00 Intro & chaos before the call\n1:45 Meet Carson Gross (HTMX creator & professor)\n3:29 What is \"Coding Dirty\"?\n5:12 Why Carson hates small methods\n7:24 The myth of clean code and method size\n10:06 What the data actually says about long functions\n13:11 Why abstraction is not free\n15:06 Long vs short functions: maintainability & changeability\n18:00 Why small functions make debugging harder\n21:34 Beautiful at any size: the case for fat functions\n24:19 The myth of good naming solving complexity\n26:55 TDD, unit tests, and when they help vs hurt\n35:39 End-to-end testing: the good, the bad, the bloated\n43:23 Meme culture, cringe, and developer humor\n\n\n🎙️ Standup Ep. 9: Breaking Clean Code | The Case for Big Functions, Fewer Tests & Cringe Memes\nIn this episode of The Standup, the team is joined by a professor, framework author, and meme artisan to challenge everything you think you know about writing good code. From clean code myths to giant functions, unit testing philosophy, and the value of being strategically cringe, this one is pure gold.\n📘 Bonus: Hear about the book Hypermedia Systems, writing with HTMX, and how software was meant to be written.\n💬 If you've ever wondered why your code feels overcomplicated or why your test suite is a nightmare, this conversation is for you.\n\n\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com\n🎥 Produced by Terminal Media\n\n#cleancode #HTMX #CodingPhilosophy #SoftwareDevelopment #WebDev #UnitTesting #BigFunctions #CodingMemes #SoftwareEngineering #DevelopersDevelopersDevelopers #TechPodcast #TheStandup", "Don't Clean Code w/ Creator of HTMX", "a8793980-a885-4e0f-a950-70c1e38dad86", 4182, false, "hQJcGmWXDJw", "https://www.youtube.com/watch?v=hQJcGmWXDJw", 53, "/downloads/The Standup/2025-05-26 Don't Clean Code w⧸ Creator of HTMX/Don't Clean Code w⧸ Creator of HTMX [hQJcGmWXDJw].mp4", false, false, false, 1, [], 1, ~U[2025-05-26 15:59:10Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\n\n\n📘 Carson’s book: https://hypermedia.systems\n🧠 Grug Brained Dev: https://grugbrain.dev\n\nTimestamps:\n \n0:00 Intro & chaos before the call\n1:45 Meet Carson Gross (HTMX creator & professor)\n3:29 What is \"Coding Dirty\"?\n5:12 Why Carson hates small methods\n7:24 The myth of clean code and method size\n10:06 What the data actually says about long functions\n13:11 Why abstraction is not free\n15:06 Long vs short functions: maintainability & changeability\n18:00 Why small functions make debugging harder\n21:34 Beautiful at any size: the case for fat functions\n24:19 The myth of good naming solving complexity\n26:55 TDD, unit tests, and when they help vs hurt\n35:39 End-to-end testing: the good, the bad, the bloated\n43:23 Meme culture, cringe, and developer humor\n\n\n🎙️ Standup Ep. 9: Breaking Clean Code | The Case for Big Functions, Fewer Tests & Cringe Memes\nIn this episode of The Standup, the team is joined by a professor, framework author, and meme artisan to challenge everything you think you know about writing good code. From clean code myths to giant functions, unit testing philosophy, and the value of being strategically cringe, this one is pure gold.\n📘 Bonus: Hear about the book Hypermedia Systems, writing with HTMX, and how software was meant to be written.\n💬 If you've ever wondered why your code feels overcomplicated or why your test suite is a nightmare, this conversation is for you.\n\n\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com\n🎥 Produced by Terminal Media\n\n#cleancode #HTMX #CodingPhilosophy #SoftwareDevelopment #WebDev #UnitTesting #BigFunctions #CodingMemes #SoftwareEngineering #DevelopersDevelopersDevelopers #TechPodcast #TheStandup", "Don't Clean Code w/ Creator of HTMX", 4182, false, "hQJcGmWXDJw", "https://www.youtube.com/watch?v=hQJcGmWXDJw", "/downloads/The Standup/2025-05-26 Don't Clean Code w⧸ Creator of HTMX/Don't Clean Code w⧸ Creator of HTMX [hQJcGmWXDJw].mp4", false, 1, ~U[2025-05-26 15:59:10Z]] 13:59:55.914 [debug] QUERY OK source="sources" db=0.6ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.915 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=5.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-23 16:56:29Z], 1] 13:59:55.920 [debug] QUERY OK source="media_items" db=4.9ms idle=5.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\nTimestamps:\n0:00 – Intro & Time Zone Debate\n1:27 – Meet Dax: New Guest Introduction\n2:29 – Elizabeth Holmes' Partner Starts a New Blood Testing Company\n7:56 – New Pretty URL Browser: Scam Risks & Usability\n13:39 – Are Clean URLs Safer or More Deceptive for Normies?\n15:52 – Dax Rants About Airbnb CEO Brian Chesky\n21:07 – Why Airbnb Experiences Might Fail\n25:00 – “Trash is a Flat Earther?” \n30:16 – Absurd Airbnb Quotes About Steve Jobs\n34:00 – Coinbase Hack: $20M Bounty Instead of Ransom\n35:44 – Closing Roast: Founders With “Show Muscles”\n\n\n🎙️ Standup Podcast Ep. 8: Dax Unfiltered | Behind the Viral Clips, Burnout, and the Creator Grind\nIn this episode of The Standup, we sit down with Dax, a powerhouse creator known for his viral content and unapologetic personality. We go deep on what it takes to stay relevant in today’s social media landscape, the pressure of staying creative, and the hidden cost of internet fame.\n\n\n💡 Keywords: Dax interview, The Standup podcast, creator burnout, viral content strategy, YouTube growth 2025, TikTok algorithm secrets, how to stay relevant as a content creator, building a content brand\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com🎥 Produced by Terminal Media\n#Dax #TheStandupPodcast", "New Design Meta? URLs are dead? - Standup #8", "c4113177-e1c3-4dab-aacd-b05023dd5c3f", 2228, false, "CUknkajygOU", "https://www.youtube.com/watch?v=CUknkajygOU", 54, "/downloads/The Standup/2025-05-23 New Design Meta? URLs are dead? - Standup #8/New Design Meta? URLs are dead? - Standup #8 [CUknkajygOU].mp4", false, false, false, 1, [], 1, ~U[2025-05-23 16:56:29Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\n☕ ssh terminal.shop \n\nTimestamps:\n0:00 – Intro & Time Zone Debate\n1:27 – Meet Dax: New Guest Introduction\n2:29 – Elizabeth Holmes' Partner Starts a New Blood Testing Company\n7:56 – New Pretty URL Browser: Scam Risks & Usability\n13:39 – Are Clean URLs Safer or More Deceptive for Normies?\n15:52 – Dax Rants About Airbnb CEO Brian Chesky\n21:07 – Why Airbnb Experiences Might Fail\n25:00 – “Trash is a Flat Earther?” \n30:16 – Absurd Airbnb Quotes About Steve Jobs\n34:00 – Coinbase Hack: $20M Bounty Instead of Ransom\n35:44 – Closing Roast: Founders With “Show Muscles”\n\n\n🎙️ Standup Podcast Ep. 8: Dax Unfiltered | Behind the Viral Clips, Burnout, and the Creator Grind\nIn this episode of The Standup, we sit down with Dax, a powerhouse creator known for his viral content and unapologetic personality. We go deep on what it takes to stay relevant in today’s social media landscape, the pressure of staying creative, and the hidden cost of internet fame.\n\n\n💡 Keywords: Dax interview, The Standup podcast, creator burnout, viral content strategy, YouTube growth 2025, TikTok algorithm secrets, how to stay relevant as a content creator, building a content brand\n\n📩 Want to sponsor the show? Reach out: the.primeagen@gmail.com🎥 Produced by Terminal Media\n#Dax #TheStandupPodcast", "New Design Meta? URLs are dead? - Standup #8", 2228, false, "CUknkajygOU", "https://www.youtube.com/watch?v=CUknkajygOU", "/downloads/The Standup/2025-05-23 New Design Meta? URLs are dead? - Standup #8/New Design Meta? URLs are dead? - Standup #8 [CUknkajygOU].mp4", false, 1, ~U[2025-05-23 16:56:29Z]] 13:59:55.922 [debug] QUERY OK source="sources" db=0.9ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.923 [debug] QUERY OK source="media_items" db=0.7ms idle=9.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-19 12:00:42Z], 1] 13:59:55.927 [debug] QUERY OK source="media_items" db=3.7ms idle=9.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nTimestamps\n0:00 Streaming Woes Begin\n0:40 Tech Chaos Recap\n1:22 Prime’s Streaming PC Half-Shutdown\n2:04 Modern Software is a Mess\n3:40 Prime’s Grub Boot Fail\n5:35 Debugging Live\n6:35 Prime’s Linux Setup Style\n7:15 Prime Bricked His Machine\n8:55 AI Won’t Take Jobs — Just Break PCs\n10:06 Confused by Sway vs DE\n11:43 Composite Deez Nuts\n12:34 Top Comment Will Explain It\n14:29 Randall Speech-to-Text Trick\n15:19 PewDiePie vs Prime\n16:52 Chat Paste Mode\n18:20 Pewds or Peudes?\n19:02 Prime’s Journaling Adventure\n22:06 Keyboard Layout Pain\n24:36 Emacs vs Vim Pain\n25:43 GNU+Linux Correction\n26:14 Casey’s Pinky Journey\n27:17 Anders the Typing Wizard\n28:36 Emacs Was a Weighted Bat\n29:18 Real Question: Why Linux?\n31:28 Buddhism & Mac Mindset\n33:48 Forced Cortana Reinstalls\n34:59 Windows Losing Its Edge\n35:48 Plug-and-Play Linux\n38:46 Nvidia vs AMD on Linux\n40:14 Prime’s Login Hope\n42:47 The Real Linux Desktop Experience\n43:45 The Bald Eagle Spiral\n46:58 Why Is Software Like This?\n47:41 Ending in Pain\n\n🎙️ The Standup Ep. 7 – The Linux Desktop Apocalypse, OBS Mayhem, and the Bald Eagle Sex Spiral.\n\nIn this chaotic and hilarious episode of The Standup, the crew dives deep into the reality of running Linux in 2024, bricking systems live on stream, and the painful truth behind modern developer tooling. From bootloader disasters to OBS crashes, this episode captures the true experience of developers trying to “just get things working” — and failing spectacularly.\n\n Featuring real-time Linux troubleshooting, software fails, and priceless developer banter, Ep. 7 is both a comedy of errors and a relatable journey for every dev who’s dared to install Arch.\n\n👨\u200D💻 Topics covered:\n • Live Linux install gone wrong 😬\n • OBS crashes, Stream Deck failures, and power button accidents\n • The real reason modern software is unreliable\n • PewDiePie’s switch to Arch Linux 💥\n • Keyboard layout injuries & pinky pain from Emacs and Vim\n • What the heck is a compositor vs. window manager?\n • Windows vs Mac vs Linux in 2024 🪟🍎🐧\n • And of course… the Bald Eagle Sex Spiral 🦅\n\n🔍 Keywords:\nLinux fail, Arch Linux install, OBS crash, Stream Deck, Windows update rant, dev podcast, software development comedy, PewDiePie Linux, Emacs vs Vim, pinky pain devs, KDE vs GNOME, compositor vs window manager, year of the Linux desktop, developer burnout, live Linux debugging, Ubuntu vs Arch, dev setup fails, Linux install live stream\n\n#Linux #ArchLinux #OBS #DeveloperLife #TechPodcast #SoftwareFails #TheStandup", "ThePrimeagen's Arch Experience - Standup #7", "799aa22f-34eb-4723-bbbe-2ac91ecbad0f", 2895, false, "NMgruCb5oWE", "https://www.youtube.com/watch?v=NMgruCb5oWE", 55, "/downloads/The Standup/2025-05-19 ThePrimeagen's Arch Experience - Standup #7/ThePrimeagen's Arch Experience - Standup #7 [NMgruCb5oWE].mp4", false, false, false, 1, [], 1, ~U[2025-05-19 12:00:42Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nTimestamps\n0:00 Streaming Woes Begin\n0:40 Tech Chaos Recap\n1:22 Prime’s Streaming PC Half-Shutdown\n2:04 Modern Software is a Mess\n3:40 Prime’s Grub Boot Fail\n5:35 Debugging Live\n6:35 Prime’s Linux Setup Style\n7:15 Prime Bricked His Machine\n8:55 AI Won’t Take Jobs — Just Break PCs\n10:06 Confused by Sway vs DE\n11:43 Composite Deez Nuts\n12:34 Top Comment Will Explain It\n14:29 Randall Speech-to-Text Trick\n15:19 PewDiePie vs Prime\n16:52 Chat Paste Mode\n18:20 Pewds or Peudes?\n19:02 Prime’s Journaling Adventure\n22:06 Keyboard Layout Pain\n24:36 Emacs vs Vim Pain\n25:43 GNU+Linux Correction\n26:14 Casey’s Pinky Journey\n27:17 Anders the Typing Wizard\n28:36 Emacs Was a Weighted Bat\n29:18 Real Question: Why Linux?\n31:28 Buddhism & Mac Mindset\n33:48 Forced Cortana Reinstalls\n34:59 Windows Losing Its Edge\n35:48 Plug-and-Play Linux\n38:46 Nvidia vs AMD on Linux\n40:14 Prime’s Login Hope\n42:47 The Real Linux Desktop Experience\n43:45 The Bald Eagle Spiral\n46:58 Why Is Software Like This?\n47:41 Ending in Pain\n\n🎙️ The Standup Ep. 7 – The Linux Desktop Apocalypse, OBS Mayhem, and the Bald Eagle Sex Spiral.\n\nIn this chaotic and hilarious episode of The Standup, the crew dives deep into the reality of running Linux in 2024, bricking systems live on stream, and the painful truth behind modern developer tooling. From bootloader disasters to OBS crashes, this episode captures the true experience of developers trying to “just get things working” — and failing spectacularly.\n\n Featuring real-time Linux troubleshooting, software fails, and priceless developer banter, Ep. 7 is both a comedy of errors and a relatable journey for every dev who’s dared to install Arch.\n\n👨\u200D💻 Topics covered:\n • Live Linux install gone wrong 😬\n • OBS crashes, Stream Deck failures, and power button accidents\n • The real reason modern software is unreliable\n • PewDiePie’s switch to Arch Linux 💥\n • Keyboard layout injuries & pinky pain from Emacs and Vim\n • What the heck is a compositor vs. window manager?\n • Windows vs Mac vs Linux in 2024 🪟🍎🐧\n • And of course… the Bald Eagle Sex Spiral 🦅\n\n🔍 Keywords:\nLinux fail, Arch Linux install, OBS crash, Stream Deck, Windows update rant, dev podcast, software development comedy, PewDiePie Linux, Emacs vs Vim, pinky pain devs, KDE vs GNOME, compositor vs window manager, year of the Linux desktop, developer burnout, live Linux debugging, Ubuntu vs Arch, dev setup fails, Linux install live stream\n\n#Linux #ArchLinux #OBS #DeveloperLife #TechPodcast #SoftwareFails #TheStandup", "ThePrimeagen's Arch Experience - Standup #7", 2895, false, "NMgruCb5oWE", "https://www.youtube.com/watch?v=NMgruCb5oWE", "/downloads/The Standup/2025-05-19 ThePrimeagen's Arch Experience - Standup #7/ThePrimeagen's Arch Experience - Standup #7 [NMgruCb5oWE].mp4", false, 1, ~U[2025-05-19 12:00:42Z]] 13:59:55.928 [debug] QUERY OK source="sources" db=0.4ms idle=12.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.930 [debug] QUERY OK source="media_items" db=0.9ms queue=0.6ms idle=8.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-13 11:01:11Z], 1] 13:59:55.969 [debug] QUERY OK source="media_items" db=37.7ms idle=8.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nChapters\n0:00 Show Intro \n1:54 PRIME ON TDD\n4:32 Trash’s Thoughts \n7:27 Casey on TDD vs OOP \n11:03 Bugs Despite TDD \n11:39 TJ Gets IN \n15:31 Prime Pushes Back \n16:20 Refactoring Woes\n17:00 WTF IS WRONG WITH TRASH\n20:02 Missed Bug Story \n22:55 PDD Explained \n27:00 NeoVim Test Suite\n34:00 Testing by Project \n38:42 Code Coverage Feels \n40:06 WHY DID PRIME DO THAT\n43:05 Signing Off \n\nIs Test-Driven Development a Waste of Time? | The Standup Podcast Ep. 6\n🔥 In this episode of The Standup, the crew dives deep into one of the most debated practices in software engineering: Test-Driven Development (TDD). Is TDD still relevant in modern development? Does it improve code quality, or does it waste precious dev time?\n👨\u200D💻 Featuring developers with strong and hilarious opinions — including Primeagen, Trash Dev, TJ, and Casey Muratori — this roundtable conversation covers:\nReal-world pros and cons of TDD\nGolden/snapshot testing explained (and roasted)\nWhen to test before vs. after writing code\nHow TDD affects API design, architecture, and mental sanity\nStories from the trenches at Netflix, Neovim, and beyond\nPerformance-Driven Development (PDD)? Yes, that’s a thing now.\nThe infamous Falkor bug that could’ve taken down Netflix 😳\n \nKeywords:\nTDD debate, is TDD dead, test-driven development podcast, software engineering discussion, developer podcast, snapshot testing, golden testing, Neovim testing, Primeagen podcast, Netflix developer stories, backend architecture, software testing strategies, code quality vs velocity, performance-driven development, test coverage myths\n\n\n#TDD #SoftwareEngineering #DeveloperPodcast #Primeagen #Neovim #BackendDev #Testing", "How BAD Is Test Driven Development? - The Standup #6", "21626a36-62d6-4287-8d24-1b1d47422749", 2685, false, "kJWsFWY25GA", "https://www.youtube.com/watch?v=kJWsFWY25GA", 56, "/downloads/The Standup/2025-05-13 How BAD Is Test Driven Development? - The Standup #6/How BAD Is Test Driven Development? - The Standup #6 [kJWsFWY25GA].mp4", false, false, false, 1, [], 1, ~U[2025-05-13 11:01:11Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nChapters\n0:00 Show Intro \n1:54 PRIME ON TDD\n4:32 Trash’s Thoughts \n7:27 Casey on TDD vs OOP \n11:03 Bugs Despite TDD \n11:39 TJ Gets IN \n15:31 Prime Pushes Back \n16:20 Refactoring Woes\n17:00 WTF IS WRONG WITH TRASH\n20:02 Missed Bug Story \n22:55 PDD Explained \n27:00 NeoVim Test Suite\n34:00 Testing by Project \n38:42 Code Coverage Feels \n40:06 WHY DID PRIME DO THAT\n43:05 Signing Off \n\nIs Test-Driven Development a Waste of Time? | The Standup Podcast Ep. 6\n🔥 In this episode of The Standup, the crew dives deep into one of the most debated practices in software engineering: Test-Driven Development (TDD). Is TDD still relevant in modern development? Does it improve code quality, or does it waste precious dev time?\n👨\u200D💻 Featuring developers with strong and hilarious opinions — including Primeagen, Trash Dev, TJ, and Casey Muratori — this roundtable conversation covers:\nReal-world pros and cons of TDD\nGolden/snapshot testing explained (and roasted)\nWhen to test before vs. after writing code\nHow TDD affects API design, architecture, and mental sanity\nStories from the trenches at Netflix, Neovim, and beyond\nPerformance-Driven Development (PDD)? Yes, that’s a thing now.\nThe infamous Falkor bug that could’ve taken down Netflix 😳\n \nKeywords:\nTDD debate, is TDD dead, test-driven development podcast, software engineering discussion, developer podcast, snapshot testing, golden testing, Neovim testing, Primeagen podcast, Netflix developer stories, backend architecture, software testing strategies, code quality vs velocity, performance-driven development, test coverage myths\n\n\n#TDD #SoftwareEngineering #DeveloperPodcast #Primeagen #Neovim #BackendDev #Testing", "How BAD Is Test Driven Development? - The Standup #6", 2685, false, "kJWsFWY25GA", "https://www.youtube.com/watch?v=kJWsFWY25GA", "/downloads/The Standup/2025-05-13 How BAD Is Test Driven Development? - The Standup #6/How BAD Is Test Driven Development? - The Standup #6 [kJWsFWY25GA].mp4", false, 1, ~U[2025-05-13 11:01:11Z]] 13:59:55.970 [debug] QUERY OK source="sources" db=0.9ms queue=0.2ms idle=46.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:55.974 [debug] QUERY OK source="media_items" db=2.9ms idle=43.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-26 20:04:00Z], 1] 13:59:56.000 [debug] QUERY OK source="media_items" db=25.5ms idle=45.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Cheat On Everything - The Standup Ep 5", "b56c6032-818c-4727-9723-ad45917c991d", 3446, false, "1aarKjyj-x4", "https://www.youtube.com/watch?v=1aarKjyj-x4", 57, "/downloads/The Standup/2025-04-26 Cheat On Everything - The Standup Ep 5/Cheat On Everything - The Standup Ep 5 [1aarKjyj-x4].mp4", false, false, false, 1, [], 1, ~U[2025-04-26 20:04:00Z], ~U[2026-07-24 11:59:55Z], ~U[2026-07-24 11:59:55Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Cheat On Everything - The Standup Ep 5", 3446, false, "1aarKjyj-x4", "https://www.youtube.com/watch?v=1aarKjyj-x4", "/downloads/The Standup/2025-04-26 Cheat On Everything - The Standup Ep 5/Cheat On Everything - The Standup Ep 5 [1aarKjyj-x4].mp4", false, 1, ~U[2025-04-26 20:04:00Z]] 13:59:56.001 [debug] QUERY OK source="sources" db=0.4ms idle=70.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:56.002 [debug] QUERY OK source="media_items" db=0.4ms idle=32.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-10 17:52:59Z], 1] 13:59:56.021 [debug] QUERY OK source="media_items" db=18.6ms idle=31.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["0:00 - Intro\n0:24 - LLM Lawsuit\n30:46 - Shopify Forces Use Of AI\n50:50 - AI Generated Video Games\n\nTwitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### LINKS \nhttps://x.com/cmuratori\nhttps://x.com/trashh_dev\nhttps://x.com/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "This Doesn't Look Good For AI - The Standup - Ep 4", "bb078b24-1503-42c7-9b40-a667b5e75767", 3562, false, "nmlkY9e4JjQ", "https://www.youtube.com/watch?v=nmlkY9e4JjQ", 58, "/downloads/The Standup/2025-04-10 This Doesn't Look Good For AI - The Standup - Ep 4/This Doesn't Look Good For AI - The Standup - Ep 4 [nmlkY9e4JjQ].mp4", false, false, false, 1, [], 1, ~U[2025-04-10 17:52:59Z], ~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z], "0:00 - Intro\n0:24 - LLM Lawsuit\n30:46 - Shopify Forces Use Of AI\n50:50 - AI Generated Video Games\n\nTwitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### LINKS \nhttps://x.com/cmuratori\nhttps://x.com/trashh_dev\nhttps://x.com/teej_dv\n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "This Doesn't Look Good For AI - The Standup - Ep 4", 3562, false, "nmlkY9e4JjQ", "https://www.youtube.com/watch?v=nmlkY9e4JjQ", "/downloads/The Standup/2025-04-10 This Doesn't Look Good For AI - The Standup - Ep 4/This Doesn't Look Good For AI - The Standup - Ep 4 [nmlkY9e4JjQ].mp4", false, 1, ~U[2025-04-10 17:52:59Z]] 13:59:56.024 [debug] QUERY OK source="sources" db=1.7ms queue=0.4ms idle=48.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:56.027 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=25.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-03 13:46:12Z], 1] 13:59:56.031 [debug] QUERY OK source="media_items" db=3.9ms idle=26.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Making A Game GOOD - The Standup EP 3", "a095c3e7-68d1-42e2-be48-085dcc5a2363", 1932, false, "nCxU-OBoISk", "https://www.youtube.com/watch?v=nCxU-OBoISk", 59, "/downloads/The Standup/2025-04-03 Making A Game GOOD - The Standup EP 3/Making A Game GOOD - The Standup EP 3 [nCxU-OBoISk].mp4", false, false, false, 1, [], 1, ~U[2025-04-03 13:46:12Z], ~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis", "Making A Game GOOD - The Standup EP 3", 1932, false, "nCxU-OBoISk", "https://www.youtube.com/watch?v=nCxU-OBoISk", "/downloads/The Standup/2025-04-03 Making A Game GOOD - The Standup EP 3/Making A Game GOOD - The Standup EP 3 [nCxU-OBoISk].mp4", false, 1, ~U[2025-04-03 13:46:12Z]] 13:59:56.033 [debug] QUERY OK source="sources" db=1.6ms idle=29.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:56.034 [debug] QUERY OK source="media_items" db=0.4ms idle=12.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-03-12 12:43:27Z], 1] 13:59:56.038 [debug] QUERY OK source="media_items" db=3.5ms idle=10.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n## Timings\n00:00 - Intro\n0:15 - Andy Jassy's Just Be Wild\n19:34 - Games Made With AI \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nGet production ready SQLite with Turso: https://turso.tech/deeznuts", "Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2", "1349a031-8bd2-4839-a887-ac48ba9b28f2", 2988, false, "6bsaPvyEKQo", "https://www.youtube.com/watch?v=6bsaPvyEKQo", 60, "/downloads/The Standup/2025-03-12 Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2/Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2 [6bsaPvyEKQo].mp4", false, false, false, 1, [], 1, ~U[2025-03-12 12:43:27Z], ~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z], "Twitch https://twitch.tv/ThePrimeagen\nDiscord https://discord.gg/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n## Timings\n00:00 - Intro\n0:15 - Andy Jassy's Just Be Wild\n19:34 - Games Made With AI \n\nGreat News? Want me to research and create video????: https://www.reddit.com/r/ThePrimeagen\n\nKinesis Advantage 360: https://bit.ly/Prime-Kinesis\n\nGet production ready SQLite with Turso: https://turso.tech/deeznuts", "Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2", 2988, false, "6bsaPvyEKQo", "https://www.youtube.com/watch?v=6bsaPvyEKQo", "/downloads/The Standup/2025-03-12 Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2/Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2 [6bsaPvyEKQo].mp4", false, 1, ~U[2025-03-12 12:43:27Z]] 13:59:56.038 [debug] QUERY OK source="sources" db=0.1ms idle=11.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 13:59:56.039 [debug] QUERY OK source="media_items" db=0.4ms idle=7.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-03-06 21:23:40Z], 1] 13:59:56.040 [debug] QUERY OK source="media_items" db=0.9ms idle=6.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Twitch https://twitch.tv/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n### Timings\n00:00 - Intro\n01:05 - Amazon Gets Wrecked\n23:52 - FireFox and WHAT IS WRONG WITH TRASH DEV????\n41:48 - Wrap It Up\n\n### LINKS \nhttps://x.com/im_roy_lee/status/1885475321975042280\n\nLink to original announcement: https://blog.mozilla.org/en/products/firefox/firefox-terms-of-use/\nLink to their “privacy notice”: https://www.mozilla.org/en-US/privacy/firefox/#notice", "LeetCode is dead? Privacy is done? | The Standup Ep. 1", "ec5b158a-0768-4f6a-ad24-f739ff49b775", 2553, false, "EZFlOnlLCsk", "https://www.youtube.com/watch?v=EZFlOnlLCsk", 61, "/downloads/The Standup/2025-03-06 LeetCode is dead? Privacy is done? | The Standup Ep. 1/LeetCode is dead? Privacy is done? | The Standup Ep. 1 [EZFlOnlLCsk].mp4", false, false, false, 1, [], 0, ~U[2025-03-06 21:23:40Z], ~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z], "Twitch https://twitch.tv/ThePrimeagen\n\nBecome Backend Dev: https://boot.dev/prime\n(plus i make courses for them)\n\nThis is also the best way to support me is to support yourself becoming a better backend engineer. \n\n### Cohosts\nCasey: https://x.com/cmuratori\nTrash: https://x.com/trashh_dev\nTeej: https://twitch.tv/teej_dv\n\n### Timings\n00:00 - Intro\n01:05 - Amazon Gets Wrecked\n23:52 - FireFox and WHAT IS WRONG WITH TRASH DEV????\n41:48 - Wrap It Up\n\n### LINKS \nhttps://x.com/im_roy_lee/status/1885475321975042280\n\nLink to original announcement: https://blog.mozilla.org/en/products/firefox/firefox-terms-of-use/\nLink to their “privacy notice”: https://www.mozilla.org/en-US/privacy/firefox/#notice", "LeetCode is dead? Privacy is done? | The Standup Ep. 1", 2553, false, "EZFlOnlLCsk", "https://www.youtube.com/watch?v=EZFlOnlLCsk", "/downloads/The Standup/2025-03-06 LeetCode is dead? Privacy is done? | The Standup Ep. 1/LeetCode is dead? Privacy is done? | The Standup Ep. 1 [EZFlOnlLCsk].mp4", false, 1, ~U[2025-03-06 21:23:40Z]] 13:59:56.042 [debug] QUERY OK source="sources" db=0.8ms idle=6.9ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z], 1] 13:59:56.044 [debug] QUERY OK source="media_items" db=1.6ms queue=0.7ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 13:59:56.100 [debug] QUERY OK source="tasks" db=0.1ms idle=2.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [65, 121, ~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z]] 13:59:56.100 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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")))) [1] 13:59:56.100 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 13:59:56.101 [info] No notification servers provided for source 1 13:59:56.102 [debug] QUERY OK source="tasks" db=0.1ms idle=2.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [66, 1, ~U[2026-07-24 11:59:56Z], ~U[2026-07-24 11:59:56Z]] 13:59:56.103 [info] {"args":{"id":1},"id":3,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":99854757,"event":"job:stop","queue_time":979327,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 13:59:56.931 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uo1I6lS5DYU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/38/ff/38ff8f7e0d447d1814b37e15af16d3be9d71ba1f80e21ef31c528a8b3b06a49b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 13:59:56.955 [debug] Running yt-dlp command for action: download_thumbnail 13:59:56.956 [debug] QUERY OK source="settings" db=0.1ms idle=853.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:56.956 [debug] QUERY OK source="settings" db=0.1ms idle=853.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:56.956 [debug] QUERY OK source="settings" db=0.1ms idle=853.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:59:56.956 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uo1I6lS5DYU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/4/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0d/00/0d001254e85370d4e3bd72877e9b9eb30577cc496bba50d34a7c93f36d899704.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:00.078 [info] {"source":"oban","duration":215,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:00:02.325 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uo1I6lS5DYU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/4/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0d/00/0d001254e85370d4e3bd72877e9b9eb30577cc496bba50d34a7c93f36d899704.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:02.326 [debug] QUERY OK db=0.1ms idle=889.5ms begin [] 14:00:02.327 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 11:59:56Z], "/downloads/The Standup/2026-05-02 Wikipedia Pressed the Red button on Odin | TheStandup/Wikipedia Pressed the Red button on Odin | TheStandup [uo1I6lS5DYU].mp4", ~U[2026-07-24 12:00:02Z], 4] 14:00:02.329 [debug] QUERY OK source="media_metadata" db=1.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/4/metadata.json.gz", "/config/metadata/media_items/4/thumbnail.jpg", 4, ~U[2026-07-24 12:00:02Z], ~U[2026-07-24 12:00:02Z]] 14:00:02.329 [debug] QUERY OK db=0.3ms commit [] 14:00:02.331 [debug] QUERY OK source="media_items" db=0.9ms queue=0.4ms idle=294.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [392385331, ~U[2026-07-24 12:00:02Z], 4] 14:00:02.331 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:00:02.332 [info] {"args":{"id":4},"id":8,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":40820060,"event":"job:stop","queue_time":54509398,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:00:02.339 [info] {"args":{"id":5},"id":9,"meta":{},"system_time":1784894402339585024,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:00:02.340 [debug] QUERY OK source="media_items" db=0.5ms idle=304.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [5] 14:00:02.340 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:00:02.341 [debug] QUERY OK source="sources" db=0.2ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:00:02.341 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=9.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:00:02.342 [debug] QUERY OK source="media_items" db=0.5ms idle=9.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [5] 14:00:02.343 [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" = ?) [5] 14:00:02.343 [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] 14:00:02.344 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:02.344 [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 [] 14:00:02.345 [debug] Running yt-dlp command for action: get_downloadable_status 14:00:02.345 [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 [] 14:00:02.345 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:02.346 [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 [] 14:00:02.346 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6szQxMGX5JI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/23/2c/232c53a7dc330cb2559bd9b8c405048f97d7c7303347123a81ce9eba3b21ef8c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:05.812 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6szQxMGX5JI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/23/2c/232c53a7dc330cb2559bd9b8c405048f97d7c7303347123a81ce9eba3b21ef8c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:05.813 [debug] Running yt-dlp command for action: download 14:00:05.814 [debug] QUERY OK source="settings" db=0.6ms queue=0.3ms idle=1777.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:05.816 [debug] QUERY OK source="settings" db=1.4ms queue=0.6ms idle=1778.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:05.818 [debug] QUERY OK source="settings" db=1.9ms idle=1780.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:05.820 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6szQxMGX5JI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bf/f2/bff217c7ef31e0ee58c63ec7e1576917876eaedd595c1a4d9af4d19f849bcab6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:18.086 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:33.096 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6szQxMGX5JI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bf/f2/bff217c7ef31e0ee58c63ec7e1576917876eaedd595c1a4d9af4d19f849bcab6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:33.116 [debug] Running yt-dlp command for action: download_thumbnail 14:00:33.117 [debug] QUERY OK source="settings" db=0.2ms idle=1078.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:33.117 [debug] QUERY OK source="settings" db=0.2ms idle=1079.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:33.118 [debug] QUERY OK source="settings" db=0.1ms idle=625.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:33.118 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6szQxMGX5JI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/5/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/bf/89/bf89a47b5f01aed940cb51412d2bec4652fe7ddf96098a17d00d8d1a7d411f70.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:36.345 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6szQxMGX5JI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/5/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/bf/89/bf89a47b5f01aed940cb51412d2bec4652fe7ddf96098a17d00d8d1a7d411f70.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:36.346 [debug] QUERY OK db=0.2ms idle=1307.5ms begin [] 14:00:36.347 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:00:33Z], "/downloads/The Standup/2026-04-19 The Mythos Situation | TheStandup/The Mythos Situation | TheStandup [6szQxMGX5JI].mp4", ~U[2026-07-24 12:00:36Z], 5] 14:00:36.348 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/5/metadata.json.gz", "/config/metadata/media_items/5/thumbnail.jpg", 5, ~U[2026-07-24 12:00:36Z], ~U[2026-07-24 12:00:36Z]] 14:00:36.348 [debug] QUERY OK db=0.2ms commit [] 14:00:36.350 [debug] QUERY OK source="media_items" db=1.2ms idle=1310.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [329343289, ~U[2026-07-24 12:00:36Z], 5] 14:00:36.350 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:00:36.350 [info] {"args":{"id":5},"id":9,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":34010659,"event":"job:stop","queue_time":93338543,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:00:36.357 [info] {"args":{"id":6},"id":10,"meta":{},"system_time":1784894436357146158,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:00:36.357 [debug] QUERY OK source="media_items" db=0.2ms idle=860.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" = ?) [6] 14:00:36.358 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:00:36.358 [debug] QUERY OK source="sources" db=0.2ms idle=9.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:00:36.359 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:00:36.360 [debug] QUERY OK source="media_items" db=0.9ms 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 [6] 14:00:36.361 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [6] 14:00:36.362 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:00:36.363 [debug] QUERY OK source="settings" db=0.5ms 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:00:36.363 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:36.364 [debug] Running yt-dlp command for action: get_downloadable_status 14:00:36.364 [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 [] 14:00:36.364 [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 [] 14:00:36.365 [debug] QUERY OK source="settings" db=0.0ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:36.365 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CCBe1shjGOw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/26/e926edc26fc087e71185c76c6e70d73695af9a93f2360eac8810cc44d87d0f5b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:39.885 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CCBe1shjGOw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/26/e926edc26fc087e71185c76c6e70d73695af9a93f2360eac8810cc44d87d0f5b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:39.886 [debug] Running yt-dlp command for action: download 14:00:39.886 [debug] QUERY OK source="settings" db=0.2ms idle=1847.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:39.886 [debug] QUERY OK source="settings" db=0.1ms idle=1848.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:39.887 [debug] QUERY OK source="settings" db=0.2ms idle=1848.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:39.887 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CCBe1shjGOw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f3/4e/f34e6f52165f8c2cbf78d9977e0cdf77c49edc9f224c48f48617a23aa61e975b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:48.087 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:54.849 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kSuMjLbjqsI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ad/d1/add1a65441ab8147e2e3956fa598846a88dd0a116272fb756c6c874cdf9ef9f5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:54.879 [debug] Running yt-dlp command for action: download_thumbnail 14:00:54.880 [debug] QUERY OK source="settings" db=0.1ms idle=1841.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:54.881 [debug] QUERY OK source="settings" db=0.1ms idle=1350.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:54.882 [debug] QUERY OK source="settings" db=1.0ms idle=841.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:54.882 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kSuMjLbjqsI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/2/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d3/b7/d3b7e63eb314a1366dee1800ecfbf85245792ab90404b5e4f4e0ba810730c737.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:00:58.191 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kSuMjLbjqsI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/2/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d3/b7/d3b7e63eb314a1366dee1800ecfbf85245792ab90404b5e4f4e0ba810730c737.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:00:58.191 [debug] QUERY OK db=0.2ms idle=633.4ms begin [] 14:00:58.192 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:00:54Z], "/downloads/The Standup/2026-05-30 Trash VS Linux | TheStandup/Trash VS Linux | TheStandup [kSuMjLbjqsI].mp4", ~U[2026-07-24 12:00:58Z], 2] 14:00:58.193 [debug] QUERY OK source="media_metadata" db=1.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/2/metadata.json.gz", "/config/metadata/media_items/2/thumbnail.jpg", 2, ~U[2026-07-24 12:00:58Z], ~U[2026-07-24 12:00:58Z]] 14:00:58.194 [debug] QUERY OK db=0.2ms commit [] 14:00:58.196 [debug] QUERY OK source="media_items" db=1.4ms idle=150.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [586214589, ~U[2026-07-24 12:00:58Z], 2] 14:00:58.196 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:00:58.196 [info] {"args":{"id":2},"id":6,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":154882127,"event":"job:stop","queue_time":312478,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:00:58.204 [info] {"args":{"id":7},"id":11,"meta":{},"system_time":1784894458204391857,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:00:58.205 [debug] QUERY OK source="media_items" db=0.3ms idle=161.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" = ?) [7] 14:00:58.205 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:00:58.205 [debug] QUERY OK source="sources" db=0.3ms idle=11.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:00:58.206 [debug] QUERY OK source="media_profiles" db=0.4ms idle=10.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:00:58.207 [debug] QUERY OK source="media_items" db=0.5ms idle=10.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [7] 14:00:58.208 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [7] 14:00:58.208 [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] 14:00:58.209 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:58.209 [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 [] 14:00:58.209 [debug] Running yt-dlp command for action: get_downloadable_status 14:00:58.211 [debug] QUERY OK source="settings" db=0.9ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:58.212 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:58.212 [debug] QUERY OK source="settings" db=0.4ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:00:58.212 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cf/3e/cf3e8ef3ac781f3c8dfdf229f6437ff401e416e103a3b69c244f601757409ed4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:00.079 [info] {"source":"oban","duration":482,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:01:01.263 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CCBe1shjGOw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f3/4e/f34e6f52165f8c2cbf78d9977e0cdf77c49edc9f224c48f48617a23aa61e975b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:01.289 [debug] Running yt-dlp command for action: download_thumbnail 14:01:01.291 [debug] QUERY OK source="settings" db=0.5ms queue=0.2ms idle=1247.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:01.293 [debug] QUERY OK source="settings" db=0.7ms queue=1.0ms 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 [] 14:01:01.294 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1250.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:01.294 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CCBe1shjGOw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/6/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/26/f8/26f824c913fd73f6dc0a64786057578557586f8d86663d223551600e17f5cbc6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:02.015 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cf/3e/cf3e8ef3ac781f3c8dfdf229f6437ff401e416e103a3b69c244f601757409ed4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:02.016 [debug] Running yt-dlp command for action: download 14:01:02.017 [debug] QUERY OK source="settings" db=1.1ms idle=1452.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:02.023 [debug] QUERY OK source="settings" db=5.5ms idle=726.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:02.023 [debug] QUERY OK source="settings" db=0.1ms idle=729.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:02.023 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/67/a9/67a95e01c7b0413d965709d824aa1ebd6cdfbc5649c5e23ee30f4485c80d51de.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:05.384 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CCBe1shjGOw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/6/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/26/f8/26f824c913fd73f6dc0a64786057578557586f8d86663d223551600e17f5cbc6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:05.386 [debug] QUERY OK db=0.0ms idle=815.4ms begin [] 14:01:05.387 [debug] QUERY OK source="media_items" db=1.2ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:01:01Z], "/downloads/The Standup/2026-04-12 Trash Made a Black Mirror App | The Standup/Trash Made a Black Mirror App | The Standup [CCBe1shjGOw].mp4", ~U[2026-07-24 12:01:05Z], 6] 14:01:05.388 [debug] QUERY OK source="media_metadata" db=1.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/6/metadata.json.gz", "/config/metadata/media_items/6/thumbnail.jpg", 6, ~U[2026-07-24 12:01:05Z], ~U[2026-07-24 12:01:05Z]] 14:01:05.389 [debug] QUERY OK db=0.3ms commit [] 14:01:05.391 [debug] QUERY OK source="media_items" db=1.6ms idle=339.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [339582302, ~U[2026-07-24 12:01:05Z], 6] 14:01:05.391 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:05.392 [info] {"args":{"id":6},"id":10,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":29034604,"event":"job:stop","queue_time":124356485,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:05.399 [info] {"args":{"id":8},"id":12,"meta":{},"system_time":1784894465399181946,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:05.400 [debug] QUERY OK source="media_items" db=0.6ms idle=348.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8] 14:01:05.400 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:05.401 [debug] QUERY OK source="sources" db=0.8ms idle=11.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:05.402 [debug] QUERY OK source="media_profiles" db=0.6ms idle=10.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:05.403 [debug] QUERY OK source="media_items" db=0.5ms idle=10.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8] 14:01:05.404 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.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" = ?) [8] 14:01:05.405 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:05.405 [debug] QUERY OK source="settings" db=0.4ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:05.406 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:05.406 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:05.407 [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 [] 14:01:05.408 [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 [] 14:01:05.408 [debug] QUERY OK source="settings" db=0.0ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:05.408 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c6/e8/c6e85cd175374b29070037e1e572209980ab6b8b053a99d09c06ebd160c73604.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:08.324 [notice] SIGTERM received - shutting down 14:01:08.324 [info] DRAINING 2 of 2 total connection(s) for socket Phoenix.LiveView.Socket every 2000ms - round 1 of 1 14:01:08.760 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c6/e8/c6e85cd175374b29070037e1e572209980ab6b8b053a99d09c06ebd160c73604.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:08.760 [debug] Running yt-dlp command for action: download 14:01:08.760 [debug] QUERY OK source="settings" db=0.3ms idle=1709.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:08.761 [debug] QUERY OK source="settings" db=0.7ms idle=1710.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:08.761 [debug] QUERY OK source="settings" db=0.1ms idle=1711.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:08.762 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8d/79/8d79c242d7289467605dd1c5bf8e7905939907070f86ab077a64f914018fb221.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:21.280 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 14:01:21.282 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 14:01:21.282 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 14:01:21.285 [debug] QUERY OK source="oban_jobs" db=3.3ms queue=2.3ms idle=0.0ms UPDATE "oban_jobs" AS o0 SET "state" = ? WHERE (o0."state" = 'executing') ["retryable"] 14:01:21.285 [info] Reset 2 executing jobs 14:01:21.285 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 14:01:21.286 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 14:01:21.287 [debug] Exqlite: loading extension `/app/lib/pinchflat-2025.9.26/priv/repo/extensions/sqlean-linux-x86/sqlean` 14:01:22.269 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2025.09.26 14:01:22.269 [info] [command_wrapper]: /usr/local/bin/apprise called with: --version 14:01:22.507 [debug] [command_wrapper]: /usr/local/bin/apprise called with: --version exited: 0 with: Apprise v1.9.4 Copyright (C) 2025 Chris Caron This code is licensed under the BSD 2-Clause License. 14:01:22.508 [debug] QUERY OK source="settings" db=0.2ms queue=0.5ms idle=1225.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:22.510 [debug] QUERY OK source="settings" db=0.8ms idle=1226.2ms UPDATE "settings" SET "yt_dlp_version" = ? WHERE "id" = ? ["2025.09.26", 1] 14:01:22.510 [debug] QUERY OK source="settings" db=0.4ms idle=1224.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:22.511 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:22.513 [info] {"message":"notifier only receiving messages from its own node, functionality may be degraded","source":"oban","event":"notifier:switch","connectivity_status":"solitary"} 14:01:22.518 [info] Running PinchflatWeb.Endpoint with cowboy 2.13.0 at 0.0.0.0:8945 (http) 14:01:22.520 [info] Access PinchflatWeb.Endpoint at http://localhost:8945 14:01:22.527 [info] {"args":{},"id":67,"meta":{},"system_time":1784894482527750272,"max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","event":"job:start","attempt":1,"tags":["local_data"]} 14:01:22.528 [info] Updating yt-dlp 14:01:22.528 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update 14:01:23.521 [info] {"args":{"id":7},"id":11,"meta":{},"system_time":1784894483521582789,"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"]} 14:01:23.521 [info] {"args":{"id":8},"id":12,"meta":{},"system_time":1784894483521680419,"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"]} 14:01:23.522 [debug] QUERY OK source="media_items" db=0.2ms queue=0.3ms idle=1011.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" = ?) [7] 14:01:23.522 [debug] QUERY OK source="media_items" db=0.4ms queue=0.3ms idle=1001.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" = ?) [8] 14:01:23.524 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:23.525 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:23.526 [debug] QUERY OK source="sources" db=0.5ms queue=1.3ms idle=996.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:23.526 [debug] QUERY OK source="sources" db=0.7ms queue=0.4ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:23.527 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.4ms idle=4.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:23.527 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:23.528 [debug] QUERY OK source="media_items" db=0.1ms queue=0.4ms idle=1.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8] 14:01:23.528 [debug] QUERY OK source="media_items" db=1.1ms queue=0.2ms idle=4.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [7] 14:01:23.530 [debug] QUERY OK source="media_metadata" db=0.6ms 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" = ?) [8] 14:01:23.530 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 14:01:23.531 [debug] QUERY OK source="media_metadata" db=0.4ms idle=3.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [7] 14:01:23.531 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:23.531 [debug] QUERY OK source="media_profiles" db=0.8ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:23.532 [debug] QUERY OK source="settings" db=0.7ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:23.532 [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 [] 14:01:23.533 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:23.533 [debug] QUERY OK source="settings" db=0.8ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:23.534 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:23.534 [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 [] 14:01:23.534 [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 [] 14:01:23.535 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:23.535 [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 [] 14:01:23.535 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:23.535 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/4b/4d4b44f32aad838cdf69f3bd4e68f06f4bad43b0e08a11579120ad1e91434809.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:23.535 [debug] QUERY OK source="settings" db=0.4ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:23.536 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f3/af/f3af395b5c72aa356125052c56a9516d85ef83afdcc73195a64e07e8964ab0a2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:24.994 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update exited: 0 with: Current version: stable@2025.09.26 from yt-dlp/yt-dlp Latest version: stable@2026.07.04 from yt-dlp/yt-dlp Current Build Hash: d2f07382138f4bd882254996502636f5a67a8c5ee5ab8a25807e2784a4878642 Updating to stable@2026.07.04 from yt-dlp/yt-dlp ... Updated yt-dlp to stable@2026.07.04 from yt-dlp/yt-dlp 14:01:24.994 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 14:01:25.071 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/4b/4d4b44f32aad838cdf69f3bd4e68f06f4bad43b0e08a11579120ad1e91434809.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: Your yt-dlp version (2025.09.26) is older than 90 days! It is strongly recommended to always use the latest version. Run "yt-dlp --update" or "yt-dlp -U" to update. To suppress this warning, add --no-update to your command/config. Traceback (most recent call last): File "__main__.py", line 17, in File "yt_dlp/__init__.py", line 1071, in main File "yt_dlp/__init__.py", line 1062, in _real_main File "yt_dlp/YoutubeDL.py", line 3611, in download File "yt_dlp/YoutubeDL.py", line 3584, in wrapper File "yt_dlp/YoutubeDL.py", line 1634, in extract_info File "yt_dlp/YoutubeDL.py", line 863, in get_info_extractor File "yt_dlp/extractor/lazy_extractors.py", line 37, in __new__ File "yt_dlp/utils/_utils.py", line 5042, in __get__ File "yt_dlp/extractor/lazy_extractors.py", line 33, in real_class File "importlib/__init__.py", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "pyimod02_importers.py", line 446, in exec_module File "pyimod02_importers.py", line 383, in _check_name_wrapper File "pyimod02_importers.py", line 503, in get_code File "pyimod01_archive.py", line 134, in extract zlib.error: Error -3 while decompressing data: incorrect header check [PYI-207:ERROR] Failed to execute script '__main__' due to unhandled exception! 14:01:25.075 [error] yt-dlp download error for media item #8: "WARNING: Your yt-dlp version (2025.09.26) is older than 90 days!\n It is strongly recommended to always use the latest version.\n Run \"yt-dlp --update\" or \"yt-dlp -U\" to update.\n To suppress this warning, add --no-update to your command/config.\nTraceback (most recent call last):\n File \"__main__.py\", line 17, in \n File \"yt_dlp/__init__.py\", line 1071, in main\n File \"yt_dlp/__init__.py\", line 1062, in _real_main\n File \"yt_dlp/YoutubeDL.py\", line 3611, in download\n File \"yt_dlp/YoutubeDL.py\", line 3584, in wrapper\n File \"yt_dlp/YoutubeDL.py\", line 1634, in extract_info\n File \"yt_dlp/YoutubeDL.py\", line 863, in get_info_extractor\n File \"yt_dlp/extractor/lazy_extractors.py\", line 37, in __new__\n File \"yt_dlp/utils/_utils.py\", line 5042, in __get__\n File \"yt_dlp/extractor/lazy_extractors.py\", line 33, in real_class\n File \"importlib/__init__.py\", line 88, in import_module\n File \"\", line 1387, in _gcd_import\n File \"\", line 1360, in _find_and_load\n File \"\", line 1331, in _find_and_load_unlocked\n File \"\", line 935, in _load_unlocked\n File \"pyimod02_importers.py\", line 446, in exec_module\n File \"pyimod02_importers.py\", line 383, in _check_name_wrapper\n File \"pyimod02_importers.py\", line 503, in get_code\n File \"pyimod01_archive.py\", line 134, in extract\nzlib.error: Error -3 while decompressing data: incorrect header check\n[PYI-207:ERROR] Failed to execute script '__main__' due to unhandled exception!\n" 14:01:25.081 [debug] QUERY OK source="media_items" db=6.2ms idle=1540.2ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: Your yt-dlp version (2025.09.26) is older than 90 days!\n It is strongly recommended to always use the latest version.\n Run \"yt-dlp --update\" or \"yt-dlp -U\" to update.\n To suppress this warning, add --no-update to your command/config.\nTraceback (most recent call last):\n File \"__main__.py\", line 17, in \n File \"yt_dlp/__init__.py\", line 1071, in main\n File \"yt_dlp/__init__.py\", line 1062, in _real_main\n File \"yt_dlp/YoutubeDL.py\", line 3611, in download\n File \"yt_dlp/YoutubeDL.py\", line 3584, in wrapper\n File \"yt_dlp/YoutubeDL.py\", line 1634, in extract_info\n File \"yt_dlp/YoutubeDL.py\", line 863, in get_info_extractor\n File \"yt_dlp/extractor/lazy_extractors.py\", line 37, in __new__\n File \"yt_dlp/utils/_utils.py\", line 5042, in __get__\n File \"yt_dlp/extractor/lazy_extractors.py\", line 33, in real_class\n File \"importlib/__init__.py\", line 88, in import_module\n File \"\", line 1387, in _gcd_import\n File \"\", line 1360, in _find_and_load\n File \"\", line 1331, in _find_and_load_unlocked\n File \"\", line 935, in _load_unlocked\n File \"pyimod02_importers.py\", line 446, in exec_module\n File \"pyimod02_importers.py\", line 383, in _check_name_wrapper\n File \"pyimod02_importers.py\", line 503, in get_code\n File \"pyimod01_archive.py\", line 134, in extract\nzlib.error: Error -3 while decompressing data: incorrect header check\n[PYI-207:ERROR] Failed to execute script '__main__' due to unhandled exception!\n", ~U[2026-07-24 12:01:25Z], 8] 14:01:25.093 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":8},"id":12,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1560296,"event":"job:exception","queue_time":168520802,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:25.109 [info] {"args":{"id":9},"id":13,"meta":{},"system_time":1784894485109176778,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:25.112 [debug] QUERY OK source="media_items" db=1.1ms queue=1.8ms idle=1573.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [9] 14:01:25.112 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:25.113 [debug] QUERY OK source="sources" db=0.4ms idle=591.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:25.114 [debug] QUERY OK source="media_profiles" db=0.3ms idle=31.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:25.114 [debug] QUERY OK source="media_items" db=0.5ms idle=24.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 [9] 14:01:25.118 [debug] QUERY OK source="media_metadata" db=1.6ms idle=7.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [9] 14:01:25.120 [debug] QUERY OK source="media_profiles" db=1.4ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:25.120 [debug] QUERY OK source="settings" db=0.6ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.121 [debug] QUERY OK source="settings" db=0.4ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.122 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:25.123 [debug] QUERY OK source="settings" db=0.3ms idle=8.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.124 [debug] QUERY OK source="settings" db=0.2ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.124 [debug] QUERY OK source="settings" db=0.8ms 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:01:25.125 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FbmkW8EpNaY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d1/a5/d1a583b1daf2d3e0fbd853ccf41ebc3c22db011ea857ae8e2ad2e549eecb046b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:25.148 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f3/af/f3af395b5c72aa356125052c56a9516d85ef83afdcc73195a64e07e8964ab0a2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: WARNING: Your yt-dlp version (2025.09.26) is older than 90 days! It is strongly recommended to always use the latest version. Run "yt-dlp --update" or "yt-dlp -U" to update. To suppress this warning, add --no-update to your command/config. Traceback (most recent call last): File "__main__.py", line 17, in File "yt_dlp/__init__.py", line 1071, in main File "yt_dlp/__init__.py", line 1062, in _real_main File "yt_dlp/YoutubeDL.py", line 3611, in download File "yt_dlp/YoutubeDL.py", line 3584, in wrapper File "yt_dlp/YoutubeDL.py", line 1634, in extract_info File "yt_dlp/YoutubeDL.py", line 863, in get_info_extractor File "yt_dlp/extractor/lazy_extractors.py", line 37, in __new__ File "yt_dlp/utils/_utils.py", line 5042, in __get__ File "yt_dlp/extractor/lazy_extractors.py", line 33, in real_class File "importlib/__init__.py", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "pyimod02_importers.py", line 446, in exec_module File "pyimod02_importers.py", line 383, in _check_name_wrapper File "pyimod02_importers.py", line 503, in get_code File "pyimod01_archive.py", line 134, in extract zlib.error: Error -3 while decompressing data: incorrect header check [PYI-206:ERROR] Failed to execute script '__main__' due to unhandled exception! 14:01:25.148 [error] yt-dlp download error for media item #7: "WARNING: Your yt-dlp version (2025.09.26) is older than 90 days!\n It is strongly recommended to always use the latest version.\n Run \"yt-dlp --update\" or \"yt-dlp -U\" to update.\n To suppress this warning, add --no-update to your command/config.\nTraceback (most recent call last):\n File \"__main__.py\", line 17, in \n File \"yt_dlp/__init__.py\", line 1071, in main\n File \"yt_dlp/__init__.py\", line 1062, in _real_main\n File \"yt_dlp/YoutubeDL.py\", line 3611, in download\n File \"yt_dlp/YoutubeDL.py\", line 3584, in wrapper\n File \"yt_dlp/YoutubeDL.py\", line 1634, in extract_info\n File \"yt_dlp/YoutubeDL.py\", line 863, in get_info_extractor\n File \"yt_dlp/extractor/lazy_extractors.py\", line 37, in __new__\n File \"yt_dlp/utils/_utils.py\", line 5042, in __get__\n File \"yt_dlp/extractor/lazy_extractors.py\", line 33, in real_class\n File \"importlib/__init__.py\", line 88, in import_module\n File \"\", line 1387, in _gcd_import\n File \"\", line 1360, in _find_and_load\n File \"\", line 1331, in _find_and_load_unlocked\n File \"\", line 935, in _load_unlocked\n File \"pyimod02_importers.py\", line 446, in exec_module\n File \"pyimod02_importers.py\", line 383, in _check_name_wrapper\n File \"pyimod02_importers.py\", line 503, in get_code\n File \"pyimod01_archive.py\", line 134, in extract\nzlib.error: Error -3 while decompressing data: incorrect header check\n[PYI-206:ERROR] Failed to execute script '__main__' due to unhandled exception!\n" 14:01:25.154 [debug] QUERY OK source="media_items" db=6.0ms idle=27.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["WARNING: Your yt-dlp version (2025.09.26) is older than 90 days!\n It is strongly recommended to always use the latest version.\n Run \"yt-dlp --update\" or \"yt-dlp -U\" to update.\n To suppress this warning, add --no-update to your command/config.\nTraceback (most recent call last):\n File \"__main__.py\", line 17, in \n File \"yt_dlp/__init__.py\", line 1071, in main\n File \"yt_dlp/__init__.py\", line 1062, in _real_main\n File \"yt_dlp/YoutubeDL.py\", line 3611, in download\n File \"yt_dlp/YoutubeDL.py\", line 3584, in wrapper\n File \"yt_dlp/YoutubeDL.py\", line 1634, in extract_info\n File \"yt_dlp/YoutubeDL.py\", line 863, in get_info_extractor\n File \"yt_dlp/extractor/lazy_extractors.py\", line 37, in __new__\n File \"yt_dlp/utils/_utils.py\", line 5042, in __get__\n File \"yt_dlp/extractor/lazy_extractors.py\", line 33, in real_class\n File \"importlib/__init__.py\", line 88, in import_module\n File \"\", line 1387, in _gcd_import\n File \"\", line 1360, in _find_and_load\n File \"\", line 1331, in _find_and_load_unlocked\n File \"\", line 935, in _load_unlocked\n File \"pyimod02_importers.py\", line 446, in exec_module\n File \"pyimod02_importers.py\", line 383, in _check_name_wrapper\n File \"pyimod02_importers.py\", line 503, in get_code\n File \"pyimod01_archive.py\", line 134, in extract\nzlib.error: Error -3 while decompressing data: incorrect header check\n[PYI-206:ERROR] Failed to execute script '__main__' due to unhandled exception!\n", ~U[2026-07-24 12:01:25Z], 7] 14:01:25.157 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":7},"id":11,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1633218,"event":"job:exception","queue_time":169520802,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:25.165 [info] {"args":{"id":10},"id":14,"meta":{},"system_time":1784894485165107683,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:25.167 [debug] QUERY OK source="media_items" db=2.1ms idle=41.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" = ?) [10] 14:01:25.168 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:25.169 [debug] QUERY OK source="sources" db=0.5ms idle=44.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:25.171 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms idle=15.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:25.173 [debug] QUERY OK source="media_items" db=2.2ms idle=14.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [10] 14:01:25.177 [debug] QUERY OK source="media_metadata" db=0.7ms idle=11.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" = ?) [10] 14:01:25.179 [debug] QUERY OK source="media_profiles" db=1.8ms idle=10.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:25.183 [debug] QUERY OK source="settings" db=3.7ms idle=10.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.184 [debug] QUERY OK source="settings" db=0.8ms idle=12.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.188 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:25.192 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:01:25.194 [debug] QUERY OK source="settings" db=1.7ms 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 [] 14:01:25.194 [debug] QUERY OK source="settings" db=0.4ms idle=14.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:25.194 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=TtX3jDaZG8Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/52/00523b1d46597fefeb294030e27b9a816b382f63272b78a652426274354dd546.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:26.058 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2026.07.04 14:01:26.059 [debug] QUERY OK source="settings" db=0.6ms idle=874.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:26.060 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=867.7ms UPDATE "settings" SET "yt_dlp_version" = ? WHERE "id" = ? ["2026.07.04", 1] 14:01:26.062 [info] {"args":{},"id":67,"meta":{},"state":"success","max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","duration":3532957,"event":"job:stop","queue_time":526778,"attempt":1,"tags":["local_data"]} 14:01:27.733 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FbmkW8EpNaY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d1/a5/d1a583b1daf2d3e0fbd853ccf41ebc3c22db011ea857ae8e2ad2e549eecb046b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:27.734 [debug] Running yt-dlp command for action: download 14:01:27.734 [debug] QUERY OK source="settings" db=0.2ms idle=456.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:27.735 [debug] QUERY OK source="settings" db=0.5ms idle=456.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:27.735 [debug] QUERY OK source="settings" db=0.4ms idle=457.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:27.735 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FbmkW8EpNaY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b3/66/b36639aa1fde826da541febfa34db9df6be60c17ba6a2d58c64e43f85508f3ca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:28.190 [info] GET /sources 14:01:28.190 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:01:28.195 [debug] QUERY OK source="settings" db=1.6ms idle=916.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.196 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=665.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.198 [debug] QUERY OK source="settings" db=1.3ms idle=462.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.199 [debug] QUERY OK source="settings" db=0.4ms idle=463.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.200 [debug] QUERY OK source="settings" db=0.1ms queue=0.3ms idle=463.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.201 [debug] QUERY OK source="sources" db=0.7ms queue=0.5ms idle=4.6ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 14:01:28.205 [debug] QUERY OK source="sources" db=2.5ms queue=1.0ms idle=5.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", 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] 14:01:28.209 [info] Sent 200 in 18ms 14:01:28.396 [info] CONNECTED TO Phoenix.LiveView.Socket in 19µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "PioERxkqGzRXBzAnPw4lVzdZOmtAYVsCMycjrIqW0bBNfOCnn0tXxP3A", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:01:28.427 [debug] MOUNT PinchflatWeb.Sources.SourceLive.IndexTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "initial_sort_direction" => :asc, "initial_sort_key" => :custom_name, "results_per_page" => 10} 14:01:28.429 [debug] QUERY OK source="sources" db=1.2ms idle=229.1ms 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)) [] 14:01:28.432 [debug] QUERY OK source="sources" db=3.5ms idle=229.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", 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] 14:01:28.433 [debug] Replied in 5ms 14:01:28.434 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 14:01:28.435 [debug] Replied in 97µs 14:01:28.508 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=TtX3jDaZG8Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/52/00523b1d46597fefeb294030e27b9a816b382f63272b78a652426274354dd546.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:28.508 [debug] Running yt-dlp command for action: download 14:01:28.509 [debug] QUERY OK source="settings" db=0.1ms idle=309.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.509 [debug] QUERY OK source="settings" db=0.1ms idle=307.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.509 [debug] QUERY OK source="settings" db=0.2ms idle=303.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:28.510 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=TtX3jDaZG8Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/62/79/6279fe3dd062a89776cf3b05069958e0094adde38d42138ddc5bea9e86e601e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:30.313 [info] GET /sources/1 14:01:30.313 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:01:30.314 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=779.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:30.314 [debug] QUERY OK source="media_profiles" db=0.1ms idle=36.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:30.315 [debug] QUERY OK source="tasks" db=0.2ms idle=36.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 (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 14:01:30.315 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=0.1ms idle=37.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" = ?) [66] 14:01:30.315 [debug] QUERY OK source="settings" db=0.1ms idle=37.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:30.315 [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 [] 14:01:30.316 [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 [] 14:01:30.317 [debug] QUERY OK source="sources" db=0.1ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:30.318 [debug] QUERY OK source="media_items" db=0.1ms queue=0.2ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:01:30.320 [debug] QUERY OK source="media_items" db=0.8ms queue=0.8ms idle=2.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:01:30.321 [debug] QUERY OK source="sources" db=0.2ms idle=5.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:30.322 [debug] QUERY OK source="media_items" db=0.1ms queue=0.3ms idle=5.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 14:01:30.322 [debug] QUERY OK source="media_items" db=0.1ms queue=0.3ms idle=4.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:01:30.324 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [1] 14:01:30.325 [debug] QUERY OK source="media_items" db=0.2ms queue=0.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 ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 14:01:30.326 [debug] QUERY OK source="media_items" db=0.4ms queue=0.5ms 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 ? [1, 10, 0] 14:01:30.327 [info] Sent 200 in 14ms 14:01:30.498 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BBUDbhxTG1Q2EhwBASURS28aBR5TdQ40wFdCw0q7QwnhXdwr6sK-kDfw", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://192.168.1.3:8945/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "http://192.168.1.3:8945/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:01:30.532 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "pending", "source_id" => 1} 14:01:30.533 [debug] QUERY OK source="sources" db=0.6ms idle=210.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:30.533 [debug] QUERY OK source="media_items" db=0.3ms idle=210.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")))) [1] 14:01:30.534 [debug] QUERY OK source="media_items" db=0.5ms idle=209.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 ? [1, 10, 0] 14:01:30.534 [debug] Replied in 2ms 14:01:30.538 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "downloaded", "source_id" => 1} 14:01:30.538 [debug] QUERY OK source="sources" db=0.4ms idle=211.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:30.539 [debug] QUERY OK source="media_items" db=0.3ms idle=5.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 14:01:30.539 [debug] QUERY OK source="media_items" db=0.4ms idle=5.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:01:30.539 [debug] Replied in 1ms 14:01:30.540 [debug] MOUNT PinchflatWeb.Sources.MediaItemTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC", "media_state" => "other", "source_id" => 1} 14:01:30.541 [debug] QUERY OK source="sources" db=0.4ms idle=6.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:30.542 [debug] QUERY OK source="media_items" db=0.4ms idle=5.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"))))) [1] 14:01:30.542 [debug] QUERY OK source="media_items" db=0.6ms 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 ? [1, 10, 0] 14:01:30.543 [debug] Replied in 2ms 14:01:30.543 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "sSg-kcjcgeriYAf9YiN381hC"} 14:01:30.543 [debug] Replied in 60µs 14:01:48.575 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FbmkW8EpNaY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b3/66/b36639aa1fde826da541febfa34db9df6be60c17ba6a2d58c64e43f85508f3ca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:48.597 [debug] Running yt-dlp command for action: download_thumbnail 14:01:48.600 [debug] QUERY OK source="settings" db=0.7ms idle=319.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:48.601 [debug] QUERY OK source="settings" db=0.5ms queue=0.5ms idle=319.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:48.602 [debug] QUERY OK source="settings" db=0.7ms idle=321.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:48.602 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FbmkW8EpNaY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/9/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c9/c4/c9c40d11b02a822c62d5365b3e30850540c7416c00a9955612e82202dd8716dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:50.525 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=TtX3jDaZG8Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/62/79/6279fe3dd062a89776cf3b05069958e0094adde38d42138ddc5bea9e86e601e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:50.545 [debug] Running yt-dlp command for action: download_thumbnail 14:01:50.546 [debug] QUERY OK source="settings" db=0.1ms idle=977.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:50.546 [debug] QUERY OK source="settings" db=0.0ms idle=266.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:50.546 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=266.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:50.547 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=TtX3jDaZG8Y --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/10/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/23/3b/233bd2cea7a54413ee01e06356838c46a9af75643c18c25728e4d4db14dcd231.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:51.626 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FbmkW8EpNaY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/9/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c9/c4/c9c40d11b02a822c62d5365b3e30850540c7416c00a9955612e82202dd8716dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:51.627 [debug] QUERY OK db=0.0ms idle=1080.8ms begin [] 14:01:51.628 [debug] QUERY OK source="media_items" db=1.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:01:48Z], "/downloads/The Standup/2026-03-21 The Reality of Making Indie Games | The Standup/The Reality of Making Indie Games | The Standup [FbmkW8EpNaY].mp4", ~U[2026-07-24 12:01:51Z], 9] 14:01:51.630 [debug] QUERY OK source="media_metadata" db=1.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/9/metadata.json.gz", "/config/metadata/media_items/9/thumbnail.jpg", 9, ~U[2026-07-24 12:01:51Z], ~U[2026-07-24 12:01:51Z]] 14:01:51.630 [debug] QUERY OK db=0.4ms commit [] 14:01:51.633 [debug] QUERY OK source="media_items" db=2.0ms idle=1084.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [401425032, ~U[2026-07-24 12:01:51Z], 9] 14:01:51.633 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:51.634 [info] {"args":{"id":9},"id":13,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":26524568,"event":"job:stop","queue_time":168103755,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:51.640 [info] {"args":{"id":11},"id":15,"meta":{},"system_time":1784894511640864294,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:51.641 [debug] QUERY OK source="media_items" db=0.1ms idle=49.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" = ?) [11] 14:01:51.641 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:51.642 [debug] QUERY OK source="sources" db=0.5ms idle=10.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:51.642 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:51.644 [debug] QUERY OK source="media_items" db=1.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 [11] 14:01:51.647 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [11] 14:01:51.648 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.3ms idle=6.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:51.649 [debug] QUERY OK source="settings" db=0.5ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:51.649 [debug] QUERY OK source="settings" db=0.2ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:51.650 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:51.651 [debug] QUERY OK source="settings" db=0.4ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:51.652 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:51.652 [debug] QUERY OK source="settings" db=0.4ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:51.652 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OgfdyH4iaps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a0/60/a060570c3741b8cf93074c2bb620c31c46bdb641795b8be7f400c8f0b6ff1e5a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:52.528 [info] {"source":"oban","duration":13590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:54.103 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=TtX3jDaZG8Y --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/10/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/23/3b/233bd2cea7a54413ee01e06356838c46a9af75643c18c25728e4d4db14dcd231.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:54.104 [debug] QUERY OK db=0.1ms idle=1507.4ms begin [] 14:01:54.106 [debug] QUERY OK source="media_items" db=1.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:01:50Z], "/downloads/The Standup/2026-03-14 What's really going on with AI, Expert weighs in | TheStandup/What's really going on with AI, Expert weighs in | TheStandup [TtX3jDaZG8Y].mp4", ~U[2026-07-24 12:01:54Z], 10] 14:01:54.106 [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/10/metadata.json.gz", "/config/metadata/media_items/10/thumbnail.jpg", 10, ~U[2026-07-24 12:01:54Z], ~U[2026-07-24 12:01:54Z]] 14:01:54.106 [debug] QUERY OK db=0.1ms commit [] 14:01:54.109 [debug] QUERY OK source="media_items" db=2.2ms idle=827.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [326433511, ~U[2026-07-24 12:01:54Z], 10] 14:01:54.110 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:54.111 [info] {"args":{"id":10},"id":14,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":28945370,"event":"job:stop","queue_time":166162793,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:54.119 [info] {"args":{"id":12},"id":16,"meta":{},"system_time":1784894514119246141,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:01:54.119 [debug] QUERY OK source="media_items" db=0.4ms idle=521.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12] 14:01:54.120 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:01:54.121 [debug] QUERY OK source="sources" db=0.3ms idle=13.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:01:54.121 [debug] QUERY OK source="media_profiles" db=0.2ms idle=11.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:54.122 [debug] QUERY OK source="media_items" db=0.5ms idle=10.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [12] 14:01:54.123 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.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" = ?) [12] 14:01:54.124 [debug] QUERY OK source="media_profiles" db=0.6ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:01:54.125 [debug] QUERY OK source="settings" db=0.3ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:54.125 [debug] QUERY OK source="settings" db=0.2ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:54.126 [debug] Running yt-dlp command for action: get_downloadable_status 14:01:54.127 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:54.127 [debug] QUERY OK source="settings" db=0.4ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:54.128 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:54.128 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LpMn08jW02A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8c/35/8c352650515a79a7d67da17634bcfa2d73b99472e45cce8c0fb511090ff7ec84.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:55.052 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OgfdyH4iaps --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a0/60/a060570c3741b8cf93074c2bb620c31c46bdb641795b8be7f400c8f0b6ff1e5a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:55.053 [debug] Running yt-dlp command for action: download 14:01:55.054 [debug] QUERY OK source="settings" db=0.9ms idle=927.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:55.054 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:01:55.055 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:01:55.055 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OgfdyH4iaps --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3e/dd/3edd68b7b1af40be0b33056dc55011020d82d446d46559d2735e968d40a29a60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:01:58.144 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LpMn08jW02A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8c/35/8c352650515a79a7d67da17634bcfa2d73b99472e45cce8c0fb511090ff7ec84.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:01:58.144 [debug] Running yt-dlp command for action: download 14:01:58.145 [debug] QUERY OK source="settings" db=0.4ms idle=1865.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:58.146 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1865.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:58.146 [debug] QUERY OK source="settings" db=0.3ms idle=1543.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:01:58.147 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LpMn08jW02A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d3/a9/d3a9318898b6e1885f3e1d81eb88962959a276634ac36246975b5ee6f23b7d28.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:00.515 [info] {"source":"oban","duration":223,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:02:14.538 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OgfdyH4iaps --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3e/dd/3edd68b7b1af40be0b33056dc55011020d82d446d46559d2735e968d40a29a60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:02:14.557 [debug] Running yt-dlp command for action: download_thumbnail 14:02:14.559 [debug] QUERY OK source="settings" db=0.3ms idle=1279.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:14.559 [debug] QUERY OK source="settings" db=0.3ms idle=1279.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:14.559 [debug] QUERY OK source="settings" db=0.1ms idle=1280.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:14.560 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OgfdyH4iaps --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/11/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e7/61/e761d49034d6cec1613470f377128e721d5bf8c5498ef2b6b59410c9846accf0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:18.095 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OgfdyH4iaps --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/11/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e7/61/e761d49034d6cec1613470f377128e721d5bf8c5498ef2b6b59410c9846accf0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:02:18.096 [debug] QUERY OK db=0.5ms idle=1816.4ms begin [] 14:02:18.098 [debug] QUERY OK source="media_items" db=1.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:02:14Z], "/downloads/The Standup/2026-03-07 Why is Microsoft updating their text editors!? | TheStandup/Why is Microsoft updating their text editors!? | TheStandup [OgfdyH4iaps].mp4", ~U[2026-07-24 12:02:18Z], 11] 14:02:18.099 [debug] QUERY OK source="media_metadata" db=0.7ms 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/11/metadata.json.gz", "/config/metadata/media_items/11/thumbnail.jpg", 11, ~U[2026-07-24 12:02:18Z], ~U[2026-07-24 12:02:18Z]] 14:02:18.100 [debug] QUERY OK db=0.4ms commit [] 14:02:18.102 [debug] QUERY OK source="media_items" db=1.8ms idle=1820.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [237467910, ~U[2026-07-24 12:02:18Z], 11] 14:02:18.102 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:02:18.103 [info] {"args":{"id":11},"id":15,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":26461893,"event":"job:stop","queue_time":190639994,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:02:18.110 [info] {"args":{"id":13},"id":17,"meta":{},"system_time":1784894538110120679,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:02:18.110 [debug] QUERY OK source="media_items" db=0.5ms idle=467.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [13] 14:02:18.111 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:02:18.112 [debug] QUERY OK source="sources" db=0.6ms idle=11.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:02:18.113 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.4ms idle=9.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:18.114 [debug] QUERY OK source="media_items" db=0.7ms idle=10.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 [13] 14:02:18.116 [debug] QUERY OK source="media_metadata" db=0.3ms idle=5.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [13] 14:02:18.116 [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] 14:02:18.117 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.117 [debug] QUERY OK source="settings" db=0.5ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.118 [debug] Running yt-dlp command for action: get_downloadable_status 14:02:18.120 [debug] QUERY OK source="settings" db=0.3ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.120 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:18.121 [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 [] 14:02:18.121 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uhlBpEkdxhM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/a7/28a728575a677e699c9686c12028817c0f5e41d9612a4745dbbed92b2e735c41.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:19.963 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LpMn08jW02A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d3/a9/d3a9318898b6e1885f3e1d81eb88962959a276634ac36246975b5ee6f23b7d28.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:02:19.984 [debug] Running yt-dlp command for action: download_thumbnail 14:02:19.985 [debug] QUERY OK source="settings" db=0.1ms idle=705.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:19.985 [debug] QUERY OK source="settings" db=0.3ms idle=705.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:19.986 [debug] QUERY OK source="settings" db=0.3ms idle=705.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:19.986 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LpMn08jW02A --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/12/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/35/56/35565c08d7719b5d1402d257698a841c0ee3f2e8f416ce119cf598704f077106.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:20.593 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uhlBpEkdxhM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/a7/28a728575a677e699c9686c12028817c0f5e41d9612a4745dbbed92b2e735c41.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:02:20.594 [debug] Running yt-dlp command for action: download 14:02:20.595 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=1314.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:20.595 [debug] QUERY OK source="settings" db=0.4ms idle=948.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:20.596 [debug] QUERY OK source="settings" db=0.3ms idle=610.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:20.596 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uhlBpEkdxhM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d8/35/d8358c7e6604c65595309474aa4d4938bebb9246c67ade020734bfece10972a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:22.530 [info] {"source":"oban","duration":476,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:24.455 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=LpMn08jW02A --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/12/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/35/56/35565c08d7719b5d1402d257698a841c0ee3f2e8f416ce119cf598704f077106.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:02:24.455 [debug] QUERY OK db=0.3ms idle=801.1ms begin [] 14:02:24.457 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:02:19Z], "/downloads/The Standup/2026-02-28 AI Personal Assistants are ruining people lives | TheStandup/AI Personal Assistants are ruining people lives | TheStandup [LpMn08jW02A].mp4", ~U[2026-07-24 12:02:24Z], 12] 14:02:24.465 [debug] QUERY OK source="media_metadata" db=7.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/12/metadata.json.gz", "/config/metadata/media_items/12/thumbnail.jpg", 12, ~U[2026-07-24 12:02:24Z], ~U[2026-07-24 12:02:24Z]] 14:02:24.465 [debug] QUERY OK db=0.4ms commit [] 14:02:24.467 [debug] QUERY OK source="media_items" db=1.0ms idle=186.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [286880276, ~U[2026-07-24 12:02:24Z], 12] 14:02:24.467 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:02:24.468 [info] {"args":{"id":12},"id":16,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":30348210,"event":"job:stop","queue_time":192116943,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:02:24.474 [info] {"args":{"id":14},"id":18,"meta":{},"system_time":1784894544474452980,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:02:24.475 [debug] QUERY OK source="media_items" db=0.2ms idle=194.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [14] 14:02:24.475 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:02:24.475 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=9.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:02:24.476 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:02:24.477 [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 [14] 14:02:24.477 [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" = ?) [14] 14:02:24.478 [debug] QUERY OK source="media_profiles" db=0.4ms 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] 14:02:24.478 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:24.479 [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 [] 14:02:24.479 [debug] Running yt-dlp command for action: get_downloadable_status 14:02:24.480 [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 [] 14:02:24.480 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:24.480 [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 [] 14:02:24.480 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FBvB1MQis4Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/09/d8/09d8253dded3e03bebc2514b4099166f12c8e79918cd74bf5ec52c5cb8398de7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:26.784 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FBvB1MQis4Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/09/d8/09d8253dded3e03bebc2514b4099166f12c8e79918cd74bf5ec52c5cb8398de7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:02:26.784 [debug] Running yt-dlp command for action: download 14:02:26.785 [debug] QUERY OK source="settings" db=0.5ms idle=505.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:26.786 [debug] QUERY OK source="settings" db=0.2ms idle=505.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:26.786 [debug] QUERY OK source="settings" db=0.1ms idle=506.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:02:26.786 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FBvB1MQis4Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c0/30/c030423750934b1dc3c30519f62c53cee045170fd4111df7e2d12b801e3fb619.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:02:52.531 [info] {"source":"oban","duration":476,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:00.516 [info] {"source":"oban","duration":372,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:03:02.198 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uhlBpEkdxhM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d8/35/d8358c7e6604c65595309474aa4d4938bebb9246c67ade020734bfece10972a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:02.219 [debug] Running yt-dlp command for action: download_thumbnail 14:03:02.221 [debug] QUERY OK source="settings" db=0.2ms idle=1941.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:02.221 [debug] QUERY OK source="settings" db=0.3ms idle=1941.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:02.222 [debug] QUERY OK source="settings" db=0.8ms idle=1705.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:02.222 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uhlBpEkdxhM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/13/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a1/c4/a1c4e8b25d959d7ca66f746d0e3dcf552732a0e4d31c7766edd47feb29939d07.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:04.546 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FBvB1MQis4Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c0/30/c030423750934b1dc3c30519f62c53cee045170fd4111df7e2d12b801e3fb619.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:04.567 [debug] Running yt-dlp command for action: download_thumbnail 14:03:04.568 [debug] QUERY OK source="settings" db=0.1ms idle=1288.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.568 [debug] QUERY OK source="settings" db=0.2ms idle=1288.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.569 [debug] QUERY OK source="settings" db=0.1ms idle=1288.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.570 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FBvB1MQis4Y --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/14/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9f/0f/9f0f8512de833fcd905f668446f35f57e874994b0451b3d83531464a1e88643d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:04.912 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uhlBpEkdxhM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/13/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a1/c4/a1c4e8b25d959d7ca66f746d0e3dcf552732a0e4d31c7766edd47feb29939d07.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:04.913 [debug] QUERY OK db=0.1ms idle=633.6ms begin [] 14:03:04.914 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:03:02Z], "/downloads/The Standup/2026-02-21 Big KRAZAM Announcement | TheStandup/Big KRAZAM Announcement | TheStandup [uhlBpEkdxhM].mp4", ~U[2026-07-24 12:03:04Z], 13] 14:03:04.916 [debug] QUERY OK source="media_metadata" db=2.1ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/13/metadata.json.gz", "/config/metadata/media_items/13/thumbnail.jpg", 13, ~U[2026-07-24 12:03:04Z], ~U[2026-07-24 12:03:04Z]] 14:03:04.917 [debug] QUERY OK db=0.2ms commit [] 14:03:04.918 [debug] QUERY OK source="media_items" db=0.7ms idle=349.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [604928103, ~U[2026-07-24 12:03:04Z], 13] 14:03:04.918 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:04.919 [info] {"args":{"id":13},"id":17,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":46808748,"event":"job:stop","queue_time":215108788,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:04.925 [info] {"args":{"id":15},"id":19,"meta":{},"system_time":1784894584925720035,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:04.926 [debug] QUERY OK source="media_items" db=0.3ms idle=207.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [15] 14:03:04.927 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:04.927 [debug] QUERY OK source="sources" db=0.3ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:03:04.928 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:04.928 [debug] QUERY OK source="media_items" db=0.3ms 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 [15] 14:03:04.929 [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" = ?) [15] 14:03:04.930 [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] 14:03:04.930 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.931 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.931 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:04.932 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.932 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:04.932 [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 [] 14:03:04.932 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CzEmKTk5Rs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9e/fc/9efcee1aa68d24c5fced9a87987970dafacf0337ef8638cabe532a1f90100d29.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:07.222 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FBvB1MQis4Y --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/14/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9f/0f/9f0f8512de833fcd905f668446f35f57e874994b0451b3d83531464a1e88643d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:07.223 [debug] QUERY OK db=0.2ms idle=943.2ms begin [] 14:03:07.223 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:03:04Z], "/downloads/The Standup/2026-02-14 We used to be gamers | TheStandup/We used to be gamers | TheStandup [FBvB1MQis4Y].mp4", ~U[2026-07-24 12:03:07Z], 14] 14:03:07.224 [debug] QUERY OK source="media_metadata" db=0.5ms 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/14/metadata.json.gz", "/config/metadata/media_items/14/thumbnail.jpg", 14, ~U[2026-07-24 12:03:07Z], ~U[2026-07-24 12:03:07Z]] 14:03:07.225 [debug] QUERY OK db=0.2ms commit [] 14:03:07.227 [debug] QUERY OK source="media_items" db=1.6ms idle=945.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [598781636, ~U[2026-07-24 12:03:07Z], 14] 14:03:07.227 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:07.228 [info] {"args":{"id":14},"id":18,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":42753244,"event":"job:stop","queue_time":220473855,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:07.234 [info] {"args":{"id":16},"id":20,"meta":{},"system_time":1784894587234405225,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:07.234 [debug] QUERY OK source="media_items" db=0.1ms idle=513.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [16] 14:03:07.235 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:07.235 [debug] QUERY OK source="sources" db=0.1ms idle=9.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:03:07.235 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:07.236 [debug] QUERY OK source="media_items" db=0.4ms 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 [16] 14:03:07.237 [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" = ?) [16] 14:03:07.237 [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] 14:03:07.238 [debug] QUERY OK source="settings" db=0.5ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:07.238 [debug] QUERY OK source="settings" db=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:07.240 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:07.241 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:07.242 [debug] QUERY OK source="settings" db=0.4ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:07.242 [debug] QUERY OK source="settings" db=0.5ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:07.242 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kD7CRXRbcrw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/05/72/05720ea521cd716f539bdf063a40b3809ec3aa158cb2179f173d30cc31023d97.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:08.266 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CzEmKTk5Rs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9e/fc/9efcee1aa68d24c5fced9a87987970dafacf0337ef8638cabe532a1f90100d29.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:08.267 [debug] Running yt-dlp command for action: download 14:03:08.267 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1028.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:08.268 [debug] QUERY OK source="settings" db=0.1ms idle=1026.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:08.268 [debug] QUERY OK source="settings" db=0.2ms idle=1026.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:08.269 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CzEmKTk5Rs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1d/03/1d0396ac3d26be4671aca4f2b8e0f69226200685fbc3f379bc816e3eefe5dbc6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:09.565 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kD7CRXRbcrw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/05/72/05720ea521cd716f539bdf063a40b3809ec3aa158cb2179f173d30cc31023d97.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:09.565 [debug] Running yt-dlp command for action: download 14:03:09.566 [debug] QUERY OK source="settings" db=0.1ms idle=1285.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:09.566 [debug] QUERY OK source="settings" db=0.2ms idle=842.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:09.566 [debug] QUERY OK source="settings" db=0.2ms idle=285.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:09.567 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kD7CRXRbcrw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/95/71/9571ce4154b9f742995299f236fa0003a35db4307ee9873e9b0cb3e0e6a9cc1d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:22.532 [info] {"source":"oban","duration":490,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:30.769 [info] GET /sources/6d6132e3-0434-4a17-9843-fab099fbe97d/feed.xml 14:03:30.769 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "6d6132e3-0434-4a17-9843-fab099fbe97d"} Pipelines: [:maybe_basic_auth] 14:03:30.770 [debug] QUERY OK source="sources" db=0.7ms queue=0.3ms idle=1488.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["6d6132e3-0434-4a17-9843-fab099fbe97d"] 14:03:30.771 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=1490.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [1, 2000] 14:03:30.774 [debug] QUERY OK source="source_metadata" db=0.4ms queue=0.4ms idle=1010.6ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [1] 14:03:30.774 [debug] QUERY OK source="media_metadata" db=0.3ms idle=493.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" = ?) [1] 14:03:30.774 [info] Sent 200 in 5ms 14:03:43.686 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kD7CRXRbcrw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/95/71/9571ce4154b9f742995299f236fa0003a35db4307ee9873e9b0cb3e0e6a9cc1d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:43.706 [debug] Running yt-dlp command for action: download_thumbnail 14:03:43.707 [debug] QUERY OK source="settings" db=0.1ms idle=1426.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:43.707 [debug] QUERY OK source="settings" db=0.1ms idle=1426.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:43.707 [debug] QUERY OK source="settings" db=0.1ms idle=1426.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:43.708 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kD7CRXRbcrw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/16/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4f/3c/4f3cb667dba1bd98fd2fd958bce734a0b8308a06e63136bf47e4947deee4bea6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:47.643 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kD7CRXRbcrw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/16/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4f/3c/4f3cb667dba1bd98fd2fd958bce734a0b8308a06e63136bf47e4947deee4bea6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:47.643 [debug] QUERY OK db=0.2ms idle=1362.8ms begin [] 14:03:47.644 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:03:43Z], "/downloads/The Standup/2026-02-03 Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup/Luke talks RAM Pricing, Tech Youtube and LTT Developer hiring process | The Standup [kD7CRXRbcrw].mp4", ~U[2026-07-24 12:03:47Z], 16] 14:03:47.654 [debug] QUERY OK source="media_metadata" db=9.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/16/metadata.json.gz", "/config/metadata/media_items/16/thumbnail.jpg", 16, ~U[2026-07-24 12:03:47Z], ~U[2026-07-24 12:03:47Z]] 14:03:47.655 [debug] QUERY OK db=0.6ms commit [] 14:03:47.656 [debug] QUERY OK source="media_items" db=0.6ms idle=861.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [638009914, ~U[2026-07-24 12:03:47Z], 16] 14:03:47.656 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:47.657 [info] {"args":{"id":16},"id":20,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":40422345,"event":"job:stop","queue_time":260233770,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:47.663 [info] {"args":{"id":17},"id":21,"meta":{},"system_time":1784894627663592011,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:03:47.664 [debug] QUERY OK source="media_items" db=0.1ms idle=383.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [17] 14:03:47.664 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:03:47.664 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [1] 14:03:47.665 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.3ms idle=8.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:03:47.665 [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 [17] 14:03:47.666 [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" = ?) [17] 14:03:47.666 [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] 14:03:47.667 [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 [] 14:03:47.667 [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 [] 14:03:47.667 [debug] Running yt-dlp command for action: get_downloadable_status 14:03:47.668 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:47.668 [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 [] 14:03:47.668 [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 [] 14:03:47.668 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vbmcHjZWI_U --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/af/61/af611794ba2e874d5737aa9a7b7b1bf19106169b04e099f293f653c9d5081f45.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:50.103 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vbmcHjZWI_U --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/af/61/af611794ba2e874d5737aa9a7b7b1bf19106169b04e099f293f653c9d5081f45.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:03:50.104 [debug] Running yt-dlp command for action: download 14:03:50.104 [debug] QUERY OK source="settings" db=0.3ms idle=823.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:50.105 [debug] QUERY OK source="settings" db=0.1ms idle=823.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:50.105 [debug] QUERY OK source="settings" db=0.1ms idle=824.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:03:50.105 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vbmcHjZWI_U --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0a/cc/0acc13f6c4c569aa1f64e3c2d7fc206b7ef3dcb231a397008f436f6eb214da5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:03:52.533 [info] {"source":"oban","duration":568,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:00.517 [info] {"source":"oban","duration":242,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:04:03.975 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CzEmKTk5Rs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1d/03/1d0396ac3d26be4671aca4f2b8e0f69226200685fbc3f379bc816e3eefe5dbc6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:04.008 [debug] Running yt-dlp command for action: download_thumbnail 14:04:04.009 [debug] QUERY OK source="settings" db=0.1ms idle=1728.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.009 [debug] QUERY OK source="settings" db=0.1ms idle=1192.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.009 [debug] QUERY OK source="settings" db=0.0ms idle=710.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:04.009 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CzEmKTk5Rs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/15/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0f/14/0f14570043d9582cf0098471fd1741450317b4356b1fdbc3a35d9d84bf452727.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:07.359 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CzEmKTk5Rs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/15/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0f/14/0f14570043d9582cf0098471fd1741450317b4356b1fdbc3a35d9d84bf452727.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:07.360 [debug] QUERY OK db=0.2ms idle=538.0ms begin [] 14:04:07.361 [debug] QUERY OK source="media_items" db=1.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:04:03Z], "/downloads/The Standup/2026-02-08 AGI Achieved?! | TheStandup/AGI Achieved?! | TheStandup [_CzEmKTk5Rs].mp4", ~U[2026-07-24 12:04:07Z], 15] 14:04:07.362 [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/15/metadata.json.gz", "/config/metadata/media_items/15/thumbnail.jpg", 15, ~U[2026-07-24 12:04:07Z], ~U[2026-07-24 12:04:07Z]] 14:04:07.362 [debug] QUERY OK db=0.1ms commit [] 14:04:07.363 [debug] QUERY OK source="media_items" db=0.9ms idle=64.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [335766323, ~U[2026-07-24 12:04:07Z], 15] 14:04:07.364 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:04:07.364 [info] {"args":{"id":15},"id":19,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":62438352,"event":"job:stop","queue_time":258924755,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:07.371 [info] {"args":{"id":18},"id":22,"meta":{},"system_time":1784894647371525966,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:07.371 [debug] QUERY OK source="media_items" db=0.1ms idle=72.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [18] 14:04:07.372 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:04:07.373 [debug] QUERY OK source="sources" db=0.3ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:04:07.373 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:04:07.374 [debug] QUERY OK source="media_items" db=0.1ms 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 [18] 14:04:07.375 [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" = ?) [18] 14:04:07.376 [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] 14:04:07.376 [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:04:07.376 [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 [] 14:04:07.377 [debug] Running yt-dlp command for action: get_downloadable_status 14:04:07.378 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:07.378 [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 [] 14:04:07.379 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:07.379 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gstn9qcNdlc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/90/49/90495d1f0a4d0a89d59f006622303e9a18b2d9244dc28e4f7996c2447e8d5f1c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:10.544 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gstn9qcNdlc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/90/49/90495d1f0a4d0a89d59f006622303e9a18b2d9244dc28e4f7996c2447e8d5f1c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:10.545 [debug] Running yt-dlp command for action: download 14:04:10.545 [debug] QUERY OK source="settings" db=0.1ms idle=1246.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:10.545 [debug] QUERY OK source="settings" db=0.1ms idle=1246.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:10.545 [debug] QUERY OK source="settings" db=0.1ms idle=1246.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:10.545 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gstn9qcNdlc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6a/32/6a327607819eacf3f842003feb054be29b28ed61802f4bf7361a152f8ff76b00.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:13.406 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vbmcHjZWI_U --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0a/cc/0acc13f6c4c569aa1f64e3c2d7fc206b7ef3dcb231a397008f436f6eb214da5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:13.428 [debug] Running yt-dlp command for action: download_thumbnail 14:04:13.429 [debug] QUERY OK source="settings" db=0.2ms idle=1130.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:13.429 [debug] QUERY OK source="settings" db=0.1ms idle=1130.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:13.430 [debug] QUERY OK source="settings" db=0.2ms idle=1131.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:13.430 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vbmcHjZWI_U --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/17/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/35/2c/352cc4dd0b7d3aebdf8eab0a36740b8d33e0b28fd238f2b94341cb03690bb139.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:15.914 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vbmcHjZWI_U --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/17/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/35/2c/352cc4dd0b7d3aebdf8eab0a36740b8d33e0b28fd238f2b94341cb03690bb139.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:15.915 [debug] QUERY OK db=0.2ms idle=615.2ms begin [] 14:04:15.916 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:04:13Z], "/downloads/The Standup/2026-01-22 Scam Altman's Crypto Currency | The standup/Scam Altman's Crypto Currency | The standup [vbmcHjZWI_U].mp4", ~U[2026-07-24 12:04:15Z], 17] 14:04:15.916 [debug] QUERY OK source="media_metadata" db=0.5ms 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/17/metadata.json.gz", "/config/metadata/media_items/17/thumbnail.jpg", 17, ~U[2026-07-24 12:04:15Z], ~U[2026-07-24 12:04:15Z]] 14:04:15.917 [debug] QUERY OK db=0.3ms commit [] 14:04:15.918 [debug] QUERY OK source="media_items" db=0.7ms idle=617.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [327311154, ~U[2026-07-24 12:04:15Z], 17] 14:04:15.918 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:04:15.918 [info] {"args":{"id":17},"id":21,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":28254792,"event":"job:stop","queue_time":299662804,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:15.925 [info] {"args":{"id":19},"id":23,"meta":{},"system_time":1784894655925460382,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:15.926 [debug] QUERY OK source="media_items" db=0.3ms idle=88.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [19] 14:04:15.926 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:04:15.926 [debug] QUERY OK source="sources" db=0.1ms idle=9.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:04:15.926 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:04:15.927 [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 [19] 14:04:15.928 [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" = ?) [19] 14:04:15.928 [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] 14:04:15.929 [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 [] 14:04:15.929 [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 [] 14:04:15.929 [debug] Running yt-dlp command for action: get_downloadable_status 14:04:15.930 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:15.931 [debug] QUERY OK source="settings" db=0.3ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:15.931 [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 [] 14:04:15.931 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vFcgXdm-0yY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/7d/f97ddca9831f0111cefcd9cf0131fd07b9bc84e1c4d1147e2d6084a127cd6e65.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:18.711 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vFcgXdm-0yY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/7d/f97ddca9831f0111cefcd9cf0131fd07b9bc84e1c4d1147e2d6084a127cd6e65.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:18.711 [debug] Running yt-dlp command for action: download 14:04:18.712 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1412.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:18.713 [debug] QUERY OK source="settings" db=0.4ms idle=1412.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:18.713 [debug] QUERY OK source="settings" db=0.2ms idle=1413.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:18.713 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vFcgXdm-0yY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fe/65/fe6585f84db8cc038ff5e614bf5500c2d09d5c36c5dba3e089f5e3a76bc15064.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:22.534 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:52.535 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:53.508 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gstn9qcNdlc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6a/32/6a327607819eacf3f842003feb054be29b28ed61802f4bf7361a152f8ff76b00.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:53.531 [debug] Running yt-dlp command for action: download_thumbnail 14:04:53.533 [debug] QUERY OK source="settings" db=0.7ms idle=1232.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:53.534 [debug] QUERY OK source="settings" db=0.5ms idle=1233.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:53.534 [debug] QUERY OK source="settings" db=0.4ms idle=1234.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:53.535 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gstn9qcNdlc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/18/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c3/bd/c3bd362b2404512e7bddbce96a25b4d8c703c71eccdec623686981c766a19002.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:56.708 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gstn9qcNdlc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/18/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c3/bd/c3bd362b2404512e7bddbce96a25b4d8c703c71eccdec623686981c766a19002.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:56.708 [debug] QUERY OK db=0.2ms idle=1408.6ms begin [] 14:04:56.709 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:04:53Z], "/downloads/The Standup/2026-01-16 Casey Breaks Down AWS Outage | The Standup/Casey Breaks Down AWS Outage | The Standup [gstn9qcNdlc].mp4", ~U[2026-07-24 12:04:56Z], 18] 14:04:56.710 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/18/metadata.json.gz", "/config/metadata/media_items/18/thumbnail.jpg", 18, ~U[2026-07-24 12:04:56Z], ~U[2026-07-24 12:04:56Z]] 14:04:56.710 [debug] QUERY OK db=0.2ms commit [] 14:04:56.711 [debug] QUERY OK source="media_items" db=0.4ms idle=1410.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [475324391, ~U[2026-07-24 12:04:56Z], 18] 14:04:56.711 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:04:56.712 [info] {"args":{"id":18},"id":22,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":49340234,"event":"job:stop","queue_time":317370711,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:56.718 [info] {"args":{"id":20},"id":24,"meta":{},"system_time":1784894696718686415,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:04:56.719 [debug] QUERY OK source="media_items" db=0.3ms idle=419.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [20] 14:04:56.719 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:04:56.720 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:04:56.720 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:04:56.720 [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 [20] 14:04:56.721 [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" = ?) [20] 14:04:56.721 [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] 14:04:56.722 [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 [] 14:04:56.722 [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 [] 14:04:56.723 [debug] Running yt-dlp command for action: get_downloadable_status 14:04:56.723 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:56.724 [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 [] 14:04:56.724 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:56.724 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5Hs4Ikwphe0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/e5/7ae5085ecd436482ee4869b93fc29989812fde93d98e2382f08e341ef242bd9a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:04:59.048 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5Hs4Ikwphe0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/e5/7ae5085ecd436482ee4869b93fc29989812fde93d98e2382f08e341ef242bd9a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:04:59.049 [debug] Running yt-dlp command for action: download 14:04:59.049 [debug] QUERY OK source="settings" db=0.3ms idle=749.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:59.050 [debug] QUERY OK source="settings" db=0.2ms idle=749.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:59.050 [debug] QUERY OK source="settings" db=0.1ms idle=750.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:04:59.050 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5Hs4Ikwphe0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/20/67/2067429bb9d8828297a52347895fded684bd852a94f5d9779d26ef6e668558aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:05:00.518 [info] {"source":"oban","duration":227,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:05:21.465 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vFcgXdm-0yY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fe/65/fe6585f84db8cc038ff5e614bf5500c2d09d5c36c5dba3e089f5e3a76bc15064.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:05:21.489 [debug] Running yt-dlp command for action: download_thumbnail 14:05:21.490 [debug] QUERY OK source="settings" db=0.1ms idle=1190.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:21.491 [debug] QUERY OK source="settings" db=0.1ms idle=1191.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:21.491 [debug] QUERY OK source="settings" db=0.1ms idle=1191.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:21.491 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vFcgXdm-0yY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/19/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a0/63/a063135d722d305df281145f9b37384854ca5b985d3a5393f79c76bb29874e2a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:05:22.537 [info] {"source":"oban","duration":542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:24.433 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vFcgXdm-0yY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/19/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a0/63/a063135d722d305df281145f9b37384854ca5b985d3a5393f79c76bb29874e2a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:05:24.433 [debug] QUERY OK db=0.1ms idle=1133.5ms begin [] 14:05:24.434 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:05:21Z], "/downloads/The Standup/2026-01-08 Spiciest 2026 Predictions | The Standup/Spiciest 2026 Predictions | The Standup [vFcgXdm-0yY].mp4", ~U[2026-07-24 12:05:24Z], 19] 14:05:24.435 [debug] QUERY OK source="media_metadata" db=0.7ms 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/19/metadata.json.gz", "/config/metadata/media_items/19/thumbnail.jpg", 19, ~U[2026-07-24 12:05:24Z], ~U[2026-07-24 12:05:24Z]] 14:05:24.435 [debug] QUERY OK db=0.3ms commit [] 14:05:24.437 [debug] QUERY OK source="media_items" db=0.8ms idle=1136.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [438562562, ~U[2026-07-24 12:05:24Z], 19] 14:05:24.437 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:05:24.437 [info] {"args":{"id":19},"id":23,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":68512011,"event":"job:stop","queue_time":323924780,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:05:24.444 [info] {"args":{"id":21},"id":25,"meta":{},"system_time":1784894724444475912,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:05:24.445 [debug] QUERY OK source="media_items" db=0.2ms idle=144.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21] 14:05:24.445 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:05:24.445 [debug] QUERY OK source="sources" db=0.2ms idle=9.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:05:24.446 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:05:24.446 [debug] QUERY OK source="media_items" db=0.4ms 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 [21] 14:05:24.448 [debug] QUERY OK source="media_metadata" db=0.3ms 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" = ?) [21] 14:05:24.448 [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] 14:05:24.448 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:24.449 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:24.450 [debug] Running yt-dlp command for action: get_downloadable_status 14:05:24.451 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:24.451 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:24.452 [debug] QUERY OK source="settings" db=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:24.452 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vHfdUqLmPNU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1a/9e/1a9e17cab873f7dd0ed8b9c3efb7bbbfcc58f4560e60a6e3e40224082cf4f655.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:05:27.772 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vHfdUqLmPNU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1a/9e/1a9e17cab873f7dd0ed8b9c3efb7bbbfcc58f4560e60a6e3e40224082cf4f655.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:05:27.773 [debug] Running yt-dlp command for action: download 14:05:27.774 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=1474.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:27.775 [debug] QUERY OK source="settings" db=0.2ms idle=1474.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:27.775 [debug] QUERY OK source="settings" db=0.5ms idle=1475.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:27.776 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vHfdUqLmPNU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/7f/1b/7f1b07496e3562a973c0ef1ac27b7a5ca3c14f389cf50fecd0d2895bef00edfa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:05:36.169 [info] GET / 14:05:36.169 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:05:36.170 [debug] QUERY OK source="settings" db=0.1ms idle=1210.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:36.170 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=870.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:05:36.170 [debug] QUERY OK source="sources" db=0.1ms idle=870.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:05:36.171 [debug] QUERY OK source="media_items" db=0.1ms idle=871.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:05:36.171 [debug] QUERY OK source="media_items" db=0.0ms queue=0.1ms idle=210.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:05:36.171 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:36.172 [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 [] 14:05:36.172 [debug] QUERY OK source="settings" db=0.4ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:36.173 [debug] QUERY OK source="tasks" db=0.2ms idle=1.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", 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:05:36.174 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [20, 21] 14:05:36.175 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:05:36.176 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=3.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:05:36.176 [debug] QUERY OK source="sources" db=0.2ms idle=3.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:05:36.179 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=5.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:05:36.180 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=5.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:05:36.180 [debug] QUERY OK source="sources" db=0.2ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:05:36.182 [info] Sent 200 in 12ms 14:05:36.327 [info] CONNECTED TO Phoenix.LiveView.Socket in 29µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "CAcsLkwSA3UeKCYEKyURNic_d0NnNiM2DvjJyMI3lGV4QLcNEp11_ALY", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:36.603 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "CAcsLkwSA3UeKCYEKyURNic_d0NnNiM2DvjJyMI3lGV4QLcNEp11_ALY", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:36.998 [info] CONNECTED TO Phoenix.LiveView.Socket in 36µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "CAcsLkwSA3UeKCYEKyURNic_d0NnNiM2DvjJyMI3lGV4QLcNEp11_ALY", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:37.762 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "CAcsLkwSA3UeKCYEKyURNic_d0NnNiM2DvjJyMI3lGV4QLcNEp11_ALY", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:37.983 [info] GET /sources 14:05:37.983 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:05:37.984 [debug] QUERY OK source="settings" db=0.5ms idle=684.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:37.985 [debug] QUERY OK source="settings" db=0.2ms idle=685.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:37.985 [debug] QUERY OK source="settings" db=0.1ms idle=685.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:37.986 [debug] QUERY OK source="settings" db=0.0ms idle=686.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:37.986 [debug] QUERY OK source="settings" db=0.0ms idle=22.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:37.987 [debug] QUERY OK source="sources" db=0.4ms idle=2.3ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 14:05:37.988 [debug] QUERY OK source="sources" db=0.8ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", 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] 14:05:37.990 [info] Sent 200 in 6ms 14:05:38.602 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Fj8CMGFqB3UqChFyLSABMTN7KEByIQ0KZNDTT5M3XeaBWIsIQ4n2JVbe", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:39.617 [info] GET /sources/1 14:05:39.617 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:05:39.617 [debug] QUERY OK source="sources" db=0.1ms idle=651.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:05:39.617 [debug] QUERY OK source="media_profiles" db=0.1ms idle=317.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:05:39.618 [debug] QUERY OK source="tasks" db=0.1ms idle=318.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 (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 14:05:39.618 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=318.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" = ?) [66] 14:05:39.618 [debug] QUERY OK source="settings" db=0.1ms idle=318.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:05:39.619 [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 [] 14:05:39.619 [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 [] 14:05:39.620 [debug] QUERY OK source="sources" db=0.1ms idle=2.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:05:39.621 [debug] QUERY OK source="media_items" db=0.2ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:05:39.621 [debug] QUERY OK source="media_items" db=0.3ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:05:39.622 [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" = ?) [1] 14:05:39.623 [debug] QUERY OK source="media_items" db=0.4ms idle=3.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 14:05:39.624 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms 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 ? [1, 10, 0] 14:05:39.625 [debug] QUERY OK source="sources" db=0.1ms idle=4.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:05:39.626 [debug] QUERY OK source="media_items" db=0.2ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 14:05:39.627 [debug] QUERY OK source="media_items" db=0.5ms 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 ? [1, 10, 0] 14:05:39.627 [info] Sent 200 in 10ms 14:05:39.802 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:41.618 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:44.387 [info] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:45.105 [info] GET /sources/6d6132e3-0434-4a17-9843-fab099fbe97d/feed.xml 14:05:45.105 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "6d6132e3-0434-4a17-9843-fab099fbe97d"} Pipelines: [:maybe_basic_auth] 14:05:45.106 [debug] QUERY OK source="sources" db=0.2ms idle=1805.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["6d6132e3-0434-4a17-9843-fab099fbe97d"] 14:05:45.107 [debug] QUERY OK source="media_items" db=0.7ms queue=0.2ms idle=1806.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [1, 2000] 14:05:45.109 [debug] QUERY OK source="source_metadata" db=0.1ms idle=1809.0ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [1] 14:05:45.109 [debug] QUERY OK source="media_metadata" db=0.1ms idle=1134.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" = ?) [1] 14:05:45.109 [info] Sent 200 in 4ms 14:05:48.636 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:05:48.836 [info] GET /sources/6d6132e3-0434-4a17-9843-fab099fbe97d/feed_image.jpg 14:05:48.836 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.feed_image/2 Parameters: %{"uuid" => "6d6132e3-0434-4a17-9843-fab099fbe97d"} Pipelines: [:maybe_basic_auth] 14:05:48.838 [debug] QUERY OK source="sources" db=0.9ms idle=857.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["6d6132e3-0434-4a17-9843-fab099fbe97d"] 14:05:48.839 [debug] QUERY OK source="media_items" db=0.3ms queue=0.5ms idle=538.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) LIMIT ? [1, 1] 14:05:48.841 [debug] QUERY OK source="source_metadata" db=1.5ms idle=539.7ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [1] 14:05:48.842 [debug] QUERY OK source="media_metadata" db=0.3ms queue=0.2ms idle=541.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" = ?) [1] 14:05:48.842 [info] Sent 200 in 5ms 14:05:52.538 [info] {"source":"oban","duration":557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:54.723 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:06:00.519 [info] {"source":"oban","duration":214,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:06:04.028 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:06:12.944 [info] GET / 14:06:12.945 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:06:12.945 [debug] QUERY OK source="settings" db=0.4ms idle=936.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:12.946 [debug] QUERY OK source="media_profiles" db=0.2ms idle=646.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:06:12.946 [debug] QUERY OK source="sources" db=0.2ms idle=646.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:06:12.947 [debug] QUERY OK source="media_items" db=0.4ms idle=646.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:12.947 [debug] QUERY OK source="media_items" db=0.2ms idle=647.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:12.948 [debug] QUERY OK source="settings" db=0.1ms queue=0.4ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:12.949 [debug] QUERY OK source="settings" db=0.6ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:12.950 [debug] QUERY OK source="settings" db=0.1ms queue=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:12.951 [debug] QUERY OK source="tasks" db=0.6ms 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:06:12.952 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [20, 21] 14:06:12.953 [debug] QUERY OK source="media_items" db=0.5ms idle=4.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:12.954 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=4.7ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:06:12.954 [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" = ?) [1] 14:06:12.957 [debug] QUERY OK source="media_items" db=0.3ms idle=5.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:06:12.958 [debug] QUERY OK source="media_items" db=0.7ms 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] 14:06:12.958 [debug] QUERY OK source="sources" db=0.1ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:12.960 [info] Sent 200 in 15ms 14:06:17.141 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:06:21.144 [info] HEAD /media/00f5a2e5-0a5b-4e47-8531-2be60054e052/stream.mp4 14:06:21.144 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "00f5a2e5-0a5b-4e47-8531-2be60054e052"} Pipelines: [:maybe_basic_auth] 14:06:21.145 [debug] QUERY OK source="media_items" db=0.1ms queue=0.2ms idle=844.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" = ?) ["00f5a2e5-0a5b-4e47-8531-2be60054e052"] 14:06:21.145 [debug] Invalid range request for media item: 00f5a2e5-0a5b-4e47-8531-2be60054e052 - serving full file 14:06:21.145 [info] Sent 200 in 1ms 14:06:21.146 [info] GET /media/00f5a2e5-0a5b-4e47-8531-2be60054e052/stream.mp4 14:06:21.146 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "00f5a2e5-0a5b-4e47-8531-2be60054e052"} Pipelines: [:maybe_basic_auth] 14:06:21.147 [debug] QUERY OK source="media_items" db=0.1ms idle=847.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["00f5a2e5-0a5b-4e47-8531-2be60054e052"] 14:06:21.147 [debug] Streaming media item: 00f5a2e5-0a5b-4e47-8531-2be60054e052 from 0 to 235134136 14:06:21.147 [info] Sent 206 in 851µs 14:06:21.200 [info] HEAD /media/00f5a2e5-0a5b-4e47-8531-2be60054e052/stream.mp4 14:06:21.200 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "00f5a2e5-0a5b-4e47-8531-2be60054e052"} Pipelines: [:maybe_basic_auth] 14:06:21.201 [debug] QUERY OK source="media_items" db=0.3ms idle=900.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["00f5a2e5-0a5b-4e47-8531-2be60054e052"] 14:06:21.201 [debug] Invalid range request for media item: 00f5a2e5-0a5b-4e47-8531-2be60054e052 - serving full file 14:06:21.201 [info] Sent 200 in 1ms 14:06:21.717 [info] GET /media/00f5a2e5-0a5b-4e47-8531-2be60054e052/stream.mp4 14:06:21.717 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "00f5a2e5-0a5b-4e47-8531-2be60054e052"} Pipelines: [:maybe_basic_auth] 14:06:21.718 [debug] QUERY OK source="media_items" db=0.3ms idle=1418.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["00f5a2e5-0a5b-4e47-8531-2be60054e052"] 14:06:21.719 [debug] Invalid range request for media item: 00f5a2e5-0a5b-4e47-8531-2be60054e052 - serving full file 14:06:21.719 [info] Sent 200 in 1ms 14:06:22.545 [info] {"source":"oban","duration":4727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:23.902 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5Hs4Ikwphe0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/20/67/2067429bb9d8828297a52347895fded684bd852a94f5d9779d26ef6e668558aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:06:23.927 [debug] Running yt-dlp command for action: download_thumbnail 14:06:23.928 [debug] QUERY OK source="settings" db=0.1ms idle=1517.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:23.928 [debug] QUERY OK source="settings" db=0.2ms idle=1517.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:23.929 [debug] QUERY OK source="settings" db=0.3ms idle=1517.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:23.929 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5Hs4Ikwphe0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/20/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/45/0e/450ea37ba251b894be03b2f410edfeb3490f96d94bb7037339f3cf1146902eb6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:06:26.756 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5Hs4Ikwphe0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/20/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/45/0e/450ea37ba251b894be03b2f410edfeb3490f96d94bb7037339f3cf1146902eb6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:06:26.756 [debug] QUERY OK db=0.1ms idle=1345.4ms begin [] 14:06:26.757 [debug] QUERY OK source="media_items" db=1.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:06:23Z], "/downloads/The Standup/2025-12-31 We gave $50,000 to OSS! Merry Christmas | The Standup/We gave $50,000 to OSS! Merry Christmas | The Standup [5Hs4Ikwphe0].mp4", ~U[2026-07-24 12:06:26Z], 20] 14:06:26.758 [debug] QUERY OK source="media_metadata" db=0.7ms 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/20/metadata.json.gz", "/config/metadata/media_items/20/thumbnail.jpg", 20, ~U[2026-07-24 12:06:26Z], ~U[2026-07-24 12:06:26Z]] 14:06:26.758 [debug] QUERY OK db=0.1ms commit [] 14:06:26.760 [debug] QUERY OK source="media_items" db=1.5ms idle=1348.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [443866521, ~U[2026-07-24 12:06:26Z], 20] 14:06:26.760 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:06:26.761 [info] {"args":{"id":20},"id":24,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":90042302,"event":"job:stop","queue_time":363717854,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:06:26.767 [info] {"args":{"id":22},"id":26,"meta":{},"system_time":1784894786767536732,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:06:26.768 [debug] QUERY OK source="media_items" db=0.5ms queue=0.2ms idle=357.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [22] 14:06:26.769 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:06:26.769 [debug] QUERY OK source="sources" db=0.2ms idle=10.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:26.769 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:06:26.770 [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 [22] 14:06:26.771 [debug] QUERY OK source="media_metadata" db=0.1ms queue=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" = ?) [22] 14:06:26.772 [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] 14:06:26.772 [debug] QUERY OK source="settings" db=0.4ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:26.773 [debug] QUERY OK source="settings" db=0.5ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:26.774 [debug] Running yt-dlp command for action: get_downloadable_status 14:06:26.775 [debug] QUERY OK source="settings" db=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:26.775 [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:06:26.775 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:26.775 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kZGyz9jCUj0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/11/b9/11b9ef1380572fe8a6e6d4b75a8c2b90eb0a71a9e08da023bb23d7e5ff36e2cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:06:31.320 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kZGyz9jCUj0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/11/b9/11b9ef1380572fe8a6e6d4b75a8c2b90eb0a71a9e08da023bb23d7e5ff36e2cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:06:31.320 [debug] Running yt-dlp command for action: download 14:06:31.321 [debug] QUERY OK source="settings" db=0.5ms idle=909.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:31.321 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=910.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:31.322 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=910.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:31.322 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kZGyz9jCUj0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/70/63/7063e85a4703e0cf1358ce46b0eeab12ece5a14606495020f224c3640205b0f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:06:36.956 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:06:45.025 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vHfdUqLmPNU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/7f/1b/7f1b07496e3562a973c0ef1ac27b7a5ca3c14f389cf50fecd0d2895bef00edfa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:06:45.047 [debug] Running yt-dlp command for action: download_thumbnail 14:06:45.047 [debug] QUERY OK source="settings" db=0.1ms idle=939.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:45.048 [debug] QUERY OK source="settings" db=0.1ms idle=637.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:45.048 [debug] QUERY OK source="settings" db=0.0ms idle=637.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:45.048 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vHfdUqLmPNU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/21/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/03/7e/037e63be7965c5c1f896d3ea95bf1ed62bbe6daf70325a7aca807ec486c7b384.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:06:48.625 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=vHfdUqLmPNU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/21/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/03/7e/037e63be7965c5c1f896d3ea95bf1ed62bbe6daf70325a7aca807ec486c7b384.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:06:48.626 [debug] QUERY OK db=0.0ms idle=501.9ms begin [] 14:06:48.626 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:06:45Z], "/downloads/The Standup/2025-12-20 Legendary Game Dev Jonathan Blow | The Standup/Legendary Game Dev Jonathan Blow | The Standup [vHfdUqLmPNU].mp4", ~U[2026-07-24 12:06:48Z], 21] 14:06:48.627 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/21/metadata.json.gz", "/config/metadata/media_items/21/thumbnail.jpg", 21, ~U[2026-07-24 12:06:48Z], ~U[2026-07-24 12:06:48Z]] 14:06:48.627 [debug] QUERY OK db=0.2ms commit [] 14:06:48.628 [debug] QUERY OK source="media_items" db=0.6ms idle=217.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [528000927, ~U[2026-07-24 12:06:48Z], 21] 14:06:48.628 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:06:48.629 [info] {"args":{"id":21},"id":25,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":84184528,"event":"job:stop","queue_time":389443851,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:06:48.635 [info] {"args":{"id":23},"id":27,"meta":{},"system_time":1784894808635529325,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:06:48.636 [debug] QUERY OK source="media_items" db=0.3ms 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" = ?) [23] 14:06:48.636 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:06:48.636 [debug] QUERY OK source="sources" db=0.2ms idle=8.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:48.637 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.2ms 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] 14:06:48.638 [debug] QUERY OK source="media_items" db=0.4ms 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 [23] 14:06:48.639 [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" = ?) [23] 14:06:48.640 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:06:48.640 [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 [] 14:06:48.640 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:48.641 [debug] Running yt-dlp command for action: get_downloadable_status 14:06:48.641 [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:06:48.642 [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 [] 14:06:48.642 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:48.642 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=r3bPmtEP9SQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8a/76/8a76d2a4785be4a409c3c7b515d2bf9081e713a5cfa7a9571cf71aa5beede97e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:06:51.594 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=r3bPmtEP9SQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8a/76/8a76d2a4785be4a409c3c7b515d2bf9081e713a5cfa7a9571cf71aa5beede97e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:06:51.595 [debug] Running yt-dlp command for action: download 14:06:51.595 [debug] QUERY OK source="settings" db=0.5ms idle=1184.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:51.596 [debug] QUERY OK source="settings" db=0.6ms idle=1184.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:51.597 [debug] QUERY OK source="settings" db=0.2ms idle=1185.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:51.597 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=r3bPmtEP9SQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/98/95/9895fa2760f400c89109d5416300dd92f5f91eae12b5c5e3efdcb5d6d12c7ebc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:06:52.546 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:52.807 [info] GET / 14:06:52.807 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:06:52.808 [debug] QUERY OK source="settings" db=0.7ms idle=1210.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:52.808 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1211.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:06:52.808 [debug] QUERY OK source="sources" db=0.1ms idle=673.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:06:52.809 [debug] QUERY OK source="media_items" db=0.2ms idle=398.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:52.809 [debug] QUERY OK source="media_items" db=0.1ms idle=263.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:52.810 [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 [] 14:06:52.810 [debug] QUERY OK source="settings" db=0.0ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:52.810 [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 [] 14:06:52.812 [debug] QUERY OK source="tasks" db=0.6ms idle=1.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"] 14:06:52.812 [debug] QUERY OK source="media_items" db=0.1ms idle=2.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:06:52.813 [debug] QUERY OK source="media_items" db=0.1ms idle=3.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:52.813 [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:06:52.814 [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" = ?) [1] 14:06:52.816 [debug] QUERY OK source="media_items" db=0.2ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:06:52.817 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:06:52.817 [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" = ?) [1] 14:06:52.819 [info] Sent 200 in 12ms 14:06:53.286 [info] GET / 14:06:53.286 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:06:53.287 [debug] QUERY OK source="settings" db=0.3ms idle=472.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:53.287 [debug] QUERY OK source="media_profiles" db=0.0ms idle=470.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:06:53.287 [debug] QUERY OK source="sources" db=0.0ms idle=470.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:06:53.288 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=470.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:53.288 [debug] QUERY OK source="media_items" db=0.1ms idle=150.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:53.288 [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 [] 14:06:53.288 [debug] QUERY OK source="settings" db=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:53.289 [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 [] 14:06:53.290 [debug] QUERY OK source="tasks" db=0.2ms 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"] 14:06:53.290 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:06:53.291 [debug] QUERY OK source="media_items" db=0.2ms idle=2.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:53.292 [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] 14:06:53.292 [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" = ?) [1] 14:06:53.294 [debug] QUERY OK source="media_items" db=0.2ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:06:53.295 [debug] QUERY OK source="media_items" db=0.7ms 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:06:53.296 [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" = ?) [1] 14:06:53.297 [info] Sent 200 in 11ms 14:06:53.488 [info] GET / 14:06:53.488 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:06:53.489 [debug] QUERY OK source="settings" db=0.2ms idle=196.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:53.489 [debug] QUERY OK source="media_profiles" db=0.2ms idle=196.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:06:53.490 [debug] QUERY OK source="sources" db=0.3ms idle=194.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:06:53.490 [debug] QUERY OK source="media_items" db=0.2ms idle=194.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:53.490 [debug] QUERY OK source="media_items" db=0.0ms idle=194.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:53.491 [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 [] 14:06:53.491 [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 [] 14:06:53.492 [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 [] 14:06:53.492 [debug] QUERY OK source="tasks" db=0.2ms idle=2.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:06:53.493 [debug] QUERY OK source="media_items" db=0.2ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:06:53.494 [debug] QUERY OK source="media_items" db=0.1ms 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)) [] 14:06:53.494 [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:06:53.495 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:53.498 [debug] QUERY OK source="media_items" db=0.3ms 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"))) [] 14:06:53.498 [debug] QUERY OK source="media_items" db=0.6ms 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:06:53.499 [debug] QUERY OK source="sources" db=0.1ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:53.501 [info] Sent 200 in 12ms 14:06:54.409 [info] GET / 14:06:54.409 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:06:54.410 [debug] QUERY OK source="settings" db=1.2ms idle=914.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:54.411 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.4ms idle=912.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:06:54.412 [debug] QUERY OK source="sources" db=0.6ms idle=912.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:06:54.413 [debug] QUERY OK source="media_items" db=0.8ms idle=913.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:54.414 [debug] QUERY OK source="media_items" db=0.7ms idle=274.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:54.415 [debug] QUERY OK source="settings" db=0.5ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:54.416 [debug] QUERY OK source="settings" db=1.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:06:54.417 [debug] QUERY OK source="settings" db=1.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:06:54.419 [debug] QUERY OK source="tasks" db=0.3ms idle=5.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:06:54.420 [debug] QUERY OK source="media_items" db=0.5ms idle=5.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:06:54.421 [debug] QUERY OK source="media_items" db=0.7ms idle=5.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:54.422 [debug] QUERY OK source="media_items" db=0.6ms idle=5.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:06:54.423 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:54.425 [debug] QUERY OK source="media_items" db=0.5ms idle=5.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:06:54.427 [debug] QUERY OK source="media_items" db=2.0ms idle=5.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:06:54.429 [debug] QUERY OK source="sources" db=0.9ms idle=6.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:54.431 [info] Sent 200 in 22ms 14:06:54.486 [info] GET /console/ 14:06:54.487 [debug] QUERY OK source="settings" db=0.7ms idle=64.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:54.488 [debug] QUERY OK source="settings" db=0.6ms idle=64.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:54.488 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:54.489 [error] #PID<0.2799.0> running PinchflatWeb.Endpoint (connection #PID<0.2798.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /console/ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2798.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56548}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2799.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YILmOqJrj6wAAAoC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2798.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56548}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2798.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56548}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2799.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YILmOqJrj6wAAAoC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/li (truncated) 14:06:55.475 [info] GET /server 14:06:55.475 [debug] QUERY OK source="settings" db=0.2ms idle=1047.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:55.476 [debug] QUERY OK source="settings" db=0.1ms idle=1046.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:55.476 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:55.476 [error] #PID<0.2803.0> running PinchflatWeb.Endpoint (connection #PID<0.2802.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2802.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56558}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2803.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YL3X1M_29qYAAApC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2802.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56558}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2802.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56558}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2803.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YL3X1M_29qYAAApC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router (truncated) 14:06:55.489 [info] GET /console/ 14:06:55.489 [debug] QUERY OK source="settings" db=0.2ms idle=1002.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:55.489 [debug] QUERY OK source="settings" db=0.1ms idle=1001.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:55.490 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:55.490 [error] #PID<0.2805.0> running PinchflatWeb.Endpoint (connection #PID<0.2804.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /console/ ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2804.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56568}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2805.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YL6rfsWOvN0AAApi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2804.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56568}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /console (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2804.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/console/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56568}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2805.0>, params: %{}, path_info: ["console"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/console/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YL6rfsWOvN0AAApi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 14:06:56.458 [info] GET /server 14:06:56.458 [debug] QUERY OK source="settings" db=0.2ms idle=982.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:56.459 [debug] QUERY OK source="settings" db=0.4ms idle=982.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:56.459 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:56.459 [error] #PID<0.2807.0> running PinchflatWeb.Endpoint (connection #PID<0.2806.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2806.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56578}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2807.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YPhrJFGt5XkAAAqC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2806.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56578}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2806.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56578}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2807.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YPhrJFGt5XkAAAqC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c (truncated) 14:06:56.473 [info] GET /server-status 14:06:56.474 [debug] QUERY OK source="settings" db=0.3ms idle=984.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:56.474 [debug] QUERY OK source="settings" db=0.3ms idle=984.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:56.474 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:56.475 [error] #PID<0.2809.0> running PinchflatWeb.Endpoint (connection #PID<0.2808.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2808.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56582}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2809.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YPlYirAntoYAAAqi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2808.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56582}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server-status (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2808.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56582}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2809.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YPlYirAntoYAAAqi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWe (truncated) 14:06:57.409 [info] GET /server-status 14:06:57.410 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=951.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:57.410 [debug] QUERY OK source="settings" db=0.4ms idle=951.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:57.410 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:57.411 [error] #PID<0.2811.0> running PinchflatWeb.Endpoint (connection #PID<0.2810.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2810.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56588}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2811.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YTEhePvuTxIAAArC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2810.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56588}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server-status (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2810.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56588}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2811.0>, params: %{}, path_info: ["server-status"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YTEhePvuTxIAAArC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, (truncated) 14:06:57.474 [info] GET /about 14:06:57.475 [debug] QUERY OK source="settings" db=0.5ms 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 [] 14:06:57.476 [debug] QUERY OK source="settings" db=0.4ms idle=1001.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:57.476 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:57.476 [error] #PID<0.2813.0> running PinchflatWeb.Endpoint (connection #PID<0.2812.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2812.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56594}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2813.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YTUFzQuqgyQAAAri"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2812.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56594}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /about (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2812.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56594}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2813.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YTUFzQuqgyQAAAri"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line (truncated) 14:06:58.496 [info] GET /login.action 14:06:58.496 [debug] QUERY OK source="settings" db=0.2ms idle=1021.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:58.497 [debug] QUERY OK source="settings" db=0.2ms idle=1020.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:58.497 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:58.498 [error] #PID<0.2815.0> running PinchflatWeb.Endpoint (connection #PID<0.2814.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2814.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56596}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2815.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YXHrAHssk8EAAAsC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2814.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56596}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2814.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56596}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2815.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YXHrAHssk8EAAAsC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c (truncated) 14:06:58.713 [info] GET /about 14:06:58.714 [debug] QUERY OK source="settings" db=0.1ms idle=569.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:58.714 [debug] QUERY OK source="settings" db=0.1ms idle=303.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:58.714 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:58.714 [error] #PID<0.2817.0> running PinchflatWeb.Endpoint (connection #PID<0.2816.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2816.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56606}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2817.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YX7fiijUv1oAAAsi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2816.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56606}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /about (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2816.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56606}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2817.0>, params: %{}, path_info: ["about"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YX7fiijUv1oAAAsi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoe (truncated) 14:06:59.430 [info] GET /login.action 14:06:59.430 [debug] QUERY OK source="settings" db=0.2ms idle=933.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.430 [debug] QUERY OK source="settings" db=0.1ms idle=933.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.431 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:59.431 [error] #PID<0.2819.0> running PinchflatWeb.Endpoint (connection #PID<0.2818.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2818.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56610}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2819.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YamOk_gANUYAAAtC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2818.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56610}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2818.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56610}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2819.0>, params: %{}, path_info: ["login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YamOk_gANUYAAAtC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Rout (truncated) 14:06:59.490 [info] GET / 14:06:59.490 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:06:59.490 [debug] QUERY OK source="settings" db=0.1ms idle=776.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.491 [debug] QUERY OK source="media_profiles" db=0.2ms idle=776.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:06:59.491 [debug] QUERY OK source="sources" db=0.1ms idle=345.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:06:59.491 [debug] QUERY OK source="media_items" db=0.0ms idle=60.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:59.492 [debug] QUERY OK source="media_items" db=0.2ms idle=60.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:06:59.492 [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 [] 14:06:59.492 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.493 [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 [] 14:06:59.494 [debug] QUERY OK source="tasks" db=0.2ms idle=2.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:06:59.494 [debug] QUERY OK source="media_items" db=0.1ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:06:59.495 [debug] QUERY OK source="media_items" db=0.0ms 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)) [] 14:06:59.495 [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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:06:59.496 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:06:59.498 [debug] QUERY OK source="media_items" db=0.3ms 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"))) [] 14:06:59.499 [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:06:59.499 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [1] 14:06:59.502 [info] Sent 200 in 11ms 14:06:59.546 [info] GET /___proxy_subdomain_whm/login 14:06:59.546 [debug] QUERY OK source="settings" db=0.1ms idle=50.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.547 [debug] QUERY OK source="settings" db=0.2ms idle=50.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.547 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:59.547 [error] #PID<0.2823.0> running PinchflatWeb.Endpoint (connection #PID<0.2822.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /___proxy_subdomain_whm/login ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2822.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56632}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2823.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YbB7JkKIZVIAAAxi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2822.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56632}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2822.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56632}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2823.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YbB7JkKIZVIAAAxi"} ], scheme: :http, script_name: [], secret_key_base: :..., (truncated) 14:06:59.579 [info] GET /___proxy_subdomain_cpanel 14:06:59.580 [debug] QUERY OK source="settings" db=0.2ms idle=81.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.580 [debug] QUERY OK source="settings" db=0.1ms idle=81.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:06:59.580 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:06:59.581 [error] #PID<0.2825.0> running PinchflatWeb.Endpoint (connection #PID<0.2824.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /___proxy_subdomain_cpanel ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2824.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56636}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2825.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YbJ9lKpO45gAAAyC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2824.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56636}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2824.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56636}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2825.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YbJ9lKpO45gAAAyC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, st (truncated) 14:07:00.520 [info] {"source":"oban","duration":229,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:07:00.529 [info] GET /v2/_catalog 14:07:00.529 [info] Sent 404 in 131µs 14:07:00.529 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:00.948 [info] GET / 14:07:00.948 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:07:00.948 [debug] QUERY OK source="settings" db=0.1ms idle=1401.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:00.948 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1368.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:00.949 [debug] QUERY OK source="sources" db=0.0ms idle=1368.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:00.949 [debug] QUERY OK source="media_items" db=0.1ms idle=802.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:00.949 [debug] QUERY OK source="media_items" db=0.0ms idle=429.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:00.949 [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 [] 14:07:00.949 [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 [] 14:07:00.950 [debug] QUERY OK source="settings" db=0.3ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:00.951 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", 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:07:00.951 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:07:00.952 [debug] QUERY OK source="media_items" db=0.1ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:00.953 [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:07:00.953 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:00.956 [debug] QUERY OK source="media_items" db=0.3ms 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"))) [] 14:07:00.956 [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:07:00.957 [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" = ?) [1] 14:07:00.958 [info] Sent 200 in 10ms 14:07:01.439 [info] GET /___proxy_subdomain_whm/login 14:07:01.440 [debug] QUERY OK source="settings" db=0.3ms idle=486.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.440 [debug] QUERY OK source="settings" db=0.4ms idle=484.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.440 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:01.441 [error] #PID<0.2831.0> running PinchflatWeb.Endpoint (connection #PID<0.2830.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /___proxy_subdomain_whm/login ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2830.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56674}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2831.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YiFYgYk2ZXQAAA3C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2830.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56674}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_whm/login (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2830.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_whm/login", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56674}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2831.0>, params: %{}, path_info: ["___proxy_subdomain_whm", "login"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/___proxy_subdomain_whm/login", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YiFYgYk2ZXQAAA3C"} ], scheme: :http, script_name: [], (truncated) 14:07:01.641 [info] GET /.DS_Store 14:07:01.642 [debug] QUERY OK source="settings" db=0.4ms idle=685.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.643 [debug] QUERY OK source="settings" db=0.6ms idle=685.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.643 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:01.643 [error] #PID<0.2833.0> running PinchflatWeb.Endpoint (connection #PID<0.2832.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2832.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56684}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2833.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Yi1jbqV-nZ0AAA3i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2832.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56684}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2832.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56684}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2833.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Yi1jbqV-nZ0AAA3i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", (truncated) 14:07:01.663 [info] GET / 14:07:01.663 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:07:01.664 [debug] QUERY OK source="settings" db=0.4ms idle=516.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.665 [debug] QUERY OK source="media_profiles" db=0.3ms idle=224.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:01.665 [debug] QUERY OK source="sources" db=0.3ms idle=224.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:01.666 [debug] QUERY OK source="media_items" db=0.9ms idle=22.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:01.666 [debug] QUERY OK source="media_items" db=0.2ms idle=23.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:01.667 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.667 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.668 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:01.669 [debug] QUERY OK source="tasks" db=0.2ms idle=2.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:07:01.669 [debug] QUERY OK source="media_items" db=0.3ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:07:01.671 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 14:07:01.672 [debug] QUERY OK source="media_items" db=0.5ms 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] 14:07:01.672 [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" = ?) [1] 14:07:01.674 [debug] QUERY OK source="media_items" db=0.2ms idle=5.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:07:01.675 [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:07:01.676 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:01.678 [info] Sent 200 in 14ms 14:07:02.063 [info] GET /___proxy_subdomain_cpanel 14:07:02.064 [debug] QUERY OK source="settings" db=0.4ms idle=391.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:02.064 [debug] QUERY OK source="settings" db=0.1ms idle=391.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:02.064 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:02.064 [error] #PID<0.2837.0> running PinchflatWeb.Endpoint (connection #PID<0.2836.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /___proxy_subdomain_cpanel ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2836.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56712}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2837.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YkaEbxA-VOUAAA4i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2836.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56712}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /___proxy_subdomain_cpanel (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2836.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/___proxy_subdomain_cpanel", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56712}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2837.0>, params: %{}, path_info: ["___proxy_subdomain_cpanel"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/___proxy_subdomain_cpanel", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YkaEbxA-VOUAAA4i"} ], scheme: :http, script_name: [], secret_key_base: :..., (truncated) 14:07:02.485 [info] GET /.env 14:07:02.485 [debug] QUERY OK source="settings" db=0.4ms idle=810.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:02.486 [debug] QUERY OK source="settings" db=0.3ms idle=809.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:02.486 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:02.486 [error] #PID<0.2839.0> running PinchflatWeb.Endpoint (connection #PID<0.2838.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2838.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56724}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2839.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Yl-nwn-fdWUAAA5C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2838.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56724}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2838.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56724}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2839.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Yl-nwn-fdWUAAA5C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {Pinchfla (truncated) 14:07:03.136 [info] GET /v2/_catalog 14:07:03.137 [info] Sent 404 in 190µs 14:07:03.137 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:03.962 [info] GET / 14:07:03.962 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:07:03.962 [debug] QUERY OK source="settings" db=0.1ms idle=1476.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:03.963 [debug] QUERY OK source="media_profiles" db=0.6ms idle=1476.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:03.964 [debug] QUERY OK source="sources" db=0.3ms idle=813.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:03.964 [debug] QUERY OK source="media_items" db=0.3ms idle=553.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:03.965 [debug] QUERY OK source="media_items" db=0.2ms idle=553.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:03.965 [debug] QUERY OK source="settings" db=0.3ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:03.965 [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 [] 14:07:03.966 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:07:03.967 [debug] QUERY OK source="tasks" db=0.5ms idle=2.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:07:03.968 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [22, 23] 14:07:03.969 [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 (NOT (m0."media_filepath" IS NULL)) [] 14:07:03.970 [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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:07:03.970 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:03.973 [debug] QUERY OK source="media_items" db=0.3ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:07:03.973 [debug] QUERY OK source="media_items" db=0.6ms 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] 14:07:03.974 [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" = ?) [1] 14:07:03.976 [info] Sent 200 in 13ms 14:07:03.977 [info] GET /.DS_Store 14:07:03.978 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:03.978 [debug] QUERY OK source="settings" db=0.1ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:03.978 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:03.978 [error] #PID<0.2845.0> running PinchflatWeb.Endpoint (connection #PID<0.2844.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2844.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59104}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2845.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YricR9fhj0AAAA6i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2844.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59104}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2844.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59104}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2845.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YricR9fhj0AAAA6i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/ (truncated) 14:07:04.486 [info] GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application 14:07:04.487 [debug] QUERY OK source="settings" db=0.1ms idle=512.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.487 [debug] QUERY OK source="settings" db=0.0ms idle=512.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.487 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:04.487 [error] #PID<0.2847.0> running PinchflatWeb.Endpoint (connection #PID<0.2846.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2846.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59114}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2847.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], 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", "GMU4YtbuXsjJ4uMAAA7C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2846.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59114}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2846.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59114}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2847.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, (truncated) 14:07:04.915 [info] GET /.env 14:07:04.916 [debug] QUERY OK source="settings" db=0.6ms idle=938.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.917 [debug] QUERY OK source="settings" db=0.3ms idle=938.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:04.917 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:04.917 [error] #PID<0.2849.0> running PinchflatWeb.Endpoint (connection #PID<0.2848.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2848.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59124}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2849.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YvCLhlLrSeUAAA7i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2848.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59124}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2848.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59124}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2849.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4YvCLhlLrSeUAAA7i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex" (truncated) 14:07:06.214 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kZGyz9jCUj0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/70/63/7063e85a4703e0cf1358ce46b0eeab12ece5a14606495020f224c3640205b0f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:06.234 [debug] Running yt-dlp command for action: download_thumbnail 14:07:06.235 [debug] QUERY OK source="settings" db=0.1ms idle=1747.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.235 [debug] QUERY OK source="settings" db=0.1ms idle=1318.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.235 [debug] QUERY OK source="settings" db=0.1ms idle=1318.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.236 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kZGyz9jCUj0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/22/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0b/55/0b55c5682331eed071e05aefb6e53134388c148695f94e06007e7950dd0be039.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:06.392 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:06.732 [info] GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application 14:07:06.733 [debug] QUERY OK source="settings" db=0.1ms idle=576.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.733 [debug] QUERY OK source="settings" db=0.1ms idle=497.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.733 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:06.734 [error] #PID<0.2856.0> running PinchflatWeb.Endpoint (connection #PID<0.2855.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2855.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59144}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2856.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], 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", "GMU4Y1zR5PhVo0wAAA8C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2855.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59144}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2855.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59144}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2856.0>, params: %{}, path_info: ["ecp", "Current", "exporttool", "microsoft.exchange.ediscovery.exporttool"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded (truncated) 14:07:06.978 [info] GET /.git/config 14:07:06.979 [debug] QUERY OK source="settings" db=0.6ms idle=742.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.979 [debug] QUERY OK source="settings" db=0.2ms idle=743.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:06.979 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:06.981 [error] #PID<0.2858.0> running PinchflatWeb.Endpoint (connection #PID<0.2857.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2857.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2858.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Y2t3w-qzpeAAAA8i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2857.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.git/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2857.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2858.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Y2t3w-qzpeAAAA8i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :cal (truncated) 14:07:07.726 [info] POST /graphql 14:07:07.726 [info] Sent 404 in 257µs 14:07:07.726 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:08.188 [info] POST /api 14:07:08.188 [info] Sent 404 in 187µs 14:07:08.188 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:08.423 [info] POST /api/graphql 14:07:08.423 [info] Sent 404 in 237µs 14:07:08.423 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:08.666 [info] GET /.git/config 14:07:08.667 [debug] QUERY OK source="settings" db=0.5ms idle=505.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:08.667 [debug] QUERY OK source="settings" db=0.1ms idle=256.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:08.667 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:08.668 [error] #PID<0.2866.0> running PinchflatWeb.Endpoint (connection #PID<0.2865.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2865.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59192}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2866.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Y9AWVg9V06UAAA-i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2865.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59192}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.git/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2865.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59192}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2866.0>, params: %{}, path_info: [".git", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Y9AWVg9V06UAAA-i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ (truncated) 14:07:08.756 [info] POST /graphql/api 14:07:08.756 [info] Sent 404 in 224µs 14:07:08.756 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:08.911 [info] POST /api/gql 14:07:08.911 [info] Sent 404 in 163µs 14:07:08.911 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:09.131 [info] GET /s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties 14:07:09.142 [debug] QUERY OK source="settings" db=10.7ms idle=720.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:09.143 [debug] QUERY OK source="settings" db=0.9ms idle=731.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:09.143 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:09.146 [error] #PID<0.2872.0> running PinchflatWeb.Endpoint (connection #PID<0.2871.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /s/5313e2939313e29383e2838313/_/;/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/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2871.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59222}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2872.0>, params: %{}, path_info: ["s", "5313e2939313e29383e2838313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/s/5313e2939313e29383e2838313/_/;/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", "GMU4Y-vND2KwtQEAABAC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2871.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59222}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2871.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59222}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2872.0>, params: %{}, path_info: ["s", "5313e2939313e29383e2838313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-age (truncated) 14:07:09.783 [info] POST /graphql 14:07:09.783 [info] Sent 404 in 162µs 14:07:09.783 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.057 [info] POST /api 14:07:10.058 [info] Sent 404 in 864µs 14:07:10.058 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.182 [info] GET /config.json 14:07:10.184 [debug] QUERY OK source="settings" db=0.4ms queue=0.7ms idle=1515.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.184 [debug] QUERY OK source="settings" db=0.3ms idle=1042.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.185 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.185 [error] #PID<0.2878.0> running PinchflatWeb.Endpoint (connection #PID<0.2877.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2877.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59254}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2878.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZCp7Ulvim_0AABBi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2877.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59254}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2877.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59254}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2878.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZCp7Ulvim_0AABBi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"d (truncated) 14:07:10.234 [info] POST /api/graphql 14:07:10.235 [info] Sent 404 in 173µs 14:07:10.235 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.385 [info] POST /graphql/api 14:07:10.385 [info] Sent 404 in 244µs 14:07:10.385 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.522 [info] POST /api/gql 14:07:10.522 [info] Sent 404 in 169µs 14:07:10.522 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.638 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kZGyz9jCUj0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/22/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0b/55/0b55c5682331eed071e05aefb6e53134388c148695f94e06007e7950dd0be039.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:10.639 [debug] QUERY OK db=0.2ms idle=470.9ms begin [] 14:07:10.639 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:07:06Z], "/downloads/The Standup/2025-12-19 Worst Onboarding Experience Ever | The Standup/Worst Onboarding Experience Ever | The Standup [kZGyz9jCUj0].mp4", ~U[2026-07-24 12:07:10Z], 22] 14:07:10.641 [debug] QUERY OK source="media_metadata" db=1.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/22/metadata.json.gz", "/config/metadata/media_items/22/thumbnail.jpg", 22, ~U[2026-07-24 12:07:10Z], ~U[2026-07-24 12:07:10Z]] 14:07:10.641 [debug] QUERY OK db=0.3ms commit [] 14:07:10.642 [debug] QUERY OK source="media_items" db=0.7ms idle=457.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [241720284, ~U[2026-07-24 12:07:10Z], 22] 14:07:10.643 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:10.643 [info] {"args":{"id":22},"id":26,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":43875522,"event":"job:stop","queue_time":450766794,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:10.650 [info] {"args":{"id":24},"id":28,"meta":{},"system_time":1784894830650760585,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:10.651 [debug] QUERY OK source="media_items" db=0.2ms idle=240.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" = ?) [24] 14:07:10.651 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:10.652 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=10.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:10.652 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=9.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:10.653 [debug] QUERY OK source="media_items" db=0.4ms 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 [24] 14:07:10.654 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [24] 14:07:10.654 [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] 14:07:10.655 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.655 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.656 [debug] Running yt-dlp command for action: get_downloadable_status 14:07:10.657 [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:07:10.657 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.658 [debug] QUERY OK source="settings" db=0.6ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.658 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mxzx2Ps7OY0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/11/8f/118ff82ae8431fe2db63603895956f9e06b6b0618d48732ed11d46c968054f63.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:10.992 [info] GET /s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties 14:07:10.994 [debug] QUERY OK source="settings" db=0.7ms queue=0.2ms idle=337.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.995 [debug] QUERY OK source="settings" db=0.8ms idle=338.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:10.995 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:10.996 [error] #PID<0.2889.0> running PinchflatWeb.Endpoint (connection #PID<0.2888.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /s/5313e2939313e29383e2838313/_/;/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/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2888.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59302}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2889.0>, params: %{}, path_info: ["s", "5313e2939313e29383e2838313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/s/5313e2939313e29383e2838313/_/;/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", "GMU4ZFrD6AyqYxgAABDi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2888.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59302}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2888.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/5313e2939313e29383e2838313/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59302}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2889.0>, params: %{}, path_info: ["s", "5313e2939313e29383e2838313", "_", ";", "META-INF", "maven", "com.atlassian.jira", "jira-webapp-dist", "pom"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl (truncated) 14:07:11.167 [info] GET /telescope/requests 14:07:11.168 [debug] QUERY OK source="settings" db=0.6ms idle=510.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.168 [debug] QUERY OK source="settings" db=0.5ms idle=510.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.168 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:11.169 [error] #PID<0.2891.0> running PinchflatWeb.Endpoint (connection #PID<0.2890.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2890.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59310}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2891.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZGUnXKgZWKAAABEC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2890.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59310}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /telescope/requests (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2890.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59310}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2891.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZGUnXKgZWKAAABEC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router } (truncated) 14:07:11.644 [info] GET /config.json 14:07:11.646 [debug] QUERY OK source="settings" db=0.3ms idle=651.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.647 [debug] QUERY OK source="settings" db=0.9ms idle=651.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.647 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:11.648 [error] #PID<0.2893.0> running PinchflatWeb.Endpoint (connection #PID<0.2892.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2892.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59320}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2893.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZIGas_tULgAAABEi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2892.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59320}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2892.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59320}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2893.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZIGas_tULgAAABEi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router (truncated) 14:07:11.752 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=r3bPmtEP9SQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/98/95/9895fa2760f400c89109d5416300dd92f5f91eae12b5c5e3efdcb5d6d12c7ebc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:11.772 [debug] Running yt-dlp command for action: download_thumbnail 14:07:11.772 [debug] QUERY OK source="settings" db=0.1ms idle=604.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.772 [debug] QUERY OK source="settings" db=0.0ms idle=603.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.772 [debug] QUERY OK source="settings" db=0.1ms idle=601.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:11.773 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=r3bPmtEP9SQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/23/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/2c/d0/2cd0f12a48aa357905cfc2a8b49a1e81d1c19fdcdbdc2a04b227ecbf085f8b00.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:12.165 [info] GET /info.php 14:07:12.166 [debug] QUERY OK source="settings" db=0.5ms idle=519.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:12.166 [debug] QUERY OK source="settings" db=0.1ms idle=519.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:12.166 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:12.166 [error] #PID<0.2898.0> running PinchflatWeb.Endpoint (connection #PID<0.2897.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2897.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59336}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2898.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZKCjVu3jmfcAABFC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2897.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59336}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /info (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2897.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59336}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2898.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZKCjVu3jmfcAABFC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/ro (truncated) 14:07:13.054 [info] GET /.well-known/security.txt 14:07:13.055 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=1282.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.055 [debug] QUERY OK source="settings" db=0.2ms idle=1282.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.055 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:13.056 [error] #PID<0.2900.0> running PinchflatWeb.Endpoint (connection #PID<0.2899.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.well-known/security.txt ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2899.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59340}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2900.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZNWnFiSe_WAAABFi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2899.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59340}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2899.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59340}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2900.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZNWnFiSe_WAAABFi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, (truncated) 14:07:13.179 [info] GET /telescope/requests 14:07:13.179 [debug] QUERY OK source="settings" db=0.1ms idle=1013.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.180 [debug] QUERY OK source="settings" db=0.5ms idle=1002.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.180 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:13.180 [error] #PID<0.2902.0> running PinchflatWeb.Endpoint (connection #PID<0.2901.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2901.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59356}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2902.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZN0U1Okid5wAABGC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2901.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59356}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /telescope/requests (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2901.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59356}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2902.0>, params: %{}, path_info: ["telescope", "requests"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZN0U1Okid5wAABGC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, rou (truncated) 14:07:13.754 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mxzx2Ps7OY0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/11/8f/118ff82ae8431fe2db63603895956f9e06b6b0618d48732ed11d46c968054f63.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:13.754 [debug] Running yt-dlp command for action: download 14:07:13.754 [debug] QUERY OK source="settings" db=0.1ms idle=699.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.755 [debug] QUERY OK source="settings" db=0.2ms idle=699.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.755 [debug] QUERY OK source="settings" db=0.3ms idle=576.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.755 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mxzx2Ps7OY0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/be/4b/be4b718a28b8220756e5eea4951bbed75865280ff00c7f05c2bf947215ce4676.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:13.850 [info] GET /info.php 14:07:13.851 [debug] QUERY OK source="settings" db=0.3ms idle=671.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.851 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=670.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:13.851 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:13.852 [error] #PID<0.2904.0> running PinchflatWeb.Endpoint (connection #PID<0.2903.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2903.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59364}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2904.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZQUbPobGxckAABGi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2903.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59364}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /info (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2903.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59364}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2904.0>, params: %{}, path_info: ["info"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZQUbPobGxckAABGi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file (truncated) 14:07:14.053 [info] GET /actuator/env 14:07:14.054 [debug] QUERY OK source="settings" db=0.3ms idle=298.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:14.055 [debug] QUERY OK source="settings" db=0.8ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:14.055 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:14.055 [error] #PID<0.2906.0> running PinchflatWeb.Endpoint (connection #PID<0.2905.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2905.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39132}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2906.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZREzOwDwQmwAABHC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2905.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39132}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2905.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39132}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2906.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZREzOwDwQmwAABHC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Ro (truncated) 14:07:15.027 [info] GET /.well-known/security.txt 14:07:15.028 [debug] QUERY OK source="settings" db=0.2ms idle=1176.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.028 [debug] QUERY OK source="settings" db=0.3ms idle=1176.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.028 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:15.029 [error] #PID<0.2908.0> running PinchflatWeb.Endpoint (connection #PID<0.2907.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.well-known/security.txt ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2907.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39136}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2908.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZUs-DNH_5GwAABHi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2907.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39136}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.well-known/security (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2907.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.well-known/security.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39136}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2908.0>, params: %{}, path_info: [".well-known", "security"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.well-known/security.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZUs-DNH_5GwAABHi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, (truncated) 14:07:15.070 [info] GET /trace.axd 14:07:15.070 [debug] QUERY OK source="settings" db=0.2ms idle=1016.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.071 [debug] QUERY OK source="settings" db=0.2ms idle=1015.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.071 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:15.071 [error] #PID<0.2910.0> running PinchflatWeb.Endpoint (connection #PID<0.2909.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /trace.axd ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2909.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39138}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2910.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZU3Kmh5koZwAABIC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2909.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39138}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2909.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39138}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2910.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZU3Kmh5koZwAABIC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/ (truncated) 14:07:15.699 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=r3bPmtEP9SQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/23/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/2c/d0/2cd0f12a48aa357905cfc2a8b49a1e81d1c19fdcdbdc2a04b227ecbf085f8b00.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:15.700 [debug] QUERY OK db=0.1ms idle=672.2ms begin [] 14:07:15.701 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:07:11Z], "/downloads/The Standup/2025-12-04 The Secret of the AWS Outage | The Standup/The Secret of the AWS Outage | The Standup [r3bPmtEP9SQ].mp4", ~U[2026-07-24 12:07:15Z], 23] 14:07:15.703 [debug] QUERY OK source="media_metadata" db=2.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/23/metadata.json.gz", "/config/metadata/media_items/23/thumbnail.jpg", 23, ~U[2026-07-24 12:07:15Z], ~U[2026-07-24 12:07:15Z]] 14:07:15.703 [debug] QUERY OK db=0.4ms commit [] 14:07:15.705 [debug] QUERY OK source="media_items" db=0.7ms idle=675.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [304170908, ~U[2026-07-24 12:07:15Z], 23] 14:07:15.705 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:15.705 [info] {"args":{"id":23},"id":27,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":27069639,"event":"job:stop","queue_time":470634703,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:15.711 [info] {"args":{"id":25},"id":29,"meta":{},"system_time":1784894835711512720,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:15.711 [debug] QUERY OK source="media_items" db=0.1ms idle=529.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" = ?) [25] 14:07:15.712 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:15.712 [debug] QUERY OK source="sources" db=0.2ms idle=8.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:15.712 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:15.713 [debug] QUERY OK source="media_items" db=0.4ms idle=7.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [25] 14:07:15.714 [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" = ?) [25] 14:07:15.714 [debug] QUERY OK source="media_profiles" db=0.0ms 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] 14:07:15.714 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.714 [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 [] 14:07:15.714 [debug] Running yt-dlp command for action: get_downloadable_status 14:07:15.715 [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 [] 14:07:15.715 [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 [] 14:07:15.716 [debug] QUERY OK source="settings" db=0.3ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.716 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/df/0adf75045e01307fef886d821a1d9a27c67357b6b12ebfe9e1913d074f7b10d8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:15.952 [info] GET /actuator/env 14:07:15.953 [debug] QUERY OK source="settings" db=1.0ms idle=238.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.954 [debug] QUERY OK source="settings" db=0.4ms idle=239.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:15.954 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:15.955 [error] #PID<0.2915.0> running PinchflatWeb.Endpoint (connection #PID<0.2914.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2914.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2915.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZYJg_Y88aFoAABIi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2914.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2914.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2915.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZYJg_Y88aFoAABIi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, s (truncated) 14:07:16.054 [info] GET /@vite/env 14:07:16.055 [debug] QUERY OK source="settings" db=0.2ms idle=339.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:16.056 [debug] QUERY OK source="settings" db=0.4ms idle=339.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:16.056 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:16.057 [error] #PID<0.2917.0> running PinchflatWeb.Endpoint (connection #PID<0.2916.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2916.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39168}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2917.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZYh7R1lZHokAABJC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2916.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39168}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /@vite/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2916.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39168}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2917.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZYh7R1lZHokAABJC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file (truncated) 14:07:17.051 [info] GET /trace.axd 14:07:17.051 [debug] QUERY OK source="settings" db=0.1ms idle=1097.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:17.052 [debug] QUERY OK source="settings" db=0.1ms idle=1097.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:17.052 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:17.052 [error] #PID<0.2919.0> running PinchflatWeb.Endpoint (connection #PID<0.2918.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /trace.axd ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2918.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39176}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2919.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZcPhH05QtykAABJi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2918.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39176}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /trace (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2918.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/trace.axd", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39176}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2919.0>, params: %{}, path_info: ["trace"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/trace.axd", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZcPhH05QtykAABJi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, (truncated) 14:07:17.057 [info] GET /.vscode/sftp.json 14:07:17.057 [debug] QUERY OK source="settings" db=0.1ms idle=1001.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:17.057 [debug] QUERY OK source="settings" db=0.2ms idle=1001.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:17.057 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:17.058 [error] #PID<0.2921.0> running PinchflatWeb.Endpoint (connection #PID<0.2920.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2920.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39192}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2921.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZcQ2HOzN8WMAABKC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2920.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39192}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.vscode/sftp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2920.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39192}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2921.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZcQ2HOzN8WMAABKC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, sta (truncated) 14:07:18.056 [info] OPTIONS / 14:07:18.057 [debug] QUERY OK source="settings" db=1.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 [] 14:07:18.058 [debug] QUERY OK source="settings" db=0.1ms queue=0.7ms idle=1005.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.059 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:18.059 [error] #PID<0.2923.0> running PinchflatWeb.Endpoint (connection #PID<0.2922.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: OPTIONS / ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2922.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39206}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "OPTIONS", owner: #PID<0.2923.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Zf_EeMPbdncAABKi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2922.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39206}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2922.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39206}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "OPTIONS", owner: #PID<0.2923.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4Zf_EeMPbdncAABKi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {Pinc (truncated) 14:07:18.245 [info] GET /@vite/env 14:07:18.245 [debug] QUERY OK source="settings" db=0.2ms idle=1187.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.246 [debug] QUERY OK source="settings" db=0.0ms idle=1060.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.246 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:18.246 [error] #PID<0.2925.0> running PinchflatWeb.Endpoint (connection #PID<0.2924.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2924.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39212}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2925.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZgsKW_96SRQAABLC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2924.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39212}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /@vite/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2924.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39212}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2925.0>, params: %{}, path_info: ["@vite", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZgsKW_96SRQAABLC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb. (truncated) 14:07:18.798 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/df/0adf75045e01307fef886d821a1d9a27c67357b6b12ebfe9e1913d074f7b10d8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:18.798 [debug] Running yt-dlp command for action: download 14:07:18.800 [debug] QUERY OK source="settings" db=1.2ms idle=741.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.800 [debug] QUERY OK source="settings" db=0.1ms idle=741.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.800 [debug] QUERY OK source="settings" db=0.0ms idle=613.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.800 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/47/e8/47e8139a963cc47cf9f18fa9b3a0575465e177fb831365f8ce3148063273c758.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:18.934 [info] GET /.vscode/sftp.json 14:07:18.934 [debug] QUERY OK source="settings" db=0.4ms idle=688.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.935 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=688.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:18.935 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:18.936 [error] #PID<0.2927.0> running PinchflatWeb.Endpoint (connection #PID<0.2926.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2926.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39218}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2927.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZjQXjb0573wAABLi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2926.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39218}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.vscode/sftp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2926.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39218}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2927.0>, params: %{}, path_info: [".vscode", "sftp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZjQXjb0573wAABLi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router (truncated) 14:07:19.070 [info] GET / 14:07:19.070 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"rest_route" => "/wp/v2/users/"} Pipelines: [:browser] 14:07:19.071 [debug] QUERY OK source="settings" db=1.2ms idle=270.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:19.072 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=271.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:19.072 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=271.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:19.074 [debug] QUERY OK source="media_items" db=1.8ms idle=137.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:19.075 [debug] QUERY OK source="media_items" db=0.8ms idle=139.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:19.077 [debug] QUERY OK source="settings" db=1.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:19.078 [debug] QUERY OK source="settings" db=1.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:19.081 [debug] QUERY OK source="settings" db=0.8ms idle=7.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:19.084 [debug] QUERY OK source="tasks" db=0.6ms idle=9.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"] 14:07:19.085 [debug] QUERY OK source="media_items" db=0.4ms idle=9.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [24, 25] 14:07:19.087 [debug] QUERY OK source="media_items" db=0.4ms idle=10.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:19.088 [debug] QUERY OK source="media_items" db=0.4ms queue=0.3ms idle=9.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:07:19.089 [debug] QUERY OK source="sources" db=0.6ms idle=7.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:19.093 [debug] QUERY OK source="media_items" db=1.0ms idle=7.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:07:19.094 [debug] QUERY OK source="media_items" db=0.8ms idle=7.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:07:19.095 [debug] QUERY OK source="sources" db=0.5ms idle=6.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:19.098 [info] Sent 200 in 28ms 14:07:19.221 [info] GET / 14:07:19.221 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:07:19.223 [debug] QUERY OK source="settings" db=2.1ms idle=132.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:19.227 [debug] QUERY OK source="media_profiles" db=3.2ms idle=130.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:19.228 [debug] QUERY OK source="sources" db=1.3ms idle=132.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:19.230 [debug] QUERY OK source="media_items" db=1.6ms idle=133.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:19.232 [debug] QUERY OK source="media_items" db=1.6ms idle=39.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:19.234 [debug] QUERY OK source="settings" db=1.3ms 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:07:19.235 [debug] QUERY OK source="settings" db=1.2ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:19.238 [debug] QUERY OK source="settings" db=2.8ms 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:07:19.242 [debug] QUERY OK source="tasks" db=3.5ms idle=8.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:07:19.245 [debug] QUERY OK source="media_items" db=1.7ms idle=10.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [24, 25] 14:07:19.246 [debug] QUERY OK source="media_items" db=0.5ms idle=11.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:19.248 [debug] QUERY OK source="media_items" db=1.7ms idle=11.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:07:19.250 [debug] QUERY OK source="sources" db=1.6ms idle=9.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:19.257 [debug] QUERY OK source="media_items" db=0.9ms idle=13.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:07:19.262 [debug] QUERY OK source="media_items" db=4.4ms idle=12.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] 14:07:19.266 [debug] QUERY OK source="sources" db=3.5ms idle=16.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:19.267 [info] Sent 200 in 46ms 14:07:20.043 [info] OPTIONS / 14:07:20.044 [debug] QUERY OK source="settings" db=0.4ms idle=795.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:20.044 [debug] QUERY OK source="settings" db=0.3ms idle=793.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:20.044 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:20.045 [error] #PID<0.2937.0> running PinchflatWeb.Endpoint (connection #PID<0.2936.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: OPTIONS / ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2936.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39244}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "OPTIONS", owner: #PID<0.2937.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZnY3tyBDvpMAABSC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2936.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39244}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for OPTIONS / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2936.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39244}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "OPTIONS", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "OPTIONS", owner: #PID<0.2937.0>, params: %{}, path_info: [], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZnY3tyBDvpMAABSC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router (truncated) 14:07:20.107 [info] GET /debug/default/view 14:07:20.108 [debug] QUERY OK source="settings" db=0.7ms idle=850.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:20.109 [debug] QUERY OK source="settings" db=0.3ms idle=846.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:20.109 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:20.109 [error] #PID<0.2941.0> running PinchflatWeb.Endpoint (connection #PID<0.2940.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2940.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39256}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2941.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZnoLQDYN45MAABSi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2940.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39256}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/default/view (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2940.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39256}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "64.227.32.66", "x-forwarded-proto" => "http", "x-forwarded-scheme" => "http", "x-real-ip" => "64.227.32.66" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2941.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "http://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "64.227.32.66"}, {"x-forwarded-proto", "http"}, {"x-forwarded-scheme", "http"}, {"x-real-ip", "64.227.32.66"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZnoLQDYN45MAABSi"} ], scheme: :http, (truncated) 14:07:21.382 [info] GET / 14:07:21.382 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"rest_route" => "/wp/v2/users/"} Pipelines: [:browser] 14:07:21.384 [debug] QUERY OK source="settings" db=1.4ms 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 [] 14:07:21.385 [debug] QUERY OK source="media_profiles" db=1.1ms idle=1275.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:21.386 [debug] QUERY OK source="sources" db=1.0ms idle=1276.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:21.388 [debug] QUERY OK source="media_items" db=1.7ms idle=1194.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:21.390 [debug] QUERY OK source="media_items" db=1.3ms idle=193.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:21.391 [debug] QUERY OK source="settings" db=1.0ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:21.393 [debug] QUERY OK source="settings" db=1.3ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:21.395 [debug] QUERY OK source="settings" db=2.1ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:21.399 [debug] QUERY OK source="tasks" db=2.5ms idle=8.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"] 14:07:21.401 [debug] QUERY OK source="media_items" db=0.9ms queue=0.5ms idle=9.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [24, 25] 14:07:21.403 [debug] QUERY OK source="media_items" db=0.4ms idle=11.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:21.403 [debug] QUERY OK source="media_items" db=0.4ms idle=10.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:07:21.404 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=8.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:21.408 [debug] QUERY OK source="media_items" db=0.4ms idle=7.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"))) [] 14:07:21.409 [debug] QUERY OK source="media_items" db=0.8ms idle=6.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:07:21.410 [debug] QUERY OK source="sources" db=0.5ms queue=0.3ms idle=6.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:21.412 [info] Sent 200 in 30ms 14:07:21.416 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:21.945 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:22.547 [info] {"source":"oban","duration":497,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:22.618 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:22.728 [info] GET /debug/default/view 14:07:22.728 [debug] QUERY OK source="settings" db=0.4ms idle=315.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:22.729 [debug] QUERY OK source="settings" db=0.1ms idle=316.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:22.729 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:22.729 [error] #PID<0.2962.0> running PinchflatWeb.Endpoint (connection #PID<0.2961.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.2961.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39356}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2962.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZxY7g4PTc9QAABWi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2961.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39356}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/default/view (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2961.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 39356}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)", "x-forwarded-for" => "138.197.191.87", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "138.197.191.87" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2962.0>, params: %{"panel" => "config"}, path_info: ["debug", "default", "view"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.5313e2939313e29383e2838313; +https://leakix.net)"}, {"x-forwarded-for", "138.197.191.87"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "138.197.191.87"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ZxY7g4PTc9QAABWi"} ], (truncated) 14:07:23.192 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:24.200 [info] CONNECTED TO Phoenix.LiveView.Socket in 16µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:25.181 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:25.658 [info] GET / 14:07:25.658 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:07:25.658 [debug] QUERY OK source="settings" db=0.3ms idle=1245.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:25.659 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1246.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:07:25.659 [debug] QUERY OK source="sources" db=0.0ms idle=1246.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:07:25.659 [debug] QUERY OK source="media_items" db=0.1ms idle=1246.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:25.659 [debug] QUERY OK source="media_items" db=0.2ms idle=455.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:07:25.660 [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 [] 14:07:25.660 [debug] QUERY OK source="settings" db=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:25.661 [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 [] 14:07:25.661 [debug] QUERY OK source="tasks" db=0.2ms idle=2.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:07:25.662 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [24, 25] 14:07:25.663 [debug] QUERY OK source="media_items" db=0.0ms 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:07:25.663 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:07:25.663 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:25.666 [debug] QUERY OK source="media_items" db=0.2ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:07:25.666 [debug] QUERY OK source="media_items" db=0.6ms 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:07:25.667 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [1] 14:07:25.669 [info] Sent 200 in 11ms 14:07:25.819 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:27.391 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:29.194 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:31.759 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:31.764 [info] GET /.env.local 14:07:31.765 [debug] QUERY OK source="settings" db=0.1ms idle=552.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:31.765 [debug] QUERY OK source="settings" db=0.1ms idle=352.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:31.765 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:31.765 [error] #PID<0.2998.0> running PinchflatWeb.Endpoint (connection #PID<0.2997.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.local ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2997.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53728}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "168.110.218.47", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "168.110.218.47" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2998.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "168.110.218.47"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "168.110.218.47"} ], request_path: "/.env.local", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4aTDbFjGYHawAABbi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2997.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53728}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "168.110.218.47", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "168.110.218.47" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.2997.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53728}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "168.110.218.47", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "168.110.218.47" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.2998.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "168.110.218.47"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "168.110.218.47"} ], request_path: "/.env.local", resp_body: nil, (truncated) 14:07:35.641 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "bA5PblIsTzAdMxcNEj0UF29kQkIVGgQO5G--7YvFnlUFYlWv9Tr7Vqjv", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:37.421 [info] CONNECTED TO Phoenix.LiveView.Socket in 65µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:40.167 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mxzx2Ps7OY0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/be/4b/be4b718a28b8220756e5eea4951bbed75865280ff00c7f05c2bf947215ce4676.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:40.188 [debug] Running yt-dlp command for action: download_thumbnail 14:07:40.190 [debug] QUERY OK source="settings" db=0.1ms idle=963.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:40.190 [debug] QUERY OK source="settings" db=0.0ms idle=775.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:40.190 [debug] QUERY OK source="settings" db=0.0ms idle=775.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:40.190 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mxzx2Ps7OY0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/24/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e5/e8/e5e85f5eb8c4d23abf1d9134c3b47eb85cd234f6314f20ab91be8a8dc46ff357.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:43.179 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:43.431 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=mxzx2Ps7OY0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/24/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e5/e8/e5e85f5eb8c4d23abf1d9134c3b47eb85cd234f6314f20ab91be8a8dc46ff357.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:43.432 [debug] QUERY OK db=0.0ms idle=200.2ms begin [] 14:07:43.433 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:07:40Z], "/downloads/The Standup/2025-11-27 Thanksgiving Special - TheStandup/Thanksgiving Special - TheStandup [mxzx2Ps7OY0].mp4", ~U[2026-07-24 12:07:43Z], 24] 14:07:43.433 [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/24/metadata.json.gz", "/config/metadata/media_items/24/thumbnail.jpg", 24, ~U[2026-07-24 12:07:43Z], ~U[2026-07-24 12:07:43Z]] 14:07:43.433 [debug] QUERY OK db=0.2ms commit [] 14:07:43.435 [debug] QUERY OK source="media_items" db=0.9ms idle=19.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [343647855, ~U[2026-07-24 12:07:43Z], 24] 14:07:43.435 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:43.435 [info] {"args":{"id":24},"id":28,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":32784543,"event":"job:stop","queue_time":490649726,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:43.442 [info] {"args":{"id":26},"id":30,"meta":{},"system_time":1784894863442383635,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:43.443 [debug] QUERY OK source="media_items" db=0.3ms idle=27.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" = ?) [26] 14:07:43.443 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:43.443 [debug] QUERY OK source="sources" db=0.2ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:43.444 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:43.444 [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 [26] 14:07:43.445 [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" = ?) [26] 14:07:43.445 [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] 14:07:43.445 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:43.446 [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 [] 14:07:43.446 [debug] Running yt-dlp command for action: get_downloadable_status 14:07:43.447 [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 [] 14:07:43.447 [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 [] 14:07:43.447 [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 [] 14:07:43.447 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/1d/3c1d2ee307ec0f6be90690dca000a03b0777fdaa73414ad5049a31c31f1a3da5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:46.286 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3c/1d/3c1d2ee307ec0f6be90690dca000a03b0777fdaa73414ad5049a31c31f1a3da5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:46.286 [debug] Running yt-dlp command for action: download 14:07:46.287 [debug] QUERY OK source="settings" db=0.6ms idle=871.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:46.287 [debug] QUERY OK source="settings" db=0.3ms idle=872.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:46.288 [debug] QUERY OK source="settings" db=0.1ms idle=873.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:46.288 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ac/df/acdf6875c90022f8316254e808febc3432970e133b3b67fcf76f220fd742bab7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:49.734 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ac/df/acdf6875c90022f8316254e808febc3432970e133b3b67fcf76f220fd742bab7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: unable to download video data: HTTP Error 403: Forbidden 14:07:49.734 [error] yt-dlp download error for media item #26: "ERROR: unable to download video data: HTTP Error 403: Forbidden\n" 14:07:49.735 [debug] QUERY OK source="media_items" db=1.3ms idle=494.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: unable to download video data: HTTP Error 403: Forbidden\n", ~U[2026-07-24 12:07:49Z], 26] 14:07:49.736 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":26},"id":30,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6293690,"event":"job:exception","queue_time":520441752,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:49.743 [info] CONNECTED TO Phoenix.LiveView.Socket in 18µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:49.744 [info] {"args":{"id":27},"id":31,"meta":{},"system_time":1784894869744007497,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:49.744 [debug] QUERY OK source="media_items" db=0.2ms idle=329.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" = ?) [27] 14:07:49.744 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:49.745 [debug] QUERY OK source="sources" db=0.2ms idle=330.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:49.745 [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] 14:07:49.745 [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 [27] 14:07:49.746 [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" = ?) [27] 14:07:49.746 [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] 14:07:49.746 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:49.747 [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 [] 14:07:49.747 [debug] Running yt-dlp command for action: get_downloadable_status 14:07:49.748 [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 [] 14:07:49.748 [debug] QUERY OK source="settings" db=0.4ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:49.748 [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 [] 14:07:49.749 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dI64JeCIO8k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/99/51/99510838133ae9bb7911d5bb4395785c468324ab912ad006d501c150aa3a9ab8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:50.520 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AwUeBk0RMwBHMDtvKR00GhsEdjBhGFYVOtXbxNyF5_K_StFbyK0BYo9z", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:52.548 [info] {"source":"oban","duration":578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:52.767 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dI64JeCIO8k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/99/51/99510838133ae9bb7911d5bb4395785c468324ab912ad006d501c150aa3a9ab8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:52.767 [debug] Running yt-dlp command for action: download 14:07:52.767 [debug] QUERY OK source="settings" db=0.1ms idle=1352.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:52.768 [debug] QUERY OK source="settings" db=0.2ms idle=1353.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:52.768 [debug] QUERY OK source="settings" db=0.1ms idle=1353.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:52.768 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dI64JeCIO8k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e9/c5/e9c535ecf7634670bb307b55fd3c228d69412be8fe92b32e3ce727d1f820f81a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:53.320 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/47/e8/47e8139a963cc47cf9f18fa9b3a0575465e177fb831365f8ce3148063273c758.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: [download] Got error: 960 bytes read, 10047783 more expected. Giving up after 10 retries 14:07:53.320 [error] yt-dlp download error for media item #25: "ERROR: \r[download] Got error: 960 bytes read, 10047783 more expected. Giving up after 10 retries\n" 14:07:53.322 [debug] QUERY OK source="media_items" db=1.5ms idle=772.2ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: \r[download] Got error: 960 bytes read, 10047783 more expected. Giving up after 10 retries\n", ~U[2026-07-24 12:07:53Z], 25] 14:07:53.323 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":25},"id":29,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37610768,"event":"job:exception","queue_time":494710786,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:53.329 [info] {"args":{"id":28},"id":32,"meta":{},"system_time":1784894873329657430,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:07:53.330 [debug] QUERY OK source="media_items" db=0.6ms idle=561.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [28] 14:07:53.331 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:07:53.331 [debug] QUERY OK source="sources" db=0.3ms idle=86.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:07:53.332 [debug] QUERY OK source="media_profiles" db=0.3ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:07:53.332 [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 [28] 14:07:53.334 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.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" = ?) [28] 14:07:53.334 [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] 14:07:53.335 [debug] QUERY OK source="settings" db=0.0ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:53.335 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:53.336 [debug] Running yt-dlp command for action: get_downloadable_status 14:07:53.337 [debug] QUERY OK source="settings" db=0.3ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:53.338 [debug] QUERY OK source="settings" db=0.8ms 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:07:53.339 [debug] QUERY OK source="settings" db=0.6ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:53.339 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Bxvfd2wi8ZQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/ef/81ef9741160af0067fb3eaf72646ffe77f6ec8f193e686353dbcf1a99d7c5dc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:56.073 [info] CONNECTED TO Phoenix.LiveView.Socket in 16µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:07:56.355 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Bxvfd2wi8ZQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/ef/81ef9741160af0067fb3eaf72646ffe77f6ec8f193e686353dbcf1a99d7c5dc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:07:56.355 [debug] Running yt-dlp command for action: download 14:07:56.356 [debug] QUERY OK source="settings" db=0.2ms idle=1940.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:56.356 [debug] QUERY OK source="settings" db=0.3ms idle=1941.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:56.357 [debug] QUERY OK source="settings" db=0.3ms idle=1941.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:56.357 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Bxvfd2wi8ZQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c7/03/c7030a61451e185ee5b5d1f639da8f31b3e79f882f48d3cb76257cfcc491984d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:07:59.141 [info] GET /.env.dev 14:07:59.141 [debug] QUERY OK source="settings" db=0.2ms idle=1726.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:59.142 [debug] QUERY OK source="settings" db=0.3ms idle=1726.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:07:59.142 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:07:59.143 [error] #PID<0.3026.0> running PinchflatWeb.Endpoint (connection #PID<0.3025.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.dev ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3025.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.dev", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37268}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "161.118.169.38", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "161.118.169.38" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3026.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "161.118.169.38"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "161.118.169.38"} ], request_path: "/.env.dev", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4b5ChHNyuFDAAABci"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3025.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.dev", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37268}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "161.118.169.38", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "161.118.169.38" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3025.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.dev", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37268}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "161.118.169.38", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "161.118.169.38" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3026.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "161.118.169.38"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "161.118.169.38"} ], request_path: "/.env.dev", resp_body: nil, resp_cookies (truncated) 14:08:00.521 [info] {"source":"oban","duration":358,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:08:03.178 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:08:11.554 [info] CONNECTED TO Phoenix.LiveView.Socket in 17µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IBRwQDlXTjUbKEIscThwHFQrMAdOPVpmVb52fb4Xvl4bISFm-nVEcq10", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:08:19.864 [info] GET /.env.staging 14:08:19.865 [debug] QUERY OK source="settings" db=0.5ms idle=1449.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:19.865 [debug] QUERY OK source="settings" db=0.3ms idle=1450.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:19.866 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:19.866 [error] #PID<0.3032.0> running PinchflatWeb.Endpoint (connection #PID<0.3031.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.staging ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3031.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.staging", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49734}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3032.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.staging", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dGPVZSlVm9cAABdi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3031.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.staging", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49734}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3031.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.staging", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49734}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3032.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.staging", resp_body: nil, (truncated) 14:08:20.006 [info] GET /.env.backup 14:08:20.006 [debug] QUERY OK source="settings" db=0.4ms idle=1591.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.007 [debug] QUERY OK source="settings" db=0.2ms idle=1591.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.007 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.007 [error] #PID<0.3034.0> running PinchflatWeb.Endpoint (connection #PID<0.3033.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.backup ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3033.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.backup", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49748}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3034.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.backup", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dGxDuZgZj7gAABeC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3033.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.backup", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49748}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3033.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.backup", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49748}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3034.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.backup", resp_body: nil, resp (truncated) 14:08:20.106 [info] GET /.env.save 14:08:20.107 [debug] QUERY OK source="settings" db=0.2ms idle=823.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.107 [debug] QUERY OK source="settings" db=0.1ms idle=241.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.107 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.107 [error] #PID<0.3036.0> running PinchflatWeb.Endpoint (connection #PID<0.3035.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.save ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3035.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.save", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49750}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3036.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.save", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dHJCDMdjZ7UAABei"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3035.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.save", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49750}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3035.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.save", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49750}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3036.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.save", resp_body: nil, resp_cookies: %{ (truncated) 14:08:20.206 [info] GET /.env.old 14:08:20.206 [debug] QUERY OK source="settings" db=0.1ms idle=340.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.207 [debug] QUERY OK source="settings" db=0.2ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.207 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.207 [error] #PID<0.3038.0> running PinchflatWeb.Endpoint (connection #PID<0.3037.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.old ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3037.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.old", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49756}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3038.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.old", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dHg2My21EfAAABfC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3037.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.old", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49756}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3037.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.old", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49756}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3038.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.old", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:20.306 [info] GET /.env.bak 14:08:20.307 [debug] QUERY OK source="settings" db=0.2ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.307 [debug] QUERY OK source="settings" db=0.1ms idle=199.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.307 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.307 [error] #PID<0.3040.0> running PinchflatWeb.Endpoint (connection #PID<0.3039.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.bak ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3039.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.bak", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49762}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3040.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.bak", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dH4uzfqG2CYAABfi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3039.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.bak", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49762}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3039.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.bak", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49762}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3040.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.bak", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:20.406 [info] GET /.env.tmp 14:08:20.406 [debug] QUERY OK source="settings" db=0.3ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.407 [debug] QUERY OK source="settings" db=0.0ms idle=199.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.407 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.407 [error] #PID<0.3042.0> running PinchflatWeb.Endpoint (connection #PID<0.3041.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.tmp ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3041.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.tmp", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49770}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3042.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.tmp", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dIQc5wBw_hIAABgC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3041.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.tmp", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49770}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3041.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.tmp", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49770}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3042.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.tmp", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:20.505 [info] GET /.env.swp 14:08:20.506 [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 [] 14:08:20.506 [debug] QUERY OK source="settings" db=0.3ms idle=199.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.506 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.506 [error] #PID<0.3044.0> running PinchflatWeb.Endpoint (connection #PID<0.3043.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.swp ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3043.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.swp", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49778}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3044.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.swp", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dIoKUcf54OIAABgi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3043.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.swp", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49778}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3043.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.swp", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49778}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3044.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.swp", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:20.605 [info] GET /.env~ 14:08:20.606 [debug] QUERY OK source="settings" db=0.3ms idle=298.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.606 [debug] QUERY OK source="settings" db=0.5ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.606 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.607 [error] #PID<0.3046.0> running PinchflatWeb.Endpoint (connection #PID<0.3045.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.3045.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env~", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49794}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3046.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env~", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dI_81pvq6AwAABhC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3045.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env~", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49794}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3045.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env~", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49794}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3046.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env~", resp_body: nil, resp_cookies: %{}, resp_headers: [ (truncated) 14:08:20.706 [info] GET /.env.example 14:08:20.706 [debug] QUERY OK source="settings" db=0.2ms idle=299.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.707 [debug] QUERY OK source="settings" db=0.2ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.707 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.707 [error] #PID<0.3048.0> running PinchflatWeb.Endpoint (connection #PID<0.3047.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.example ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3047.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.example", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49800}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3048.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.example", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dJX-RsXeSH0AABhi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3047.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.example", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49800}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3047.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.example", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49800}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3048.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.example", resp_body: nil, (truncated) 14:08:20.805 [info] GET /.env.sample 14:08:20.806 [debug] QUERY OK source="settings" db=0.1ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.806 [debug] QUERY OK source="settings" db=0.1ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.806 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.806 [error] #PID<0.3050.0> running PinchflatWeb.Endpoint (connection #PID<0.3049.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.sample ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3049.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.sample", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49812}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3050.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.sample", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dJvuvOPGiRAAABiC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3049.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.sample", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49812}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3049.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.sample", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49812}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3050.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.sample", resp_body: nil, resp (truncated) 14:08:20.905 [info] GET /.env.dist 14:08:20.905 [debug] QUERY OK source="settings" db=0.1ms idle=298.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.905 [debug] QUERY OK source="settings" db=0.1ms idle=199.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:20.906 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:20.906 [error] #PID<0.3052.0> running PinchflatWeb.Endpoint (connection #PID<0.3051.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.dist ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3051.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.dist", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49818}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3052.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.dist", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dKHc7Qbtm2MAABii"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3051.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.dist", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49818}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3051.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.dist", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49818}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3052.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.dist", resp_body: nil, resp_cookies: %{ (truncated) 14:08:21.004 [info] GET /.env.template 14:08:21.005 [debug] QUERY OK source="settings" db=0.3ms idle=298.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.005 [debug] QUERY OK source="settings" db=0.1ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.005 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.006 [error] #PID<0.3054.0> running PinchflatWeb.Endpoint (connection #PID<0.3053.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.template ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3053.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.template", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49822}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3054.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.template", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dKfOBQOBqccAABjC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3053.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.template", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49822}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3053.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.template", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49822}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3054.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.template", resp_body: nil, (truncated) 14:08:21.105 [info] GET /.env.production.local 14:08:21.106 [debug] QUERY OK source="settings" db=0.2ms idle=299.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.106 [debug] QUERY OK source="settings" db=0.1ms idle=200.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.106 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.106 [error] #PID<0.3056.0> running PinchflatWeb.Endpoint (connection #PID<0.3055.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.production.local ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env.production (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3055.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.production.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3056.0>, params: %{}, path_info: [".env.production"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.production.local", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dK3MHC4PoSsAABji"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3055.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.production.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env.production (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3055.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.production.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3056.0>, params: %{}, path_info: [".env.production"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:21.206 [info] GET /.env.development.local 14:08:21.206 [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 [] 14:08:21.207 [debug] QUERY OK source="settings" db=0.2ms idle=201.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.207 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.207 [error] #PID<0.3058.0> running PinchflatWeb.Endpoint (connection #PID<0.3057.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.development.local ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env.development (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3057.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.development.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49834}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3058.0>, params: %{}, path_info: [".env.development"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.development.local", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dLPMV0BwDMUAABkC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3057.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.development.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49834}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env.development (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3057.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.development.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49834}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3058.0>, params: %{}, path_info: [".env.development"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53 (truncated) 14:08:21.308 [info] GET /.env.test.local 14:08:21.309 [debug] QUERY OK source="settings" db=0.1ms idle=202.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.309 [debug] QUERY OK source="settings" db=0.2ms idle=202.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.309 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.309 [error] #PID<0.3060.0> running PinchflatWeb.Endpoint (connection #PID<0.3059.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.test.local ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env.test (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3059.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.test.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49844}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3060.0>, params: %{}, path_info: [".env.test"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.test.local", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dLnlrHa-9ccAABki"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3059.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.test.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49844}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env.test (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3059.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.test.local", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49844}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3060.0>, params: %{}, path_info: [".env.test"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.test.loca (truncated) 14:08:21.408 [info] GET /.envrc 14:08:21.408 [debug] QUERY OK source="settings" db=0.4ms 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 [] 14:08:21.409 [debug] QUERY OK source="settings" db=0.1ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.409 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.409 [error] #PID<0.3062.0> running PinchflatWeb.Endpoint (connection #PID<0.3061.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.envrc ** (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.3061.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.envrc", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49860}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3062.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.envrc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dL_YvJDiBZQAABlC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3061.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.envrc", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49860}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3061.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.envrc", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49860}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3062.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.envrc", resp_body: nil, resp_cookies: %{}, resp_headers: [ (truncated) 14:08:21.507 [info] GET /.flaskenv 14:08:21.508 [debug] QUERY OK source="settings" db=0.3ms idle=222.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.508 [debug] QUERY OK source="settings" db=0.3ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.509 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.509 [error] #PID<0.3064.0> running PinchflatWeb.Endpoint (connection #PID<0.3063.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.flaskenv ** (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.3063.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.flaskenv", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49862}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3064.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.flaskenv", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dMXH44NrmroAABli"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3063.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.flaskenv", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49862}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3063.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.flaskenv", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49862}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3064.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.flaskenv", resp_body: nil, resp_cookies: %{}, res (truncated) 14:08:21.607 [info] GET /env 14:08:21.608 [debug] QUERY OK source="settings" db=0.2ms idle=298.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.609 [debug] QUERY OK source="settings" db=0.3ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.609 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.609 [error] #PID<0.3066.0> running PinchflatWeb.Endpoint (connection #PID<0.3065.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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 /env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3065.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49872}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3066.0>, params: %{}, path_info: ["env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dMu-rf_g5Q4AABmC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3065.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49872}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3065.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49872}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3066.0>, params: %{}, path_info: ["env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ (truncated) 14:08:21.708 [info] GET /env.js 14:08:21.708 [debug] QUERY OK source="settings" db=0.2ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.708 [debug] QUERY OK source="settings" db=0.1ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.708 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.709 [error] #PID<0.3068.0> running PinchflatWeb.Endpoint (connection #PID<0.3067.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /env.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3067.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49874}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3068.0>, params: %{}, path_info: ["env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/env.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dNG26WBBrtMAABmi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3067.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49874}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3067.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49874}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3068.0>, params: %{}, path_info: ["env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/env.js", resp_body: nil, resp_cookies: %{}, resp_head (truncated) 14:08:21.807 [info] GET /env.json 14:08:21.808 [debug] QUERY OK source="settings" db=0.2ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.809 [debug] QUERY OK source="settings" db=0.1ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.809 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.809 [error] #PID<0.3070.0> running PinchflatWeb.Endpoint (connection #PID<0.3069.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /env.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 /env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3069.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49878}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3070.0>, params: %{}, path_info: ["env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/env.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dNeqXd7oPnwAABnC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3069.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49878}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3069.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/env.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49878}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3070.0>, params: %{}, path_info: ["env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/env.json", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:21.908 [info] GET /app/.env 14:08:21.908 [debug] QUERY OK source="settings" db=0.6ms 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 [] 14:08:21.909 [debug] QUERY OK source="settings" db=0.1ms idle=200.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:21.909 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:21.909 [error] #PID<0.3072.0> running PinchflatWeb.Endpoint (connection #PID<0.3071.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /app/.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 /app/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3071.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49880}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3072.0>, params: %{}, path_info: ["app", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dN2iXF-7sSEAAACE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3071.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49880}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3071.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49880}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3072.0>, params: %{}, path_info: ["app", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:22.008 [info] GET /src/.env 14:08:22.008 [debug] QUERY OK source="settings" db=0.2ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.009 [debug] QUERY OK source="settings" db=0.1ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.009 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.009 [error] #PID<0.3074.0> running PinchflatWeb.Endpoint (connection #PID<0.3073.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /src/.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 /src/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3073.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/src/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49888}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3074.0>, params: %{}, path_info: ["src", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/src/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dOOYS68u0qUAABni"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3073.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/src/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49888}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /src/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3073.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/src/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49888}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3074.0>, params: %{}, path_info: ["src", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/src/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:22.108 [info] GET /config/.env 14:08:22.108 [debug] QUERY OK source="settings" db=0.2ms idle=299.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.109 [debug] QUERY OK source="settings" db=0.2ms idle=199.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.109 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.109 [error] #PID<0.3076.0> running PinchflatWeb.Endpoint (connection #PID<0.3075.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/.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 /config/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3075.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49898}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3076.0>, params: %{}, path_info: ["config", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dOmQ62oQGxcAABoC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3075.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49898}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3075.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49898}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3076.0>, params: %{}, path_info: ["config", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/.env", resp_body: n (truncated) 14:08:22.207 [info] GET /backend/.env 14:08:22.208 [debug] QUERY OK source="settings" db=0.2ms idle=298.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.208 [debug] QUERY OK source="settings" db=0.2ms idle=199.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.208 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.209 [error] #PID<0.3078.0> running PinchflatWeb.Endpoint (connection #PID<0.3077.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /backend/.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 /backend/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3077.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backend/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49900}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3078.0>, params: %{}, path_info: ["backend", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/backend/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dO-Bs483KLAAABoi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3077.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backend/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49900}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /backend/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3077.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backend/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49900}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3078.0>, params: %{}, path_info: ["backend", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/backend/.env", re (truncated) 14:08:22.307 [info] GET /frontend/.env 14:08:22.308 [debug] QUERY OK source="settings" db=0.2ms idle=199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.308 [debug] QUERY OK source="settings" db=0.2ms idle=199.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.308 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.309 [error] #PID<0.3080.0> running PinchflatWeb.Endpoint (connection #PID<0.3079.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /frontend/.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 /frontend/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3079.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/frontend/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49910}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3080.0>, params: %{}, path_info: ["frontend", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/frontend/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dPV0yLnY3PEAAACk"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3079.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/frontend/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49910}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /frontend/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3079.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/frontend/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49910}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3080.0>, params: %{}, path_info: ["frontend", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/frontend/.env", (truncated) 14:08:22.407 [info] GET /api/.env 14:08:22.408 [debug] QUERY OK source="settings" db=0.3ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.408 [debug] QUERY OK source="settings" db=0.1ms idle=199.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.408 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.409 [error] #PID<0.3082.0> running PinchflatWeb.Endpoint (connection #PID<0.3081.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /api/.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 /api/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3081.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49914}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3082.0>, params: %{}, path_info: ["api", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dPtsrTT4UMsAAADE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3081.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49914}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /api/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3081.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49914}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3082.0>, params: %{}, path_info: ["api", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:22.507 [info] GET /server/.env 14:08:22.508 [debug] QUERY OK source="settings" db=0.2ms idle=221.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.508 [debug] QUERY OK source="settings" db=0.3ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.509 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.509 [error] #PID<0.3084.0> running PinchflatWeb.Endpoint (connection #PID<0.3083.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /server/.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 /server/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3083.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49928}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3084.0>, params: %{}, path_info: ["server", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/server/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dQFhNEGvYxYAABpC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3083.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49928}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3083.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49928}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3084.0>, params: %{}, path_info: ["server", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/server/.env", resp_body: n (truncated) 14:08:22.549 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:22.607 [info] GET /client/.env 14:08:22.608 [debug] QUERY OK source="settings" db=0.1ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.608 [debug] QUERY OK source="settings" db=0.1ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.608 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.609 [error] #PID<0.3086.0> running PinchflatWeb.Endpoint (connection #PID<0.3085.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /client/.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 /client/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3085.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/client/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49938}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3086.0>, params: %{}, path_info: ["client", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/client/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dQdaWi9LIwkAAADk"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3085.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/client/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49938}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /client/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3085.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/client/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49938}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3086.0>, params: %{}, path_info: ["client", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/client/.env", resp_body: n (truncated) 14:08:22.707 [info] GET /web/.env 14:08:22.707 [debug] QUERY OK source="settings" db=0.1ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.708 [debug] QUERY OK source="settings" db=0.2ms idle=199.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.708 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.708 [error] #PID<0.3088.0> running PinchflatWeb.Endpoint (connection #PID<0.3087.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /web/.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 /web/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3087.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/web/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3088.0>, params: %{}, path_info: ["web", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/web/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dQ1JnVFAvxEAABpi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3087.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/web/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /web/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3087.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/web/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3088.0>, params: %{}, path_info: ["web", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/web/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:22.808 [info] GET /public/.env 14:08:22.808 [debug] QUERY OK source="settings" db=0.2ms idle=258.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.808 [debug] QUERY OK source="settings" db=0.3ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.809 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.809 [error] #PID<0.3090.0> running PinchflatWeb.Endpoint (connection #PID<0.3089.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /public/.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 /public/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3089.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/public/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49958}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3090.0>, params: %{}, path_info: ["public", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/public/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dRNHZeoKvEMAABqC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3089.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/public/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49958}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /public/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3089.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/public/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49958}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3090.0>, params: %{}, path_info: ["public", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/public/.env", resp_body: n (truncated) 14:08:22.907 [info] GET /private/.env 14:08:22.908 [debug] QUERY OK source="settings" db=0.1ms idle=299.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.908 [debug] QUERY OK source="settings" db=0.1ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:22.908 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:22.908 [error] #PID<0.3092.0> running PinchflatWeb.Endpoint (connection #PID<0.3091.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /private/.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 /private/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3091.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/private/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49960}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3092.0>, params: %{}, path_info: ["private", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/private/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dRk5K2pXRkIAABqi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3091.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/private/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49960}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /private/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3091.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/private/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49960}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3092.0>, params: %{}, path_info: ["private", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/private/.env", re (truncated) 14:08:23.007 [info] GET /var/.env 14:08:23.008 [debug] QUERY OK source="settings" db=0.9ms idle=299.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.009 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.009 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.009 [error] #PID<0.3094.0> running PinchflatWeb.Endpoint (connection #PID<0.3093.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /var/.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 /var/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3093.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/var/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49974}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3094.0>, params: %{}, path_info: ["var", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/var/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dR8rHa_Y0gUAABrC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3093.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/var/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49974}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /var/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3093.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/var/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49974}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3094.0>, params: %{}, path_info: ["var", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/var/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:23.108 [info] GET /docker-compose.yml 14:08:23.108 [debug] QUERY OK source="settings" db=0.2ms idle=299.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.109 [debug] QUERY OK source="settings" db=0.2ms idle=200.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.109 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.109 [error] #PID<0.3096.0> running PinchflatWeb.Endpoint (connection #PID<0.3095.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /docker-compose.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3095.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49986}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3096.0>, params: %{}, path_info: ["docker-compose"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/docker-compose.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dSUrIuEdf0MAABri"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3095.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49986}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3095.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49986}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3096.0>, params: %{}, path_info: ["docker-compose"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:23.207 [info] GET /docker-compose.yaml 14:08:23.208 [debug] QUERY OK source="settings" db=0.1ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.208 [debug] QUERY OK source="settings" db=0.1ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.208 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.208 [error] #PID<0.3098.0> running PinchflatWeb.Endpoint (connection #PID<0.3097.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /docker-compose.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3097.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49992}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3098.0>, params: %{}, path_info: ["docker-compose"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/docker-compose.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dSsbFO538wIAABsC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3097.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49992}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3097.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 49992}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3098.0>, params: %{}, path_info: ["docker-compose"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:23.307 [info] GET /docker-compose.override.yml 14:08:23.308 [debug] QUERY OK source="settings" db=0.3ms idle=198.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.308 [debug] QUERY OK source="settings" db=0.2ms idle=199.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.308 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.308 [error] #PID<0.3100.0> running PinchflatWeb.Endpoint (connection #PID<0.3099.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /docker-compose.override.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose.override (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3099.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.override.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50004}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3100.0>, params: %{}, path_info: ["docker-compose.override"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/docker-compose.override.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dTELh5IOrOMAABsi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3099.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.override.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50004}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose.override (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3099.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.override.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50004}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3100.0>, params: %{}, path_info: ["docker-compose.override"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded (truncated) 14:08:23.407 [info] GET /docker-compose.dev.yml 14:08:23.408 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=199.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.408 [debug] QUERY OK source="settings" db=0.1ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.408 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.408 [error] #PID<0.3102.0> running PinchflatWeb.Endpoint (connection #PID<0.3101.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /docker-compose.dev.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose.dev (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3101.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.dev.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50006}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3102.0>, params: %{}, path_info: ["docker-compose.dev"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/docker-compose.dev.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dTcErP5McUgAABtC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3101.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.dev.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50006}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose.dev (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3101.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.dev.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50006}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3102.0>, params: %{}, path_info: ["docker-compose.dev"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", (truncated) 14:08:23.507 [info] GET /docker-compose.prod.yml 14:08:23.508 [debug] QUERY OK source="settings" db=0.3ms idle=220.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.508 [debug] QUERY OK source="settings" db=0.5ms idle=200.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.508 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.509 [error] #PID<0.3104.0> running PinchflatWeb.Endpoint (connection #PID<0.3103.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /docker-compose.prod.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose.prod (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3103.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.prod.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50018}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3104.0>, params: %{}, path_info: ["docker-compose.prod"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/docker-compose.prod.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dTz3udX-3KAAABti"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3103.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.prod.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50018}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /docker-compose.prod (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3103.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/docker-compose.prod.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50018}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3104.0>, params: %{}, path_info: ["docker-compose.prod"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x- (truncated) 14:08:23.607 [info] GET /config.js 14:08:23.608 [debug] QUERY OK source="settings" db=0.4ms idle=299.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.609 [debug] QUERY OK source="settings" db=0.3ms idle=200.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.609 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.609 [error] #PID<0.3106.0> running PinchflatWeb.Endpoint (connection #PID<0.3105.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config.js ** (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.3105.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50028}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3106.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dULzG09bGocAABuC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3105.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50028}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3105.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50028}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3106.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.js", resp_body: nil, resp_coo (truncated) 14:08:23.708 [info] GET /config.json 14:08:23.708 [debug] QUERY OK source="settings" db=0.5ms idle=299.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.709 [debug] QUERY OK source="settings" db=0.3ms idle=200.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.709 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:23.710 [error] #PID<0.3108.0> running PinchflatWeb.Endpoint (connection #PID<0.3107.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.3107.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50038}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3108.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dUjr3SSTwPwAABui"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3107.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50038}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3107.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50038}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3108.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.json", resp_body: nil, (truncated) 14:08:23.808 [info] GET /settings.js 14:08:23.808 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 14:08:23.809 [debug] QUERY OK source="settings" db=0.4ms idle=299.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.809 [debug] QUERY OK source="settings" db=0.3ms idle=200.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.809 [debug] QUERY OK source="settings" db=0.2ms idle=200.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.810 [debug] QUERY OK source="settings" db=0.2ms idle=101.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:23.811 [info] Sent 200 in 3ms 14:08:24.006 [info] GET /settings.json 14:08:24.006 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 14:08:24.007 [debug] QUERY OK source="settings" db=0.7ms 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 [] 14:08:24.007 [debug] QUERY OK source="settings" db=0.1ms idle=198.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.008 [debug] QUERY OK source="settings" db=0.2ms idle=198.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.008 [debug] QUERY OK source="settings" db=0.1ms idle=198.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.009 [info] Sent 200 in 3ms 14:08:24.206 [info] GET /secrets.json 14:08:24.206 [debug] QUERY OK source="settings" db=0.1ms idle=395.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.206 [debug] QUERY OK source="settings" db=0.1ms idle=199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.207 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.207 [error] #PID<0.3114.0> running PinchflatWeb.Endpoint (connection #PID<0.3113.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /secrets.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 /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3113.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38056}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3114.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dWadoeq5cXsAAAEE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3113.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38056}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3113.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38056}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3114.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.json", resp_body: n (truncated) 14:08:24.305 [info] GET /credentials.json 14:08:24.306 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:08:24.306 [debug] QUERY OK source="settings" db=0.1ms idle=297.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.306 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.307 [error] #PID<0.3116.0> running PinchflatWeb.Endpoint (connection #PID<0.3115.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /credentials.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 /credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3115.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38070}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3116.0>, params: %{}, path_info: ["credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dWyLIrIXIEsAAAEk"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3115.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38070}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3115.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38070}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3116.0>, params: %{}, path_info: ["credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/c (truncated) 14:08:24.405 [info] GET /cdp_api_key.json 14:08:24.406 [debug] QUERY OK source="settings" db=0.3ms idle=199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.406 [debug] QUERY OK source="settings" db=0.1ms idle=199.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.406 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.406 [error] #PID<0.3118.0> running PinchflatWeb.Endpoint (connection #PID<0.3117.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /cdp_api_key.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 /cdp_api_key (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3117.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/cdp_api_key.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38076}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3118.0>, params: %{}, path_info: ["cdp_api_key"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/cdp_api_key.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dXKAIAMATQsAAByC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3117.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/cdp_api_key.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38076}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /cdp_api_key (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3117.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/cdp_api_key.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38076}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3118.0>, params: %{}, path_info: ["cdp_api_key"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/c (truncated) 14:08:24.506 [info] GET /app.js 14:08:24.506 [debug] QUERY OK source="settings" db=0.2ms idle=217.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.506 [debug] QUERY OK source="settings" db=0.1ms idle=200.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.507 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.507 [error] #PID<0.3120.0> running PinchflatWeb.Endpoint (connection #PID<0.3119.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /app.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3119.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38078}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3120.0>, params: %{}, path_info: ["app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dXh97A7a5DgAAByi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3119.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38078}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3119.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38078}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3120.0>, params: %{}, path_info: ["app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app.js", resp_body: nil, resp_cookies: %{}, resp_head (truncated) 14:08:24.605 [info] GET /main.js 14:08:24.606 [debug] QUERY OK source="settings" db=0.3ms idle=299.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.606 [debug] QUERY OK source="settings" db=0.2ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.606 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.607 [error] #PID<0.3122.0> running PinchflatWeb.Endpoint (connection #PID<0.3121.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /main.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3121.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38092}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3122.0>, params: %{}, path_info: ["main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/main.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dX5tvBS-XHEAAAFE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3121.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38092}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3121.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38092}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3122.0>, params: %{}, path_info: ["main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/main.js", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:24.705 [info] GET /index.js 14:08:24.705 [debug] QUERY OK source="settings" db=0.2ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.706 [debug] QUERY OK source="settings" db=0.3ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.706 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.706 [error] #PID<0.3124.0> running PinchflatWeb.Endpoint (connection #PID<0.3123.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /index.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3123.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/index.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38098}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3124.0>, params: %{}, path_info: ["index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/index.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dYRetUh87MMAABzC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3123.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/index.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38098}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3123.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/index.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38098}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3124.0>, params: %{}, path_info: ["index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/index.js", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:24.805 [info] GET /server.js 14:08:24.805 [debug] QUERY OK source="settings" db=0.2ms idle=298.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.806 [debug] QUERY OK source="settings" db=0.1ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.806 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.806 [error] #PID<0.3126.0> running PinchflatWeb.Endpoint (connection #PID<0.3125.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /server.js ** (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.3125.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38108}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3126.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/server.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dYpTZPjIh80AABzi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3125.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38108}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /server (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3125.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38108}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3126.0>, params: %{}, path_info: ["server"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/server.js", resp_body: nil, resp_coo (truncated) 14:08:24.905 [info] GET /bundle.js 14:08:24.905 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=298.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.906 [debug] QUERY OK source="settings" db=0.4ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:24.906 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:24.906 [error] #PID<0.3128.0> running PinchflatWeb.Endpoint (connection #PID<0.3127.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /bundle.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3127.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38112}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3128.0>, params: %{}, path_info: ["bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/bundle.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dZBEdJMPtw8AAB0C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3127.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38112}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3127.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38112}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3128.0>, params: %{}, path_info: ["bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/bundle.js", resp_body: nil, resp_coo (truncated) 14:08:25.005 [info] GET /app.bundle.js 14:08:25.005 [debug] QUERY OK source="settings" db=0.2ms idle=299.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.006 [debug] QUERY OK source="settings" db=0.2ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.006 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.006 [error] #PID<0.3132.0> running PinchflatWeb.Endpoint (connection #PID<0.3131.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /app.bundle.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app.bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3131.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app.bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38122}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3132.0>, params: %{}, path_info: ["app.bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app.bundle.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dZY9smDWtCgAAB1C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3131.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app.bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38122}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app.bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3131.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app.bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38122}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3132.0>, params: %{}, path_info: ["app.bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app.bundle.js", (truncated) 14:08:25.105 [info] GET /main.bundle.js 14:08:25.105 [debug] QUERY OK source="settings" db=0.3ms idle=299.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.105 [debug] QUERY OK source="settings" db=0.2ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.106 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.106 [error] #PID<0.3134.0> running PinchflatWeb.Endpoint (connection #PID<0.3133.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /main.bundle.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /main.bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3133.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/main.bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38124}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3134.0>, params: %{}, path_info: ["main.bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/main.bundle.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dZwv-r4rd8gAAAFk"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3133.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/main.bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38124}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /main.bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3133.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/main.bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38124}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3134.0>, params: %{}, path_info: ["main.bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/main.bundle (truncated) 14:08:25.205 [info] GET /vendor.js 14:08:25.205 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:08:25.206 [debug] QUERY OK source="settings" db=0.3ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.206 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.206 [error] #PID<0.3136.0> running PinchflatWeb.Endpoint (connection #PID<0.3135.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /vendor.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /vendor (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3135.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/vendor.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38132}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3136.0>, params: %{}, path_info: ["vendor"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/vendor.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4daIqxjtFbm0AAAGE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3135.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/vendor.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38132}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /vendor (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3135.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/vendor.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38132}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3136.0>, params: %{}, path_info: ["vendor"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/vendor.js", resp_body: nil, resp_coo (truncated) 14:08:25.306 [info] GET /chunk.js 14:08:25.306 [debug] QUERY OK source="settings" db=0.1ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.307 [debug] QUERY OK source="settings" db=0.3ms idle=200.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.307 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.307 [error] #PID<0.3138.0> running PinchflatWeb.Endpoint (connection #PID<0.3137.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /chunk.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /chunk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3137.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/chunk.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38134}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3138.0>, params: %{}, path_info: ["chunk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/chunk.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dagticIxaqEAAAGk"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3137.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/chunk.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38134}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /chunk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3137.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/chunk.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38134}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3138.0>, params: %{}, path_info: ["chunk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/chunk.js", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:25.407 [info] GET /static/js/main.js 14:08:25.408 [debug] QUERY OK source="settings" db=0.3ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.408 [debug] QUERY OK source="settings" db=0.2ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.408 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.410 [error] #PID<0.3140.0> running PinchflatWeb.Endpoint (connection #PID<0.3139.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /static/js/main.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /static/js/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38150}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3140.0>, params: %{}, path_info: ["static", "js", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/static/js/main.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4da43ftx9fZkAAAHE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38150}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /static/js/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3139.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38150}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3140.0>, params: %{}, path_info: ["static", "js", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ] (truncated) 14:08:25.508 [info] GET /static/js/app.js 14:08:25.509 [debug] QUERY OK source="settings" db=0.2ms idle=217.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.509 [debug] QUERY OK source="settings" db=0.1ms idle=202.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.509 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.509 [error] #PID<0.3142.0> running PinchflatWeb.Endpoint (connection #PID<0.3141.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /static/js/app.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /static/js/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3141.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38160}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3142.0>, params: %{}, path_info: ["static", "js", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/static/js/app.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dbQ-cQxTKaAAAB1i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3141.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38160}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /static/js/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3141.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38160}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3142.0>, params: %{}, path_info: ["static", "js", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:25.608 [info] GET /static/js/bundle.js 14:08:25.608 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=301.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.608 [debug] QUERY OK source="settings" db=0.1ms idle=200.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.608 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.609 [error] #PID<0.3144.0> running PinchflatWeb.Endpoint (connection #PID<0.3143.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /static/js/bundle.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /static/js/bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3143.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38164}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3144.0>, params: %{}, path_info: ["static", "js", "bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/static/js/bundle.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dbotnda61D4AAB2C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3143.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38164}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /static/js/bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3143.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/static/js/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38164}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3144.0>, params: %{}, path_info: ["static", "js", "bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.24 (truncated) 14:08:25.707 [info] GET /dist/main.js 14:08:25.708 [debug] QUERY OK source="settings" db=0.1ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.708 [debug] QUERY OK source="settings" db=0.1ms idle=199.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.708 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.708 [error] #PID<0.3146.0> running PinchflatWeb.Endpoint (connection #PID<0.3145.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /dist/main.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /dist/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3145.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38178}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3146.0>, params: %{}, path_info: ["dist", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/dist/main.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dcAc3lJxCHMAAB2i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3145.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38178}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /dist/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3145.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38178}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3146.0>, params: %{}, path_info: ["dist", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/dist/main.js", (truncated) 14:08:25.807 [info] GET /dist/app.js 14:08:25.807 [debug] QUERY OK source="settings" db=0.1ms idle=298.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.808 [debug] QUERY OK source="settings" db=0.1ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.808 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.808 [error] #PID<0.3148.0> running PinchflatWeb.Endpoint (connection #PID<0.3147.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /dist/app.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /dist/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3147.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38194}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3148.0>, params: %{}, path_info: ["dist", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/dist/app.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dcYPfQH3ruAAAAHk"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3147.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38194}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /dist/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3147.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38194}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3148.0>, params: %{}, path_info: ["dist", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/dist/app.js", resp_bod (truncated) 14:08:25.907 [info] GET /dist/bundle.js 14:08:25.907 [debug] QUERY OK source="settings" db=0.2ms idle=298.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.908 [debug] QUERY OK source="settings" db=0.2ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:25.908 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:25.908 [error] #PID<0.3150.0> running PinchflatWeb.Endpoint (connection #PID<0.3149.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /dist/bundle.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /dist/bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3149.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38202}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3150.0>, params: %{}, path_info: ["dist", "bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/dist/bundle.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dcwDQ3pyTO4AAB3C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3149.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38202}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /dist/bundle (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3149.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/dist/bundle.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38202}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3150.0>, params: %{}, path_info: ["dist", "bundle"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/dist/ (truncated) 14:08:26.006 [info] GET /build/static/js/main.js 14:08:26.007 [debug] QUERY OK source="settings" db=0.2ms idle=298.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.007 [debug] QUERY OK source="settings" db=0.2ms idle=199.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.007 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.008 [error] #PID<0.3152.0> running PinchflatWeb.Endpoint (connection #PID<0.3151.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /build/static/js/main.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /build/static/js/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3151.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/build/static/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38206}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3152.0>, params: %{}, path_info: ["build", "static", "js", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/build/static/js/main.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ddHwxZUjZZYAAB3i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3151.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/build/static/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38206}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /build/static/js/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3151.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/build/static/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38206}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3152.0>, params: %{}, path_info: ["build", "static", "js", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "htt (truncated) 14:08:26.106 [info] GET /assets/index.js 14:08:26.107 [debug] QUERY OK source="settings" db=0.4ms idle=298.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.107 [debug] QUERY OK source="settings" db=0.3ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.107 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.108 [error] #PID<0.3154.0> running PinchflatWeb.Endpoint (connection #PID<0.3153.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /assets/index.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /assets/index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3153.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/assets/index.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38210}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3154.0>, params: %{}, path_info: ["assets", "index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/assets/index.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ddflIR5CyD4AAB4C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3153.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/assets/index.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38210}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /assets/index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3153.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/assets/index.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38210}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3154.0>, params: %{}, path_info: ["assets", "index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path (truncated) 14:08:26.409 [info] GET /js/app.js 14:08:26.410 [debug] QUERY OK source="settings" db=0.3ms idle=402.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.410 [debug] QUERY OK source="settings" db=0.2ms idle=402.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.410 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.411 [error] #PID<0.3158.0> running PinchflatWeb.Endpoint (connection #PID<0.3157.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /js/app.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /js/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/js/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38230}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3158.0>, params: %{}, path_info: ["js", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/js/app.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4denq29vxgysAAB4i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/js/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38230}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /js/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3157.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/js/app.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38230}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3158.0>, params: %{}, path_info: ["js", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/js/app.js", resp_body: nil, re (truncated) 14:08:26.509 [info] GET /js/main.js 14:08:26.510 [debug] QUERY OK source="settings" db=0.4ms idle=402.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.510 [debug] QUERY OK source="settings" db=0.6ms idle=402.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.511 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.511 [error] #PID<0.3160.0> running PinchflatWeb.Endpoint (connection #PID<0.3159.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /js/main.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /js/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3159.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38234}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3160.0>, params: %{}, path_info: ["js", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/js/main.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4de_mvIAmtZIAAB5C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3159.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38234}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /js/main (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3159.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/js/main.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38234}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3160.0>, params: %{}, path_info: ["js", "main"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/js/main.js", resp_body: nil, (truncated) 14:08:26.609 [info] GET /settings.py 14:08:26.610 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 14:08:26.610 [debug] QUERY OK source="settings" db=0.4ms idle=317.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.612 [debug] QUERY OK source="settings" db=0.6ms idle=201.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.613 [debug] QUERY OK source="settings" db=0.9ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.615 [debug] QUERY OK source="settings" db=1.5ms idle=103.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.618 [info] Sent 200 in 8ms 14:08:26.720 [info] GET /config.py 14:08:26.722 [debug] QUERY OK source="settings" db=2.0ms idle=209.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.724 [debug] QUERY OK source="settings" db=1.0ms queue=0.3ms idle=111.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.724 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.724 [error] #PID<0.3164.0> running PinchflatWeb.Endpoint (connection #PID<0.3163.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config.py ** (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.3163.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.py", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38250}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3164.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.py", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dfx3yWMnWvoAAB6C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3163.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.py", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38250}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3163.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.py", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38250}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3164.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.py", resp_body: nil, resp_coo (truncated) 14:08:26.822 [info] GET /secrets.py 14:08:26.825 [debug] QUERY OK source="settings" db=0.5ms queue=0.8ms idle=211.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.825 [debug] QUERY OK source="settings" db=0.4ms idle=211.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.825 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.826 [error] #PID<0.3166.0> running PinchflatWeb.Endpoint (connection #PID<0.3165.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /secrets.py ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3165.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.py", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38254}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3166.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.py", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dgKTxeP7_osAAB6i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3165.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.py", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38254}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3165.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.py", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38254}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3166.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.py", resp_body: nil, (truncated) 14:08:26.924 [info] GET /config/secrets.yml 14:08:26.925 [debug] QUERY OK source="settings" db=0.7ms idle=309.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.926 [debug] QUERY OK source="settings" db=0.9ms idle=202.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:26.926 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:26.927 [error] #PID<0.3168.0> running PinchflatWeb.Endpoint (connection #PID<0.3167.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/secrets.yml ** (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/secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3167.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/secrets.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38264}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3168.0>, params: %{}, path_info: ["config", "secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/secrets.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dgihqCeOS6gAAB7C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3167.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/secrets.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38264}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3167.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/secrets.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38264}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3168.0>, params: %{}, path_info: ["config", "secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:27.025 [info] GET /config/master.key 14:08:27.027 [debug] QUERY OK source="settings" db=1.1ms idle=302.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.027 [debug] QUERY OK source="settings" db=0.1ms idle=202.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.027 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.028 [error] #PID<0.3170.0> running PinchflatWeb.Endpoint (connection #PID<0.3169.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/master.key ** (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/master (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3169.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/master.key", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38272}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3170.0>, params: %{}, path_info: ["config", "master"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/master.key", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dg6t3umfPeIAAB7i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3169.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/master.key", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38272}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/master (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3169.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/master.key", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38272}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3170.0>, params: %{}, path_info: ["config", "master"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:27.126 [info] GET /wp-config.php.bak 14:08:27.128 [debug] QUERY OK source="settings" db=0.9ms idle=301.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.128 [debug] QUERY OK source="settings" db=0.3ms idle=202.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.128 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.129 [error] #PID<0.3172.0> running PinchflatWeb.Endpoint (connection #PID<0.3171.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /wp-config.php.bak ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3171.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.bak", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38282}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3172.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/wp-config.php.bak", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dhSxT8WbhpIAAB8C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3171.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.bak", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38282}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3171.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.bak", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38282}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3172.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], requ (truncated) 14:08:27.227 [info] GET /wp-config.php.old 14:08:27.227 [debug] QUERY OK source="settings" db=0.2ms idle=301.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.228 [debug] QUERY OK source="settings" db=0.2ms idle=200.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.228 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.228 [error] #PID<0.3174.0> running PinchflatWeb.Endpoint (connection #PID<0.3173.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /wp-config.php.old ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3173.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.old", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38288}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3174.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/wp-config.php.old", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dhqv82jbHVIAAB8i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3173.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.old", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38288}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3173.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.old", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38288}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3174.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], requ (truncated) 14:08:27.327 [info] GET /wp-config.php.save 14:08:27.327 [debug] QUERY OK source="settings" db=0.2ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.328 [debug] QUERY OK source="settings" db=0.3ms idle=199.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.328 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.329 [error] #PID<0.3176.0> running PinchflatWeb.Endpoint (connection #PID<0.3175.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /wp-config.php.save ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3175.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.save", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38298}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3176.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/wp-config.php.save", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4diCnMobh3HoAAB9C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3175.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.save", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38298}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3175.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.save", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38298}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3176.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:27.427 [info] GET /wp-config.php.txt 14:08:27.428 [debug] QUERY OK source="settings" db=0.5ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.429 [debug] QUERY OK source="settings" db=0.4ms idle=200.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.429 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.430 [error] #PID<0.3178.0> running PinchflatWeb.Endpoint (connection #PID<0.3177.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /wp-config.php.txt ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38308}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3178.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/wp-config.php.txt", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4diabRfIrF9YAAB9i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38308}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config.php (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3177.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php.txt", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38308}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3178.0>, params: %{}, path_info: ["wp-config.php"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], requ (truncated) 14:08:27.528 [info] GET /wp-config.php~ 14:08:27.529 [debug] QUERY OK source="settings" db=1.0ms idle=233.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.529 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:08:27.529 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.530 [error] #PID<0.3180.0> running PinchflatWeb.Endpoint (connection #PID<0.3179.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /wp-config.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 /wp-config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php~", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38324}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3180.0>, params: %{}, path_info: ["wp-config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/wp-config.php~", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4diygiCWi2BUAAB-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.3179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php~", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38324}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /wp-config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3179.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/wp-config.php~", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38324}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3180.0>, params: %{}, path_info: ["wp-config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/wp-config.php~", (truncated) 14:08:27.629 [info] GET /config/app.php 14:08:27.630 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=301.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.631 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.631 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.632 [error] #PID<0.3182.0> running PinchflatWeb.Endpoint (connection #PID<0.3181.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/app.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 /config/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3181.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/app.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38328}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3182.0>, params: %{}, path_info: ["config", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/app.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4djKjxoI4JkwAAB-i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3181.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/app.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38328}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/app (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3181.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/app.php", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38328}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3182.0>, params: %{}, path_info: ["config", "app"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/ap (truncated) 14:08:27.731 [info] GET /application.properties 14:08:27.732 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:08:27.733 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=202.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.733 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.733 [error] #PID<0.3184.0> running PinchflatWeb.Endpoint (connection #PID<0.3183.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /application.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 /application (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3183.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38330}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3184.0>, params: %{}, path_info: ["application"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/application.properties", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dji_Q5YM1y4AAB_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.3183.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38330}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3183.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38330}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3184.0>, params: %{}, path_info: ["application"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:27.834 [info] GET /application.yml 14:08:27.835 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=305.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.835 [debug] QUERY OK source="settings" db=0.1ms idle=205.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.835 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.835 [error] #PID<0.3186.0> running PinchflatWeb.Endpoint (connection #PID<0.3185.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /application.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3185.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38344}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3186.0>, params: %{}, path_info: ["application"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/application.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dj7jNiZESmMAAB_i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3185.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38344}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3185.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38344}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3186.0>, params: %{}, path_info: ["application"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/applic (truncated) 14:08:27.934 [info] GET /application.yaml 14:08:27.935 [debug] QUERY OK source="settings" db=0.9ms idle=303.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.936 [debug] QUERY OK source="settings" db=0.6ms queue=0.2ms idle=203.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:27.936 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:27.937 [error] #PID<0.3188.0> running PinchflatWeb.Endpoint (connection #PID<0.3187.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /application.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3187.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38352}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3188.0>, params: %{}, path_info: ["application"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/application.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dkTTXRAzocoAACAC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3187.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38352}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3187.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38352}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3188.0>, params: %{}, path_info: ["application"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/a (truncated) 14:08:28.035 [info] GET /application-dev.properties 14:08:28.036 [debug] QUERY OK source="settings" db=0.1ms idle=302.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.036 [debug] QUERY OK source="settings" db=0.1ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.036 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.036 [error] #PID<0.3190.0> running PinchflatWeb.Endpoint (connection #PID<0.3189.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /application-dev.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 /application-dev (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3189.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application-dev.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38368}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3190.0>, params: %{}, path_info: ["application-dev"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/application-dev.properties", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dkrb1iNyjKQAAAxh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3189.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application-dev.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38368}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application-dev (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3189.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application-dev.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38368}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3190.0>, params: %{}, path_info: ["application-dev"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-r (truncated) 14:08:28.057 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dI64JeCIO8k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e9/c5/e9c535ecf7634670bb307b55fd3c228d69412be8fe92b32e3ce727d1f820f81a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:08:28.077 [debug] Running yt-dlp command for action: download_thumbnail 14:08:28.078 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=242.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.078 [debug] QUERY OK source="settings" db=0.0ms idle=142.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.078 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:08:28.079 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dI64JeCIO8k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/27/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c4/4d/c44dd30a201feb4fa5c574101b89cbb9d922bf43b413faa4490930c0811ccacd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:08:28.135 [info] GET /application-prod.properties 14:08:28.136 [debug] QUERY OK source="settings" db=0.2ms idle=99.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.136 [debug] QUERY OK source="settings" db=0.3ms idle=99.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.136 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.137 [error] #PID<0.3195.0> running PinchflatWeb.Endpoint (connection #PID<0.3194.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /application-prod.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 /application-prod (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3194.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application-prod.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38372}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3195.0>, params: %{}, path_info: ["application-prod"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/application-prod.properties", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dlDTGOWT_f4AAAyB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3194.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application-prod.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38372}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /application-prod (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3194.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/application-prod.properties", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38372}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3195.0>, params: %{}, path_info: ["application-prod"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, (truncated) 14:08:28.235 [info] GET /appsettings.json 14:08:28.236 [debug] QUERY OK source="settings" db=0.6ms idle=157.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.237 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=158.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.237 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.238 [error] #PID<0.3197.0> running PinchflatWeb.Endpoint (connection #PID<0.3196.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /appsettings.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 /appsettings (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3196.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38384}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3197.0>, params: %{}, path_info: ["appsettings"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/appsettings.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dlbKN65kC1QAACAi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3196.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38384}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /appsettings (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3196.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38384}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3197.0>, params: %{}, path_info: ["appsettings"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/a (truncated) 14:08:28.336 [info] GET /appsettings.Development.json 14:08:28.337 [debug] QUERY OK source="settings" db=0.3ms idle=201.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.337 [debug] QUERY OK source="settings" db=0.2ms idle=201.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.338 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.338 [error] #PID<0.3199.0> running PinchflatWeb.Endpoint (connection #PID<0.3198.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /appsettings.Development.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 /appsettings.Development (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3198.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.Development.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38400}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3199.0>, params: %{}, path_info: ["appsettings.Development"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/appsettings.Development.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dlzTQL9wu3YAACBC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3198.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.Development.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38400}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /appsettings.Development (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3198.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.Development.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38400}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3199.0>, params: %{}, path_info: ["appsettings.Development"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forw (truncated) 14:08:28.436 [info] GET /appsettings.Production.json 14:08:28.437 [debug] QUERY OK source="settings" db=0.3ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.437 [debug] QUERY OK source="settings" db=0.2ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.437 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.438 [error] #PID<0.3201.0> running PinchflatWeb.Endpoint (connection #PID<0.3200.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /appsettings.Production.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 /appsettings.Production (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.Production.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38412}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3201.0>, params: %{}, path_info: ["appsettings.Production"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/appsettings.Production.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dmLF5gJ94yUAACBi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.Production.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38412}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /appsettings.Production (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3200.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/appsettings.Production.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38412}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3201.0>, params: %{}, path_info: ["appsettings.Production"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-sch (truncated) 14:08:28.536 [info] GET /config.yaml 14:08:28.537 [debug] QUERY OK source="settings" db=0.4ms idle=239.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.537 [debug] QUERY OK source="settings" db=0.4ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.537 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.538 [error] #PID<0.3203.0> running PinchflatWeb.Endpoint (connection #PID<0.3202.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config.yaml ** (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.3202.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38420}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3203.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dmi4FOvmzIMAACCC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3202.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38420}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3202.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38420}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3203.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.yaml", resp_body: nil, (truncated) 14:08:28.636 [info] GET /config.yml 14:08:28.637 [debug] QUERY OK source="settings" db=0.2ms idle=298.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.637 [debug] QUERY OK source="settings" db=0.3ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.637 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.638 [error] #PID<0.3205.0> running PinchflatWeb.Endpoint (connection #PID<0.3204.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config.yml ** (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.3204.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38436}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3205.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dm6vaA9AviMAACCi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3204.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38436}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3204.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38436}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3205.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.yml", resp_body: nil, re (truncated) 14:08:28.736 [info] GET /config.toml 14:08:28.737 [debug] QUERY OK source="settings" db=0.4ms idle=299.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.737 [debug] QUERY OK source="settings" db=0.3ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.737 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.738 [error] #PID<0.3207.0> running PinchflatWeb.Endpoint (connection #PID<0.3206.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config.toml ** (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.3206.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38452}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3207.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.toml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dnSlrbydjpwAACDC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3206.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38452}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3206.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38452}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3207.0>, params: %{}, path_info: ["config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config.toml", resp_body: nil, (truncated) 14:08:28.836 [info] GET /serverless.yml 14:08:28.837 [debug] QUERY OK source="settings" db=0.5ms idle=299.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.838 [debug] QUERY OK source="settings" db=0.5ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.838 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.838 [error] #PID<0.3209.0> running PinchflatWeb.Endpoint (connection #PID<0.3208.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /serverless.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /serverless (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3208.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/serverless.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38464}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3209.0>, params: %{}, path_info: ["serverless"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/serverless.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dnqbUbPHdd0AACDi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3208.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/serverless.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38464}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /serverless (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3208.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/serverless.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38464}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3209.0>, params: %{}, path_info: ["serverless"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/serverless.yml" (truncated) 14:08:28.937 [info] GET /serverless.yaml 14:08:28.939 [debug] QUERY OK source="settings" db=1.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 [] 14:08:28.940 [debug] QUERY OK source="settings" db=0.8ms idle=202.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:28.940 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:28.940 [error] #PID<0.3211.0> running PinchflatWeb.Endpoint (connection #PID<0.3210.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /serverless.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /serverless (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3210.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/serverless.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38476}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3211.0>, params: %{}, path_info: ["serverless"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/serverless.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4doClmujxi_8AACEC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3210.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/serverless.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38476}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /serverless (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3210.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/serverless.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38476}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3211.0>, params: %{}, path_info: ["serverless"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/serverless (truncated) 14:08:29.039 [info] GET /config/production.json 14:08:29.039 [debug] QUERY OK source="settings" db=0.2ms idle=301.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.040 [debug] QUERY OK source="settings" db=0.4ms idle=202.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.040 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.040 [error] #PID<0.3213.0> running PinchflatWeb.Endpoint (connection #PID<0.3212.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/production.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/production (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3212.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/production.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38490}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3213.0>, params: %{}, path_info: ["config", "production"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/production.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4doayAc57y5UAACEi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3212.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/production.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38490}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/production (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3212.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/production.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38490}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3213.0>, params: %{}, path_info: ["config", "production"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip (truncated) 14:08:29.139 [info] GET /config/development.json 14:08:29.140 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:08:29.140 [debug] QUERY OK source="settings" db=0.1ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.140 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.140 [error] #PID<0.3215.0> running PinchflatWeb.Endpoint (connection #PID<0.3214.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/development.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/development (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3214.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/development.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38506}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3215.0>, params: %{}, path_info: ["config", "development"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/development.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4doyrIKJGKEsAACFC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3214.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/development.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38506}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/development (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3214.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/development.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38506}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3215.0>, params: %{}, path_info: ["config", "development"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {" (truncated) 14:08:29.239 [info] GET /config/default.json 14:08:29.239 [debug] QUERY OK source="settings" db=0.2ms idle=299.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.240 [debug] QUERY OK source="settings" db=0.1ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.240 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.240 [error] #PID<0.3217.0> running PinchflatWeb.Endpoint (connection #PID<0.3216.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/default.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/default (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3216.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/default.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38522}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3217.0>, params: %{}, path_info: ["config", "default"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/default.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dpKbgcOcNJQAACFi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3216.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/default.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38522}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/default (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3216.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/default.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38522}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3217.0>, params: %{}, path_info: ["config", "default"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:29.339 [info] GET /config/local.json 14:08:29.339 [debug] QUERY OK source="settings" db=0.2ms idle=199.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.339 [debug] QUERY OK source="settings" db=0.2ms idle=199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.339 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.340 [error] #PID<0.3219.0> running PinchflatWeb.Endpoint (connection #PID<0.3218.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/local.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/local (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3218.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/local.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38532}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3219.0>, params: %{}, path_info: ["config", "local"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/local.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dpiNWMMg6UMAACGC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3218.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/local.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38532}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/local (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3218.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/local.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38532}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3219.0>, params: %{}, path_info: ["config", "local"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], re (truncated) 14:08:29.438 [info] GET /conf/settings.json 14:08:29.439 [debug] QUERY OK source="settings" db=0.1ms idle=199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.439 [debug] QUERY OK source="settings" db=0.1ms idle=199.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.439 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.439 [error] #PID<0.3221.0> running PinchflatWeb.Endpoint (connection #PID<0.3220.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /conf/settings.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 /conf/settings (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3220.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/conf/settings.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38540}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3221.0>, params: %{}, path_info: ["conf", "settings"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/conf/settings.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dp5_LT78jBgAACGi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3220.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/conf/settings.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38540}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /conf/settings (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3220.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/conf/settings.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38540}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3221.0>, params: %{}, path_info: ["conf", "settings"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:29.538 [info] GET /data/config.json 14:08:29.539 [debug] QUERY OK source="settings" db=0.4ms idle=239.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.539 [debug] QUERY OK source="settings" db=0.3ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.539 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.539 [error] #PID<0.3223.0> running PinchflatWeb.Endpoint (connection #PID<0.3222.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /data/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 /data/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3222.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/data/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38544}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3223.0>, params: %{}, path_info: ["data", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/data/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dqRwAB6CvjIAACHC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3222.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/data/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38544}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /data/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3222.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/data/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38544}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3223.0>, params: %{}, path_info: ["data", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_pat (truncated) 14:08:29.638 [info] GET /actuator/env 14:08:29.639 [debug] QUERY OK source="settings" db=0.5ms idle=298.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.640 [debug] QUERY OK source="settings" db=0.9ms idle=200.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.640 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.641 [error] #PID<0.3225.0> running PinchflatWeb.Endpoint (connection #PID<0.3224.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.3224.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38556}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3225.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dqpm-1ttHnEAACHi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3224.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38556}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /actuator/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3224.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38556}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3225.0>, params: %{}, path_info: ["actuator", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/actuator/en (truncated) 14:08:29.739 [info] GET /actuator/configprops 14:08:29.739 [debug] QUERY OK source="settings" db=0.2ms idle=299.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.740 [debug] QUERY OK source="settings" db=0.2ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.740 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.740 [error] #PID<0.3227.0> running PinchflatWeb.Endpoint (connection #PID<0.3226.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /actuator/configprops ** (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/configprops (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3226.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/configprops", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38564}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3227.0>, params: %{}, path_info: ["actuator", "configprops"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/actuator/configprops", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4drBnOxLOCWwAACIC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3226.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/configprops", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38564}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /actuator/configprops (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3226.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/configprops", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38564}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3227.0>, params: %{}, path_info: ["actuator", "configprops"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real- (truncated) 14:08:29.839 [info] GET /api/config 14:08:29.839 [debug] QUERY OK source="settings" db=0.4ms idle=299.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.840 [debug] QUERY OK source="settings" db=0.1ms idle=200.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.840 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.840 [error] #PID<0.3229.0> running PinchflatWeb.Endpoint (connection #PID<0.3228.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /api/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 /api/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3228.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38578}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3229.0>, params: %{}, path_info: ["api", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4drZdXvGdVPYAACIi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3228.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38578}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /api/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3228.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38578}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3229.0>, params: %{}, path_info: ["api", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/config", resp_b (truncated) 14:08:29.939 [info] GET /api/settings 14:08:29.941 [debug] QUERY OK source="settings" db=1.8ms idle=299.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:29.941 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:08:29.941 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:29.942 [error] #PID<0.3231.0> running PinchflatWeb.Endpoint (connection #PID<0.3230.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /api/settings ** (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/settings (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3230.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/settings", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38586}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3231.0>, params: %{}, path_info: ["api", "settings"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/settings", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4drxTdRn0EyQAACJC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3230.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/settings", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38586}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /api/settings (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3230.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/settings", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38586}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3231.0>, params: %{}, path_info: ["api", "settings"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/setting (truncated) 14:08:30.040 [info] GET /api/env 14:08:30.041 [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 [] 14:08:30.041 [debug] QUERY OK source="settings" db=0.1ms idle=201.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.041 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.041 [error] #PID<0.3233.0> running PinchflatWeb.Endpoint (connection #PID<0.3232.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /api/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 /api/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3232.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38588}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3233.0>, params: %{}, path_info: ["api", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dsJezSqT87kAACJi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3232.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38588}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /api/env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3232.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38588}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3233.0>, params: %{}, path_info: ["api", "env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/api/env", resp_body: nil, resp_cooki (truncated) 14:08:30.140 [info] GET /backup/.env 14:08:30.140 [debug] QUERY OK source="settings" db=0.3ms idle=300.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.141 [debug] QUERY OK source="settings" db=0.3ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.141 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.141 [error] #PID<0.3235.0> running PinchflatWeb.Endpoint (connection #PID<0.3234.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /backup/.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 /backup/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3234.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backup/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38598}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3235.0>, params: %{}, path_info: ["backup", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/backup/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dshPyEMApA0AACKC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3234.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backup/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38598}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /backup/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3234.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backup/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38598}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3235.0>, params: %{}, path_info: ["backup", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/backup/.env", resp_body: n (truncated) 14:08:30.240 [info] GET /backups/.env 14:08:30.240 [debug] QUERY OK source="settings" db=0.2ms idle=298.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.241 [debug] QUERY OK source="settings" db=0.2ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.241 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.241 [error] #PID<0.3237.0> running PinchflatWeb.Endpoint (connection #PID<0.3236.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /backups/.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 /backups/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3236.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backups/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38602}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3237.0>, params: %{}, path_info: ["backups", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/backups/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4ds5FTJcVjR4AACKi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3236.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backups/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38602}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /backups/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3236.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/backups/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38602}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3237.0>, params: %{}, path_info: ["backups", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/backups/.env", re (truncated) 14:08:30.339 [info] GET /old/.env 14:08:30.340 [debug] QUERY OK source="settings" db=0.4ms idle=199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.341 [debug] QUERY OK source="settings" db=0.4ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.341 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.341 [error] #PID<0.3239.0> running PinchflatWeb.Endpoint (connection #PID<0.3238.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /old/.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 /old/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3238.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/old/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38608}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3239.0>, params: %{}, path_info: ["old", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/old/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dtQ1aAhi0tUAACLC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3238.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/old/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38608}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /old/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3238.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/old/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38608}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3239.0>, params: %{}, path_info: ["old", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/old/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:30.440 [info] GET /temp/.env 14:08:30.440 [debug] QUERY OK source="settings" db=0.3ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.441 [debug] QUERY OK source="settings" db=0.2ms idle=199.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.441 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.441 [error] #PID<0.3241.0> running PinchflatWeb.Endpoint (connection #PID<0.3240.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /temp/.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 /temp/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3240.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/temp/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38620}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3241.0>, params: %{}, path_info: ["temp", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/temp/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dtoxjfg0IBkAACLi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3240.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/temp/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38620}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /temp/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3240.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/temp/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38620}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3241.0>, params: %{}, path_info: ["temp", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/temp/.env", resp_body: nil, resp_c (truncated) 14:08:30.540 [info] GET /tmp/.env 14:08:30.540 [debug] QUERY OK source="settings" db=0.2ms idle=240.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.540 [debug] QUERY OK source="settings" db=0.2ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.541 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.541 [error] #PID<0.3243.0> running PinchflatWeb.Endpoint (connection #PID<0.3242.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /tmp/.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 /tmp/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3242.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/tmp/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38628}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3243.0>, params: %{}, path_info: ["tmp", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/tmp/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4duAkhGxxA_UAACMC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3242.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/tmp/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38628}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /tmp/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3242.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/tmp/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38628}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3243.0>, params: %{}, path_info: ["tmp", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/tmp/.env", resp_body: nil, resp_cookies: %{ (truncated) 14:08:30.640 [info] GET /.streamlit/secrets.toml 14:08:30.641 [debug] QUERY OK source="settings" db=0.2ms idle=299.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.641 [debug] QUERY OK source="settings" db=0.1ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.641 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.641 [error] #PID<0.3245.0> running PinchflatWeb.Endpoint (connection #PID<0.3244.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.streamlit/secrets.toml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.streamlit/secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3244.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.streamlit/secrets.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38644}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3245.0>, params: %{}, path_info: [".streamlit", "secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.streamlit/secrets.toml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4duYhlUnPprYAACMi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3244.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.streamlit/secrets.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38644}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.streamlit/secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3244.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.streamlit/secrets.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38644}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3245.0>, params: %{}, path_info: [".streamlit", "secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {" (truncated) 14:08:30.741 [info] GET /root/.streamlit/secrets.toml 14:08:30.742 [debug] QUERY OK source="settings" db=0.1ms idle=300.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.742 [debug] QUERY OK source="settings" db=0.1ms idle=201.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.742 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.742 [error] #PID<0.3247.0> running PinchflatWeb.Endpoint (connection #PID<0.3246.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.streamlit/secrets.toml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.streamlit/secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3246.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.streamlit/secrets.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38656}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3247.0>, params: %{}, path_info: ["root", ".streamlit", "secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.streamlit/secrets.toml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4duwm1GKSlNQAACNC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3246.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.streamlit/secrets.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38656}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.streamlit/secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3246.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.streamlit/secrets.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38656}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3247.0>, params: %{}, path_info: ["root", ".streamlit", "secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, (truncated) 14:08:30.841 [info] GET /root/.aws/credentials 14:08:30.841 [debug] QUERY OK source="settings" db=0.1ms idle=300.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.842 [debug] QUERY OK source="settings" db=0.3ms idle=200.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.842 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.842 [error] #PID<0.3249.0> running PinchflatWeb.Endpoint (connection #PID<0.3248.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.aws/credentials ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3248.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38670}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3249.0>, params: %{}, path_info: ["root", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.aws/credentials", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dvIZmSaddMgAACNi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3248.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38670}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3248.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38670}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3249.0>, params: %{}, path_info: ["root", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, (truncated) 14:08:30.941 [info] GET /home/ubuntu/.aws/credentials 14:08:30.941 [debug] QUERY OK source="settings" db=0.3ms idle=300.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.942 [debug] QUERY OK source="settings" db=0.1ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:30.942 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:30.943 [error] #PID<0.3251.0> running PinchflatWeb.Endpoint (connection #PID<0.3250.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/ubuntu/.aws/credentials ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3250.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38672}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3251.0>, params: %{}, path_info: ["home", "ubuntu", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/ubuntu/.aws/credentials", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dvgNob4JIQMAACOC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3250.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38672}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3250.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38672}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3251.0>, params: %{}, path_info: ["home", "ubuntu", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded- (truncated) 14:08:31.041 [info] GET /home/ec2-user/.aws/credentials 14:08:31.042 [debug] QUERY OK source="settings" db=0.3ms idle=299.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.042 [debug] QUERY OK source="settings" db=0.1ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.042 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.043 [error] #PID<0.3253.0> running PinchflatWeb.Endpoint (connection #PID<0.3252.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/ec2-user/.aws/credentials ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ec2-user/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3252.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ec2-user/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38686}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3253.0>, params: %{}, path_info: ["home", "ec2-user", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/ec2-user/.aws/credentials", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dv4K6MfIr5gAACOi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3252.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ec2-user/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38686}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ec2-user/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3252.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ec2-user/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38686}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3253.0>, params: %{}, path_info: ["home", "ec2-user", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, (truncated) 14:08:31.141 [info] GET /home/node/.aws/credentials 14:08:31.142 [debug] QUERY OK source="settings" db=0.3ms idle=299.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.143 [debug] QUERY OK source="settings" db=0.2ms idle=200.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.143 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.144 [error] #PID<0.3255.0> running PinchflatWeb.Endpoint (connection #PID<0.3254.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/node/.aws/credentials ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/node/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3254.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/node/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38694}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3255.0>, params: %{}, path_info: ["home", "node", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/node/.aws/credentials", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dwQB0OZ2QhEAACPC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3254.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/node/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38694}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/node/.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3254.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/node/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38694}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3255.0>, params: %{}, path_info: ["home", "node", ".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, (truncated) 14:08:31.242 [info] GET /terraform.tfvars 14:08:31.244 [debug] QUERY OK source="settings" db=1.2ms idle=300.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.245 [debug] QUERY OK source="settings" db=0.9ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.245 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.247 [error] #PID<0.3257.0> running PinchflatWeb.Endpoint (connection #PID<0.3256.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /terraform.tfvars ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /terraform (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3256.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/terraform.tfvars", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38704}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3257.0>, params: %{}, path_info: ["terraform"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/terraform.tfvars", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dwoDTMd3wYUAACPi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3256.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/terraform.tfvars", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38704}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /terraform (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3256.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/terraform.tfvars", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38704}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3257.0>, params: %{}, path_info: ["terraform"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/terraform (truncated) 14:08:31.303 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dI64JeCIO8k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/27/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c4/4d/c44dd30a201feb4fa5c574101b89cbb9d922bf43b413faa4490930c0811ccacd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:08:31.303 [debug] QUERY OK db=0.0ms idle=161.3ms begin [] 14:08:31.304 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:08:28Z], "/downloads/The Standup/2025-11-09 FFMPEG takes a Big Sleep/FFMPEG takes a Big Sleep [dI64JeCIO8k].mp4", ~U[2026-07-24 12:08:31Z], 27] 14:08:31.305 [debug] QUERY OK source="media_metadata" db=0.5ms 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/27/metadata.json.gz", "/config/metadata/media_items/27/thumbnail.jpg", 27, ~U[2026-07-24 12:08:31Z], ~U[2026-07-24 12:08:31Z]] 14:08:31.305 [debug] QUERY OK db=0.3ms commit [] 14:08:31.306 [debug] QUERY OK source="media_items" db=0.9ms idle=162.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [178928612, ~U[2026-07-24 12:08:31Z], 27] 14:08:31.306 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:08:31.307 [info] {"args":{"id":27},"id":31,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":41563182,"event":"job:stop","queue_time":524742802,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:08:31.314 [info] {"args":{"id":29},"id":33,"meta":{},"system_time":1784894911314492399,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:08:31.315 [debug] QUERY OK source="media_items" db=0.3ms idle=14.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [29] 14:08:31.315 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:08:31.316 [debug] QUERY OK source="sources" db=0.5ms idle=10.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:08:31.317 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:08:31.317 [debug] QUERY OK source="media_items" db=0.5ms 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 [29] 14:08:31.318 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [29] 14:08:31.320 [debug] QUERY OK source="media_profiles" db=0.9ms 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] 14:08:31.320 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.320 [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 [] 14:08:31.320 [debug] Running yt-dlp command for action: get_downloadable_status 14:08:31.321 [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 [] 14:08:31.321 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.321 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.322 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kP93L683UOE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/37/51/3751bdda56c3219e95aa229fc2fc45752e4252840b46e4b5963da0a25b92aa7f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:08:31.346 [info] GET /terraform.tfstate 14:08:31.350 [debug] QUERY OK source="settings" db=3.3ms idle=26.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.350 [debug] QUERY OK source="settings" db=0.4ms idle=29.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.351 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.351 [error] #PID<0.3262.0> running PinchflatWeb.Endpoint (connection #PID<0.3261.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /terraform.tfstate ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /terraform (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3261.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/terraform.tfstate", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38720}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3262.0>, params: %{}, path_info: ["terraform"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/terraform.tfstate", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dxA4v9yLtcYAACQC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3261.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/terraform.tfstate", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38720}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /terraform (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3261.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/terraform.tfstate", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38720}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3262.0>, params: %{}, path_info: ["terraform"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/terr (truncated) 14:08:31.450 [info] GET /ecosystem.config.js 14:08:31.452 [debug] QUERY OK source="settings" db=2.0ms idle=129.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.453 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=131.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.453 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.453 [error] #PID<0.3264.0> running PinchflatWeb.Endpoint (connection #PID<0.3263.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /ecosystem.config.js ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /ecosystem.config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3263.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecosystem.config.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38722}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3264.0>, params: %{}, path_info: ["ecosystem.config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/ecosystem.config.js", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dxZjbS3jGLoAACQi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3263.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecosystem.config.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38722}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /ecosystem.config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3263.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecosystem.config.js", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38722}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3264.0>, params: %{}, path_info: ["ecosystem.config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:31.554 [info] GET /secrets.yaml 14:08:31.556 [debug] QUERY OK source="settings" db=1.5ms queue=0.1ms idle=233.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.557 [debug] QUERY OK source="settings" db=0.4ms idle=206.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.557 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.557 [error] #PID<0.3266.0> running PinchflatWeb.Endpoint (connection #PID<0.3265.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /secrets.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3265.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38738}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3266.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dxyeF5Qwb0AAACRC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3265.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38738}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3265.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38738}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3266.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.yaml", resp_body: n (truncated) 14:08:31.656 [info] GET /secrets.yml 14:08:31.659 [debug] QUERY OK source="settings" db=2.1ms idle=305.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.662 [debug] QUERY OK source="settings" db=2.8ms idle=206.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.662 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.662 [error] #PID<0.3268.0> running PinchflatWeb.Endpoint (connection #PID<0.3267.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /secrets.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3267.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38750}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3268.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dyKxMvKSex0AACRi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3267.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38750}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /secrets (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3267.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/secrets.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38750}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3268.0>, params: %{}, path_info: ["secrets"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/secrets.yml", resp_body: nil, (truncated) 14:08:31.761 [info] GET /.secrets 14:08:31.761 [debug] QUERY OK source="settings" db=0.4ms idle=307.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.762 [debug] QUERY OK source="settings" db=0.3ms idle=205.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.762 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.763 [error] #PID<0.3270.0> running PinchflatWeb.Endpoint (connection #PID<0.3269.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.secrets ** (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.3269.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.secrets", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38762}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3270.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.secrets", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dyjrMxSjiaQAACSC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3269.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.secrets", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38762}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3269.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.secrets", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38762}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3270.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.secrets", resp_body: nil, resp_cookies: %{}, resp_head (truncated) 14:08:31.861 [info] GET /.env.vault 14:08:31.862 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=304.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.862 [debug] QUERY OK source="settings" db=0.3ms idle=203.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.863 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.863 [error] #PID<0.3272.0> running PinchflatWeb.Endpoint (connection #PID<0.3271.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.env.vault ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3271.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.vault", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38772}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3272.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.vault", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dy7q_LYi9zEAACSi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3271.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.vault", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38772}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.env (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3271.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env.vault", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38772}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3272.0>, params: %{}, path_info: [".env"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.env.vault", resp_body: nil, resp_cooki (truncated) 14:08:31.961 [info] GET /.aws/credentials 14:08:31.962 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:08:31.962 [debug] QUERY OK source="settings" db=0.2ms idle=200.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:31.962 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:31.963 [error] #PID<0.3274.0> running PinchflatWeb.Endpoint (connection #PID<0.3273.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.aws/credentials ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3273.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38778}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3274.0>, params: %{}, path_info: [".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.aws/credentials", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dzThL5Fzgm0AACTC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3273.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38778}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.aws/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3273.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.aws/credentials", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38778}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3274.0>, params: %{}, path_info: [".aws", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], (truncated) 14:08:32.061 [info] GET /.aws/config 14:08:32.062 [debug] QUERY OK source="settings" db=0.4ms idle=299.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.063 [debug] QUERY OK source="settings" db=0.3ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.063 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.063 [error] #PID<0.3276.0> running PinchflatWeb.Endpoint (connection #PID<0.3275.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.aws/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 /.aws/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3275.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.aws/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38784}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3276.0>, params: %{}, path_info: [".aws", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.aws/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4dzrX7Cu-vYgAAAyh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3275.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.aws/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38784}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.aws/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3275.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.aws/config", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38784}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3276.0>, params: %{}, path_info: [".aws", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.aws/config", (truncated) 14:08:32.162 [info] GET /.docker/config.json 14:08:32.163 [debug] QUERY OK source="settings" db=0.6ms idle=299.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.163 [debug] QUERY OK source="settings" db=0.2ms idle=200.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.163 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.164 [error] #PID<0.3278.0> running PinchflatWeb.Endpoint (connection #PID<0.3277.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.docker/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 /.docker/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3277.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.docker/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38796}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3278.0>, params: %{}, path_info: [".docker", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.docker/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d0DU8cQOPbsAACTi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3277.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.docker/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38796}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.docker/config (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3277.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.docker/config.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38796}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3278.0>, params: %{}, path_info: [".docker", "config"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:32.262 [info] GET /storage/framework/.env 14:08:32.263 [debug] QUERY OK source="settings" db=0.4ms 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 [] 14:08:32.263 [debug] QUERY OK source="settings" db=0.4ms idle=201.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.264 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.264 [error] #PID<0.3280.0> running PinchflatWeb.Endpoint (connection #PID<0.3279.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /storage/framework/.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 /storage/framework/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3279.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/storage/framework/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38800}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3280.0>, params: %{}, path_info: ["storage", "framework", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/storage/framework/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d0bSUCPnv6oAACUC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3279.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/storage/framework/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38800}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /storage/framework/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3279.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/storage/framework/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38800}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3280.0>, params: %{}, path_info: ["storage", "framework", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, { (truncated) 14:08:32.363 [info] GET /laravel/.env 14:08:32.363 [debug] QUERY OK source="settings" db=0.2ms idle=200.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.364 [debug] QUERY OK source="settings" db=0.1ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.364 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.364 [error] #PID<0.3282.0> running PinchflatWeb.Endpoint (connection #PID<0.3281.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /laravel/.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 /laravel/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3281.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/laravel/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38810}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3282.0>, params: %{}, path_info: ["laravel", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/laravel/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d0zQspYR9kcAACUi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3281.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/laravel/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38810}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /laravel/ (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3281.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/laravel/.env", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38810}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3282.0>, params: %{}, path_info: ["laravel", ""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/laravel/.env", re (truncated) 14:08:32.463 [info] GET /debug/vars 14:08:32.463 [debug] QUERY OK source="settings" db=0.3ms idle=199.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.464 [debug] QUERY OK source="settings" db=0.2ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.464 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.464 [error] #PID<0.3284.0> running PinchflatWeb.Endpoint (connection #PID<0.3283.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /debug/vars ** (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/vars (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3283.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/vars", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3284.0>, params: %{}, path_info: ["debug", "vars"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/debug/vars", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d1LCWjA6HgcAACVC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3283.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/vars", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /debug/vars (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3283.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/vars", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3284.0>, params: %{}, path_info: ["debug", "vars"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/debug/vars", resp_b (truncated) 14:08:32.562 [info] GET /.gcp/credentials.json 14:08:32.563 [debug] QUERY OK source="settings" db=0.4ms idle=261.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.563 [debug] QUERY OK source="settings" db=0.2ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.563 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.564 [error] #PID<0.3286.0> running PinchflatWeb.Endpoint (connection #PID<0.3285.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.gcp/credentials.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 /.gcp/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3285.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.gcp/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38830}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3286.0>, params: %{}, path_info: [".gcp", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.gcp/credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d1i07hWOgYsAACVi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3285.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.gcp/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38830}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.gcp/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3285.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.gcp/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38830}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3286.0>, params: %{}, path_info: [".gcp", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.5 (truncated) 14:08:32.662 [info] GET /.gcp/service-account.json 14:08:32.663 [debug] QUERY OK source="settings" db=0.1ms idle=298.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.663 [debug] QUERY OK source="settings" db=0.1ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.663 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.663 [error] #PID<0.3288.0> running PinchflatWeb.Endpoint (connection #PID<0.3287.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.gcp/service-account.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 /.gcp/service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3287.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.gcp/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38834}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3288.0>, params: %{}, path_info: [".gcp", "service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.gcp/service-account.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d16p484mq-oAACWC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3287.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.gcp/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38834}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.gcp/service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3287.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.gcp/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38834}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3288.0>, params: %{}, path_info: [".gcp", "service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https (truncated) 14:08:32.762 [info] GET /gcp-credentials.json 14:08:32.762 [debug] QUERY OK source="settings" db=0.2ms idle=298.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.763 [debug] QUERY OK source="settings" db=0.1ms idle=199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.763 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.763 [error] #PID<0.3290.0> running PinchflatWeb.Endpoint (connection #PID<0.3289.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /gcp-credentials.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 /gcp-credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3289.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/gcp-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38838}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3290.0>, params: %{}, path_info: ["gcp-credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/gcp-credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d2SZ0xXjeTQAAAzB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3289.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/gcp-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38838}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /gcp-credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3289.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/gcp-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38838}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3290.0>, params: %{}, path_info: ["gcp-credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:32.862 [info] GET /gcp-service-account.json 14:08:32.863 [debug] QUERY OK source="settings" db=0.3ms idle=298.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.863 [debug] QUERY OK source="settings" db=0.0ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.863 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.863 [error] #PID<0.3292.0> running PinchflatWeb.Endpoint (connection #PID<0.3291.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /gcp-service-account.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 /gcp-service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3291.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/gcp-service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38846}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3292.0>, params: %{}, path_info: ["gcp-service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/gcp-service-account.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d2qRpY5mLzQAACWi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3291.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/gcp-service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38846}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /gcp-service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3291.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/gcp-service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38846}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3292.0>, params: %{}, path_info: ["gcp-service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, (truncated) 14:08:32.962 [info] GET /service-account.json 14:08:32.962 [debug] QUERY OK source="settings" db=0.1ms idle=298.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.963 [debug] QUERY OK source="settings" db=0.1ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:32.963 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:32.963 [error] #PID<0.3294.0> running PinchflatWeb.Endpoint (connection #PID<0.3293.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /service-account.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 /service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3293.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38854}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3294.0>, params: %{}, path_info: ["service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/service-account.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d3CDawGhTREAACXC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3293.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38854}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3293.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38854}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3294.0>, params: %{}, path_info: ["service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} (truncated) 14:08:33.062 [info] GET /google-credentials.json 14:08:33.062 [debug] QUERY OK source="settings" db=0.4ms idle=299.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.063 [debug] QUERY OK source="settings" db=0.1ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.063 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.063 [error] #PID<0.3296.0> running PinchflatWeb.Endpoint (connection #PID<0.3295.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /google-credentials.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 /google-credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3295.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/google-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38856}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3296.0>, params: %{}, path_info: ["google-credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/google-credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d3Z4bY_6ReQAACXi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3295.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/google-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38856}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /google-credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3295.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/google-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38856}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3296.0>, params: %{}, path_info: ["google-credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real (truncated) 14:08:33.162 [info] GET /google-cloud-key.json 14:08:33.162 [debug] QUERY OK source="settings" db=0.1ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.163 [debug] QUERY OK source="settings" db=0.2ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.163 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.163 [error] #PID<0.3298.0> running PinchflatWeb.Endpoint (connection #PID<0.3297.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /google-cloud-key.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 /google-cloud-key (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3297.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/google-cloud-key.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38872}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3298.0>, params: %{}, path_info: ["google-cloud-key"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/google-cloud-key.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d3xuoP-1kRsAACYC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3297.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/google-cloud-key.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38872}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /google-cloud-key (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3297.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/google-cloud-key.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38872}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3298.0>, params: %{}, path_info: ["google-cloud-key"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242. (truncated) 14:08:33.263 [info] GET /firebase-adminsdk.json 14:08:33.263 [debug] QUERY OK source="settings" db=0.2ms idle=300.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.264 [debug] QUERY OK source="settings" db=0.1ms idle=200.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.264 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.264 [error] #PID<0.3300.0> running PinchflatWeb.Endpoint (connection #PID<0.3299.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /firebase-adminsdk.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 /firebase-adminsdk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3299.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/firebase-adminsdk.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38882}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3300.0>, params: %{}, path_info: ["firebase-adminsdk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/firebase-adminsdk.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d4JzPMC-WgwAACYi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3299.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/firebase-adminsdk.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38882}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /firebase-adminsdk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3299.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/firebase-adminsdk.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38882}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3300.0>, params: %{}, path_info: ["firebase-adminsdk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "15 (truncated) 14:08:33.363 [info] GET /firebase-credentials.json 14:08:33.364 [debug] QUERY OK source="settings" db=0.2ms idle=201.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.364 [debug] QUERY OK source="settings" db=0.4ms idle=201.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.364 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.365 [error] #PID<0.3302.0> running PinchflatWeb.Endpoint (connection #PID<0.3301.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /firebase-credentials.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 /firebase-credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3301.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/firebase-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38890}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3302.0>, params: %{}, path_info: ["firebase-credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/firebase-credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d4hubC-4gS4AACZC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3301.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/firebase-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38890}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /firebase-credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3301.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/firebase-credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38890}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3302.0>, params: %{}, path_info: ["firebase-credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, (truncated) 14:08:33.463 [info] GET /root/.config/gcloud/application_default_credentials.json 14:08:33.464 [debug] QUERY OK source="settings" db=0.4ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.464 [debug] QUERY OK source="settings" db=0.1ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.464 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.465 [error] #PID<0.3304.0> running PinchflatWeb.Endpoint (connection #PID<0.3303.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.config/gcloud/application_default_credentials.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 /root/.config/gcloud/application_default_credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3303.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38902}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3304.0>, params: %{}, path_info: ["root", ".config", "gcloud", "application_default_credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.config/gcloud/application_default_credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d45kAirVsx4AACZi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3303.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38902}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/gcloud/application_default_credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3303.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38902}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3304.0>, params: %{}, path_info: ["root", ".config", "gcloud", "application_default_credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "M (truncated) 14:08:33.563 [info] GET /root/.config/gcloud/credentials.db 14:08:33.564 [debug] QUERY OK source="settings" db=0.3ms idle=261.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.564 [debug] QUERY OK source="settings" db=0.2ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.564 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.565 [error] #PID<0.3306.0> running PinchflatWeb.Endpoint (connection #PID<0.3305.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.config/gcloud/credentials.db ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/gcloud/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3305.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/gcloud/credentials.db", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38918}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3306.0>, params: %{}, path_info: ["root", ".config", "gcloud", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.config/gcloud/credentials.db", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d5RcNJjw35YAACaC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3305.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/gcloud/credentials.db", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38918}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/gcloud/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3305.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/gcloud/credentials.db", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38918}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3306.0>, params: %{}, path_info: ["root", ".config", "gcloud", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "1 (truncated) 14:08:33.663 [info] GET /home/ubuntu/.config/gcloud/application_default_credentials.json 14:08:33.664 [debug] QUERY OK source="settings" db=0.3ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.664 [debug] QUERY OK source="settings" db=0.1ms idle=200.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.664 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.665 [error] #PID<0.3308.0> running PinchflatWeb.Endpoint (connection #PID<0.3307.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/ubuntu/.config/gcloud/application_default_credentials.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 /home/ubuntu/.config/gcloud/application_default_credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3307.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38924}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3308.0>, params: %{}, path_info: ["home", "ubuntu", ".config", "gcloud", "application_default_credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/ubuntu/.config/gcloud/application_default_credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d5pRkWV_g1AAACai"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3307.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38924}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.config/gcloud/application_default_credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3307.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38924}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3308.0>, params: %{}, path_info: ["home", "ubuntu", ".config", "gcloud", "application_default_credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host" (truncated) 14:08:33.763 [info] GET /home/node/.config/gcloud/application_default_credentials.json 14:08:33.764 [debug] QUERY OK source="settings" db=0.1ms idle=299.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.764 [debug] QUERY OK source="settings" db=0.1ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.764 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.765 [error] #PID<0.3310.0> running PinchflatWeb.Endpoint (connection #PID<0.3309.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/node/.config/gcloud/application_default_credentials.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 /home/node/.config/gcloud/application_default_credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3309.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/node/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3310.0>, params: %{}, path_info: ["home", "node", ".config", "gcloud", "application_default_credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/node/.config/gcloud/application_default_credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d6BIiFOfBFYAACbC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3309.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/node/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/node/.config/gcloud/application_default_credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3309.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/node/.config/gcloud/application_default_credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3310.0>, params: %{}, path_info: ["home", "node", ".config", "gcloud", "application_default_credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevin (truncated) 14:08:33.863 [info] GET /app/credentials.json 14:08:33.864 [debug] QUERY OK source="settings" db=0.2ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.864 [debug] QUERY OK source="settings" db=0.1ms idle=199.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.864 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.864 [error] #PID<0.3312.0> running PinchflatWeb.Endpoint (connection #PID<0.3311.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /app/credentials.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 /app/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3311.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38956}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3312.0>, params: %{}, path_info: ["app", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app/credentials.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d6Y8rljQ9H8AACbi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3311.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38956}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app/credentials (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3311.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/credentials.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38956}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3312.0>, params: %{}, path_info: ["app", "credentials"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93" (truncated) 14:08:33.963 [info] GET /app/service-account.json 14:08:33.963 [debug] QUERY OK source="settings" db=0.1ms idle=298.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.964 [debug] QUERY OK source="settings" db=0.1ms idle=199.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:33.964 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:33.964 [error] #PID<0.3314.0> running PinchflatWeb.Endpoint (connection #PID<0.3313.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /app/service-account.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 /app/service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3313.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36924}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3314.0>, params: %{}, path_info: ["app", "service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/app/service-account.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d6wt7m2HYJkAACcC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3313.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36924}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /app/service-account (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3313.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/app/service-account.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36924}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3314.0>, params: %{}, path_info: ["app", "service-account"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, (truncated) 14:08:34.062 [info] GET /config/gcp.json 14:08:34.063 [debug] QUERY OK source="settings" db=0.4ms idle=298.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.063 [debug] QUERY OK source="settings" db=0.0ms queue=0.2ms idle=199.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.064 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.064 [error] #PID<0.3316.0> running PinchflatWeb.Endpoint (connection #PID<0.3315.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /config/gcp.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/gcp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3315.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/gcp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3316.0>, params: %{}, path_info: ["config", "gcp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/config/gcp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d7IcmL0KbR0AACci"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3315.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/gcp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /config/gcp (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3315.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config/gcp.json", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3316.0>, params: %{}, path_info: ["config", "gcp"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/conf (truncated) 14:08:34.163 [info] GET /root/.config/hcloud/cli.toml 14:08:34.163 [debug] QUERY OK source="settings" db=0.4ms idle=298.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.164 [debug] QUERY OK source="settings" db=0.3ms idle=200.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.164 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.164 [error] #PID<0.3318.0> running PinchflatWeb.Endpoint (connection #PID<0.3317.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.config/hcloud/cli.toml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/hcloud/cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3317.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/hcloud/cli.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3318.0>, params: %{}, path_info: ["root", ".config", "hcloud", "cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.config/hcloud/cli.toml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d7gV4W3-ceQAACdC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3317.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/hcloud/cli.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/hcloud/cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3317.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/hcloud/cli.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3318.0>, params: %{}, path_info: ["root", ".config", "hcloud", "cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, (truncated) 14:08:34.262 [info] GET /home/ubuntu/.config/hcloud/cli.toml 14:08:34.263 [debug] QUERY OK source="settings" db=0.4ms idle=299.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.264 [debug] QUERY OK source="settings" db=0.3ms idle=200.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.264 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.264 [error] #PID<0.3320.0> running PinchflatWeb.Endpoint (connection #PID<0.3319.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/ubuntu/.config/hcloud/cli.toml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.config/hcloud/cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/hcloud/cli.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36960}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3320.0>, params: %{}, path_info: ["home", "ubuntu", ".config", "hcloud", "cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/ubuntu/.config/hcloud/cli.toml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d74LTAuqsGQAAAzh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/hcloud/cli.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36960}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.config/hcloud/cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3319.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/hcloud/cli.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36960}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3320.0>, params: %{}, path_info: ["home", "ubuntu", ".config", "hcloud", "cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-f (truncated) 14:08:34.288 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kP93L683UOE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/37/51/3751bdda56c3219e95aa229fc2fc45752e4252840b46e4b5963da0a25b92aa7f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:08:34.288 [debug] Running yt-dlp command for action: download 14:08:34.288 [debug] QUERY OK source="settings" db=0.1ms idle=224.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.289 [debug] QUERY OK source="settings" db=0.2ms idle=125.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.289 [debug] QUERY OK source="settings" db=0.1ms idle=125.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.289 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kP93L683UOE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3a/24/3a24e14af5dea7b94a6b57b82cc33970557664e85e7694943ace48d61552157f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:08:34.364 [info] GET /.hcloud.toml 14:08:34.365 [debug] QUERY OK source="settings" db=0.3ms idle=100.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.365 [debug] QUERY OK source="settings" db=0.0ms idle=76.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.365 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.365 [error] #PID<0.3322.0> running PinchflatWeb.Endpoint (connection #PID<0.3321.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.hcloud.toml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.hcloud (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3321.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.hcloud.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36974}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3322.0>, params: %{}, path_info: [".hcloud"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.hcloud.toml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d8QaSfujztQAAA0B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3321.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.hcloud.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36974}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.hcloud (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3321.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.hcloud.toml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36974}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3322.0>, params: %{}, path_info: [".hcloud"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.hcloud.toml", resp_body: n (truncated) 14:08:34.465 [info] GET /hcloud.yml 14:08:34.466 [debug] QUERY OK source="settings" db=0.1ms idle=177.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.466 [debug] QUERY OK source="settings" db=0.1ms idle=177.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.466 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.466 [error] #PID<0.3324.0> running PinchflatWeb.Endpoint (connection #PID<0.3323.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /hcloud.yml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /hcloud (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3323.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/hcloud.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36986}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3324.0>, params: %{}, path_info: ["hcloud"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/hcloud.yml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d8okFTjBCMMAACdi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3323.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/hcloud.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36986}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /hcloud (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3323.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/hcloud.yml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 36986}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3324.0>, params: %{}, path_info: ["hcloud"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/hcloud.yml", resp_body: nil, re (truncated) 14:08:34.565 [info] GET /root/.config/linode-cli 14:08:34.566 [debug] QUERY OK source="settings" db=0.7ms 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 [] 14:08:34.567 [debug] QUERY OK source="settings" db=0.4ms idle=201.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.567 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.568 [error] #PID<0.3326.0> running PinchflatWeb.Endpoint (connection #PID<0.3325.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.config/linode-cli ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/linode-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3325.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37000}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3326.0>, params: %{}, path_info: ["root", ".config", "linode-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.config/linode-cli", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d9AUaulZdAEAACeC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3325.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37000}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.config/linode-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3325.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.config/linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37000}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3326.0>, params: %{}, path_info: ["root", ".config", "linode-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme" (truncated) 14:08:34.667 [info] GET /home/ubuntu/.config/linode-cli 14:08:34.668 [debug] QUERY OK source="settings" db=0.2ms idle=302.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.668 [debug] QUERY OK source="settings" db=0.1ms idle=201.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.668 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.669 [error] #PID<0.3328.0> running PinchflatWeb.Endpoint (connection #PID<0.3327.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/ubuntu/.config/linode-cli ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.config/linode-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3327.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37014}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3328.0>, params: %{}, path_info: ["home", "ubuntu", ".config", "linode-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/ubuntu/.config/linode-cli", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d9YpiiKtgpsAACei"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3327.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37014}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.config/linode-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3327.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.config/linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37014}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3328.0>, params: %{}, path_info: ["home", "ubuntu", ".config", "linode-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, (truncated) 14:08:34.767 [info] GET /.linode-cli 14:08:34.769 [debug] QUERY OK source="settings" db=1.7ms idle=300.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.769 [debug] QUERY OK source="settings" db=0.2ms idle=202.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.769 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.770 [error] #PID<0.3330.0> running PinchflatWeb.Endpoint (connection #PID<0.3329.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.linode-cli ** (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.3329.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37016}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3330.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.linode-cli", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d9wXjSQweR0AACfC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3329.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37016}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET / (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3329.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.linode-cli", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37016}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3330.0>, params: %{}, path_info: [""], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.linode-cli", resp_body: nil, resp_cookies: %{}, (truncated) 14:08:34.869 [info] GET /root/.vultr-cli.yaml 14:08:34.869 [debug] QUERY OK source="settings" db=0.4ms idle=302.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.870 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:08:34.870 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.870 [error] #PID<0.3332.0> running PinchflatWeb.Endpoint (connection #PID<0.3331.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /root/.vultr-cli.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.vultr-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3331.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37028}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3332.0>, params: %{}, path_info: ["root", ".vultr-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/root/.vultr-cli.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d-IsKwa8iBQAACfi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3331.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37028}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /root/.vultr-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3331.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/root/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37028}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3332.0>, params: %{}, path_info: ["root", ".vultr-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93" (truncated) 14:08:34.969 [info] GET /home/ubuntu/.vultr-cli.yaml 14:08:34.969 [debug] QUERY OK source="settings" db=0.4ms idle=301.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.970 [debug] QUERY OK source="settings" db=0.1ms idle=200.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:34.970 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:34.970 [error] #PID<0.3334.0> running PinchflatWeb.Endpoint (connection #PID<0.3333.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /home/ubuntu/.vultr-cli.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.vultr-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3333.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37034}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3334.0>, params: %{}, path_info: ["home", "ubuntu", ".vultr-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/home/ubuntu/.vultr-cli.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d-gk_7PdH8wAACgC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3333.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37034}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /home/ubuntu/.vultr-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3333.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/home/ubuntu/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37034}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3334.0>, params: %{}, path_info: ["home", "ubuntu", ".vultr-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-f (truncated) 14:08:35.069 [info] GET /.vultr-cli.yaml 14:08:35.069 [debug] QUERY OK source="settings" db=0.1ms idle=299.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:35.069 [debug] QUERY OK source="settings" db=0.1ms idle=199.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:35.069 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:08:35.070 [error] #PID<0.3336.0> running PinchflatWeb.Endpoint (connection #PID<0.3335.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /.vultr-cli.yaml ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.vultr-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3335.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37036}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3336.0>, params: %{}, path_info: [".vultr-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.vultr-cli.yaml", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU4d-4W6IOw1gUAACgi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3335.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37036}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /.vultr-cli (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3335.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vultr-cli.yaml", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37036}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)", "x-forwarded-for" => "152.53.242.93", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "152.53.242.93" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3336.0>, params: %{}, path_info: [".vultr-cli"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (Silvy X Ran; +https://silvyxran.love; +https://silver.inc)"}, {"x-forwarded-for", "152.53.242.93"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "152.53.242.93"} ], request_path: "/.vultr-cli (truncated) 14:08:37.723 [info] GET /settings 14:08:37.723 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 14:08:37.724 [debug] QUERY OK source="settings" db=0.4ms idle=1301.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:37.724 [debug] QUERY OK source="settings" db=0.1ms idle=1302.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:37.725 [debug] QUERY OK source="settings" db=0.2ms idle=1302.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:37.725 [debug] QUERY OK source="settings" db=0.1ms idle=1303.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:37.726 [info] Sent 200 in 3ms 14:08:44.437 [info] GET /app_info 14:08:44.437 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 14:08:44.438 [debug] QUERY OK source="settings" db=0.4ms idle=1016.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.439 [debug] QUERY OK source="settings" db=0.3ms queue=0.6ms 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 [] 14:08:44.440 [debug] QUERY OK source="settings" db=0.1ms idle=1018.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.440 [debug] QUERY OK source="settings" db=0.1ms idle=1018.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.441 [debug] QUERY OK source="settings" db=0.1ms idle=123.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.442 [info] Sent 200 in 5ms 14:08:44.622 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Bxvfd2wi8ZQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c7/03/c7030a61451e185ee5b5d1f639da8f31b3e79f882f48d3cb76257cfcc491984d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:08:44.642 [debug] Running yt-dlp command for action: download_thumbnail 14:08:44.645 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=206.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.646 [debug] QUERY OK source="settings" db=0.6ms idle=205.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.647 [debug] QUERY OK source="settings" db=0.8ms idle=206.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:44.648 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Bxvfd2wi8ZQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/28/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/23/8e/238ec28a33628de73c9ee670e1dc3be9463c178fe48f336ed94b1024cd07271d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:08:45.189 [info] GET /settings 14:08:45.189 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 14:08:45.189 [debug] QUERY OK source="settings" db=0.2ms idle=748.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.190 [debug] QUERY OK source="settings" db=0.1ms idle=748.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.190 [debug] QUERY OK source="settings" db=0.1ms idle=544.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.191 [debug] QUERY OK source="settings" db=0.4ms idle=544.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.192 [info] Sent 200 in 3ms 14:08:45.980 [info] GET /media_profiles 14:08:45.980 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 14:08:45.981 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.2ms idle=791.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 14:08:45.982 [debug] QUERY OK source="settings" db=0.1ms idle=791.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.982 [debug] QUERY OK source="settings" db=0.1ms idle=791.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.982 [debug] QUERY OK source="settings" db=0.1ms idle=791.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:45.984 [info] Sent 200 in 3ms 14:08:46.862 [info] GET /sources 14:08:46.862 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:08:46.862 [debug] QUERY OK source="settings" db=0.2ms idle=880.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:46.863 [debug] QUERY OK source="settings" db=0.1ms idle=880.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:46.863 [debug] QUERY OK source="settings" db=0.3ms idle=881.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:46.864 [debug] QUERY OK source="settings" db=0.4ms idle=881.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:46.864 [debug] QUERY OK source="settings" db=0.0ms idle=545.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:46.865 [debug] QUERY OK source="sources" db=0.6ms idle=2.3ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 14:08:46.868 [debug] QUERY OK source="sources" db=1.6ms 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", 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] 14:08:46.869 [info] Sent 200 in 7ms 14:08:48.126 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Bxvfd2wi8ZQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/28/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/23/8e/238ec28a33628de73c9ee670e1dc3be9463c178fe48f336ed94b1024cd07271d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:08:48.127 [debug] QUERY OK db=0.0ms idle=1262.3ms begin [] 14:08:48.127 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:08:44Z], "/downloads/The Standup/2025-11-05 The Robots are getting Hacked | The Standup/The Robots are getting Hacked | The Standup [Bxvfd2wi8ZQ].mp4", ~U[2026-07-24 12:08:48Z], 28] 14:08:48.128 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/28/metadata.json.gz", "/config/metadata/media_items/28/thumbnail.jpg", 28, ~U[2026-07-24 12:08:48Z], ~U[2026-07-24 12:08:48Z]] 14:08:48.128 [debug] QUERY OK db=0.2ms commit [] 14:08:48.129 [debug] QUERY OK source="media_items" db=0.8ms idle=1264.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [347511764, ~U[2026-07-24 12:08:48Z], 28] 14:08:48.130 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:08:48.130 [info] {"args":{"id":28},"id":32,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":54800506,"event":"job:stop","queue_time":526328778,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:08:48.137 [info] {"args":{"id":30},"id":34,"meta":{},"system_time":1784894928137409412,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:08:48.137 [debug] QUERY OK source="media_items" db=0.1ms idle=817.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [30] 14:08:48.138 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:08:48.138 [debug] QUERY OK source="sources" db=0.1ms idle=9.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:08:48.138 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:08:48.139 [debug] QUERY OK source="media_items" db=0.4ms 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 [30] 14:08:48.139 [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" = ?) [30] 14:08:48.140 [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] 14:08:48.140 [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 [] 14:08:48.140 [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 [] 14:08:48.140 [debug] Running yt-dlp command for action: get_downloadable_status 14:08:48.141 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:48.141 [debug] QUERY OK source="settings" db=0.0ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:48.141 [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 [] 14:08:48.141 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ED-Q4N7ECMs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/75/fc7512f8f521259457f62c23fea52cdb2ada02845e2ae6d82a25967c2f5cdfe5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:08:50.588 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "dVwqHQIyHyMYWBZoLC8xFQgIPxp5Ml8a9-ly7mUej7fXVFCmjGyhAE0u", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:08:51.726 [info] GET / 14:08:51.726 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:08:51.728 [debug] QUERY OK source="settings" db=1.6ms idle=396.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.731 [debug] QUERY OK source="media_profiles" db=3.0ms idle=306.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:08:51.732 [debug] QUERY OK source="sources" db=0.6ms idle=309.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:08:51.733 [debug] QUERY OK source="media_items" db=0.8ms idle=310.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:08:51.736 [debug] QUERY OK source="media_items" db=2.3ms idle=311.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:08:51.737 [debug] QUERY OK source="settings" db=0.9ms idle=7.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.738 [debug] QUERY OK source="settings" db=0.8ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.739 [debug] QUERY OK source="settings" db=1.1ms idle=6.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.741 [debug] QUERY OK source="tasks" db=1.0ms idle=7.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:08:51.742 [debug] QUERY OK source="media_items" db=0.5ms idle=5.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [29, 30] 14:08:51.744 [debug] QUERY OK source="media_items" db=0.3ms idle=6.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:08:51.745 [debug] QUERY OK source="media_items" db=0.8ms idle=6.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:08:51.746 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:08:51.752 [debug] QUERY OK source="media_items" db=2.6ms idle=8.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:08:51.754 [debug] QUERY OK source="media_items" db=1.4ms queue=0.3ms idle=9.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:08:51.757 [debug] QUERY OK source="sources" db=1.4ms queue=0.3ms idle=10.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:08:51.760 [info] Sent 200 in 34ms 14:08:51.840 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ED-Q4N7ECMs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/75/fc7512f8f521259457f62c23fea52cdb2ada02845e2ae6d82a25967c2f5cdfe5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:08:51.841 [debug] Running yt-dlp command for action: download 14:08:51.842 [debug] QUERY OK source="settings" db=1.0ms idle=95.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.843 [debug] QUERY OK source="settings" db=0.9ms idle=96.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.845 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=91.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:51.845 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ED-Q4N7ECMs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/35/71/3571e3a81c3ae85d42d368b4b04ac7c7e32073ff1e88a9ecb5c17b50dc74dc06.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:08:52.551 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:53.275 [info] GET /sources 14:08:53.275 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:08:53.276 [debug] QUERY OK source="settings" db=0.7ms idle=1433.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:53.277 [debug] QUERY OK source="settings" db=0.5ms idle=1433.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:53.279 [debug] QUERY OK source="settings" db=1.1ms idle=1432.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:53.280 [debug] QUERY OK source="settings" db=1.2ms idle=948.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:53.281 [debug] QUERY OK source="settings" db=0.6ms idle=729.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:08:53.283 [debug] QUERY OK source="sources" db=1.2ms idle=5.1ms 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)) [] 14:08:53.286 [debug] QUERY OK source="sources" db=2.9ms idle=5.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", 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] 14:08:53.287 [info] Sent 200 in 12ms 14:09:00.340 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kP93L683UOE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3a/24/3a24e14af5dea7b94a6b57b82cc33970557664e85e7694943ace48d61552157f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:00.361 [debug] Running yt-dlp command for action: download_thumbnail 14:09:00.362 [debug] QUERY OK source="settings" db=0.2ms idle=1940.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:00.363 [debug] QUERY OK source="settings" db=0.2ms idle=1940.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:00.363 [debug] QUERY OK source="settings" db=0.1ms idle=1941.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:00.363 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kP93L683UOE --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/29/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4d/0b/4d0b89448f0ed35aef340d3b11eab7424c28e6d8f17467216e2703aa68f20c83.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:00.522 [info] {"source":"oban","duration":199,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:09:03.717 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kP93L683UOE --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/29/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4d/0b/4d0b89448f0ed35aef340d3b11eab7424c28e6d8f17467216e2703aa68f20c83.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:03.718 [debug] QUERY OK db=0.1ms idle=1296.4ms begin [] 14:09:03.719 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:09:00Z], "/downloads/The Standup/2025-11-01 is AI ruining opensource?/is AI ruining opensource? [kP93L683UOE].mp4", ~U[2026-07-24 12:09:03Z], 29] 14:09:03.720 [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/29/metadata.json.gz", "/config/metadata/media_items/29/thumbnail.jpg", 29, ~U[2026-07-24 12:09:03Z], ~U[2026-07-24 12:09:03Z]] 14:09:03.720 [debug] QUERY OK db=0.2ms commit [] 14:09:03.721 [debug] QUERY OK source="media_items" db=0.7ms idle=1298.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [437743885, ~U[2026-07-24 12:09:03Z], 29] 14:09:03.721 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:09:03.722 [info] {"args":{"id":29},"id":33,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":32407105,"event":"job:stop","queue_time":563313717,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:09:03.728 [info] {"args":{"id":31},"id":35,"meta":{},"system_time":1784894943728512751,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:09:03.729 [debug] QUERY OK source="media_items" db=0.4ms idle=306.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [31] 14:09:03.729 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:09:03.730 [debug] QUERY OK source="sources" db=0.4ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:09:03.730 [debug] QUERY OK source="media_profiles" db=0.6ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:09:03.731 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms 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 [31] 14:09:03.732 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [31] 14:09:03.732 [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] 14:09:03.732 [debug] QUERY OK source="settings" db=0.0ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:03.732 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:03.733 [debug] Running yt-dlp command for action: get_downloadable_status 14:09:03.733 [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 [] 14:09:03.733 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:03.734 [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 [] 14:09:03.734 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=J893_8HlkPM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1a/7d/1a7dafb353c2db3ee3f9f88a638c6ed18819938cc6d619c1ddd14b335e35c9aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:06.897 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=J893_8HlkPM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1a/7d/1a7dafb353c2db3ee3f9f88a638c6ed18819938cc6d619c1ddd14b335e35c9aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:06.897 [debug] Running yt-dlp command for action: download 14:09:06.898 [debug] QUERY OK source="settings" db=0.2ms idle=1475.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:06.898 [debug] QUERY OK source="settings" db=0.1ms idle=1476.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:06.898 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=1476.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:06.899 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=J893_8HlkPM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ad/b5/adb569b535535ed109d7af3fe63df7aeb11254027f2e1e09cd7d8523b44a77e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:22.552 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:23.599 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ED-Q4N7ECMs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/35/71/3571e3a81c3ae85d42d368b4b04ac7c7e32073ff1e88a9ecb5c17b50dc74dc06.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:23.620 [debug] Running yt-dlp command for action: download_thumbnail 14:09:23.620 [debug] QUERY OK source="settings" db=0.1ms idle=1163.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:23.620 [debug] QUERY OK source="settings" db=0.0ms idle=1163.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:23.621 [debug] QUERY OK source="settings" db=0.2ms idle=1164.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:23.621 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ED-Q4N7ECMs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/30/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b7/08/b70822cd654e1bb8166d2d01e225b0b333a31b59f1506e16544a831d622d4d7b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:26.159 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ED-Q4N7ECMs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/30/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b7/08/b70822cd654e1bb8166d2d01e225b0b333a31b59f1506e16544a831d622d4d7b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:26.160 [debug] QUERY OK db=0.3ms idle=1702.9ms begin [] 14:09:26.161 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:09:23Z], "/downloads/The Standup/2025-10-27 What even is Quantum Computing?!/What even is Quantum Computing?! [ED-Q4N7ECMs].mp4", ~U[2026-07-24 12:09:26Z], 30] 14:09:26.162 [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/30/metadata.json.gz", "/config/metadata/media_items/30/thumbnail.jpg", 30, ~U[2026-07-24 12:09:26Z], ~U[2026-07-24 12:09:26Z]] 14:09:26.162 [debug] QUERY OK db=0.3ms commit [] 14:09:26.163 [debug] QUERY OK source="media_items" db=0.8ms idle=779.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [563616276, ~U[2026-07-24 12:09:26Z], 30] 14:09:26.163 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:09:26.164 [info] {"args":{"id":30},"id":34,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":38026579,"event":"job:stop","queue_time":578136776,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:09:26.170 [info] {"args":{"id":32},"id":36,"meta":{},"system_time":1784894966170503769,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:09:26.171 [debug] QUERY OK source="media_items" db=0.3ms idle=713.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [32] 14:09:26.171 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:09:26.171 [debug] QUERY OK source="sources" db=0.1ms idle=9.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:09:26.172 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:09:26.172 [debug] QUERY OK source="media_items" db=0.3ms 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 [32] 14:09:26.173 [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" = ?) [32] 14:09:26.173 [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] 14:09:26.173 [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 [] 14:09:26.173 [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 [] 14:09:26.174 [debug] Running yt-dlp command for action: get_downloadable_status 14:09:26.175 [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 [] 14:09:26.175 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:26.175 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:26.175 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ljGPvgMPOn8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/66/65/66653bc2361691a924fc514bfb5feb9c8f507abcf43bd665cee7c82b2300d2dd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:28.673 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ljGPvgMPOn8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/66/65/66653bc2361691a924fc514bfb5feb9c8f507abcf43bd665cee7c82b2300d2dd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:28.673 [debug] Running yt-dlp command for action: download 14:09:28.674 [debug] QUERY OK source="settings" db=0.3ms idle=1215.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:28.674 [debug] QUERY OK source="settings" db=0.2ms idle=1216.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:28.674 [debug] QUERY OK source="settings" db=0.0ms idle=1216.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:28.674 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ljGPvgMPOn8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bf/97/bf97e560f84f62c8cec4d38761f7dc636676d0a9dabafe8092e91948db876f81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:38.003 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=J893_8HlkPM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ad/b5/adb569b535535ed109d7af3fe63df7aeb11254027f2e1e09cd7d8523b44a77e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:38.027 [debug] Running yt-dlp command for action: download_thumbnail 14:09:38.028 [debug] QUERY OK source="settings" db=0.1ms idle=1570.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:38.028 [debug] QUERY OK source="settings" db=0.0ms idle=1570.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:38.029 [debug] QUERY OK source="settings" db=0.0ms idle=1571.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:38.029 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=J893_8HlkPM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/31/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d9/4a/d94a24d75e33dcd4e01a891d15251c2b59a8b405646293e8224f506e8d2006bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:41.269 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=J893_8HlkPM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/31/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d9/4a/d94a24d75e33dcd4e01a891d15251c2b59a8b405646293e8224f506e8d2006bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:41.270 [debug] QUERY OK db=0.4ms idle=1811.3ms begin [] 14:09:41.272 [debug] QUERY OK source="media_items" db=1.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:09:38Z], "/downloads/The Standup/2025-10-23 AWS Outage And ANOTHER AI BROWSER???? - TheStandup/AWS Outage And ANOTHER AI BROWSER???? - TheStandup [J893_8HlkPM].mp4", ~U[2026-07-24 12:09:41Z], 31] 14:09:41.274 [debug] QUERY OK source="media_metadata" db=2.1ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/31/metadata.json.gz", "/config/metadata/media_items/31/thumbnail.jpg", 31, ~U[2026-07-24 12:09:41Z], ~U[2026-07-24 12:09:41Z]] 14:09:41.275 [debug] QUERY OK db=0.4ms commit [] 14:09:41.277 [debug] QUERY OK source="media_items" db=1.4ms idle=1816.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [396855137, ~U[2026-07-24 12:09:41Z], 31] 14:09:41.277 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:09:41.278 [info] {"args":{"id":31},"id":35,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37548794,"event":"job:stop","queue_time":591727732,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:09:41.284 [info] {"args":{"id":33},"id":37,"meta":{},"system_time":1784894981284567437,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:09:41.285 [debug] QUERY OK source="media_items" db=0.6ms idle=865.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [33] 14:09:41.286 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:09:41.286 [debug] QUERY OK source="sources" db=0.6ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:09:41.287 [debug] QUERY OK source="media_profiles" db=0.2ms idle=10.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:09:41.288 [debug] QUERY OK source="media_items" db=0.8ms idle=10.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [33] 14:09:41.290 [debug] QUERY OK source="media_metadata" db=0.3ms idle=5.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [33] 14:09:41.290 [debug] QUERY OK source="media_profiles" db=0.5ms 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] 14:09:41.291 [debug] QUERY OK source="settings" db=0.4ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:41.292 [debug] QUERY OK source="settings" db=0.7ms 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:09:41.292 [debug] Running yt-dlp command for action: get_downloadable_status 14:09:41.293 [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 [] 14:09:41.294 [debug] QUERY OK source="settings" db=0.4ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:41.294 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:41.295 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v9gsMFozXK0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/89/aa/89aa5ae49c53a05fbea08505a191409aa8e2e01dea822617cdef76afc8ba7c0c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:44.224 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v9gsMFozXK0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/89/aa/89aa5ae49c53a05fbea08505a191409aa8e2e01dea822617cdef76afc8ba7c0c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:09:44.224 [debug] Running yt-dlp command for action: download 14:09:44.225 [debug] QUERY OK source="settings" db=0.4ms queue=0.4ms idle=1765.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:44.225 [debug] QUERY OK source="settings" db=0.3ms idle=1766.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:44.226 [debug] QUERY OK source="settings" db=0.0ms idle=1767.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:09:44.226 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v9gsMFozXK0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/32/17/3217a535ef789c79d9b320c5f14d674217ccac73680d51a5c149b43bd890adae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:09:50.653 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IjccPXsIBSkEBwp9ESYwAD0eCDRhACQanFZYNWOovhzMkOBx_QNFYwKu", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:09:52.553 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:00.523 [info] {"source":"oban","duration":218,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:10:07.966 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ljGPvgMPOn8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bf/97/bf97e560f84f62c8cec4d38761f7dc636676d0a9dabafe8092e91948db876f81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:07.987 [debug] Running yt-dlp command for action: download_thumbnail 14:10:07.987 [debug] QUERY OK source="settings" db=0.1ms idle=1528.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:07.988 [debug] QUERY OK source="settings" db=0.3ms idle=1517.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:07.988 [debug] QUERY OK source="settings" db=0.1ms idle=527.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:07.988 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ljGPvgMPOn8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/32/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/bc/8f/bc8f8070d2fcce8c33f5ca6d7a882cda3bc98ebb8362aa594a1df9e96a2899aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:08.294 [info] GET /sources/new 14:10:08.295 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 14:10:08.295 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.2ms idle=834.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:10:08.296 [debug] QUERY OK source="settings" db=0.4ms idle=815.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:08.297 [debug] QUERY OK source="settings" db=0.6ms idle=308.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:08.297 [debug] QUERY OK source="settings" db=0.2ms idle=309.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:08.298 [debug] QUERY OK source="settings" db=0.4ms idle=309.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:08.298 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:08.300 [info] Sent 200 in 5ms 14:10:10.539 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ljGPvgMPOn8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/32/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/bc/8f/bc8f8070d2fcce8c33f5ca6d7a882cda3bc98ebb8362aa594a1df9e96a2899aa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:10.540 [debug] QUERY OK db=0.1ms queue=0.1ms idle=1078.9ms begin [] 14:10:10.540 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:10:07Z], "/downloads/The Standup/2025-10-22 TheStandup - DHH Talks Omarchy/TheStandup - DHH Talks Omarchy [ljGPvgMPOn8].mp4", ~U[2026-07-24 12:10:10Z], 32] 14:10:10.541 [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/32/metadata.json.gz", "/config/metadata/media_items/32/thumbnail.jpg", 32, ~U[2026-07-24 12:10:10Z], ~U[2026-07-24 12:10:10Z]] 14:10:10.541 [debug] QUERY OK db=0.1ms commit [] 14:10:10.542 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1080.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [741964756, ~U[2026-07-24 12:10:10Z], 32] 14:10:10.542 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:10.543 [info] {"args":{"id":32},"id":36,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":44372483,"event":"job:stop","queue_time":613169773,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:10.549 [info] {"args":{"id":34},"id":38,"meta":{},"system_time":1784895010549380983,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:10.550 [debug] QUERY OK source="media_items" db=0.5ms idle=63.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [34] 14:10:10.550 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:10.551 [debug] QUERY OK source="sources" db=0.4ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:10:10.551 [debug] QUERY OK source="media_profiles" db=0.5ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:10:10.552 [debug] QUERY OK source="media_items" db=0.5ms 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 [34] 14:10:10.554 [debug] QUERY OK source="media_metadata" db=0.0ms idle=4.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" = ?) [34] 14:10:10.554 [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] 14:10:10.554 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:10.554 [debug] QUERY OK source="settings" db=0.0ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:10.555 [debug] Running yt-dlp command for action: get_downloadable_status 14:10:10.555 [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 [] 14:10:10.556 [debug] QUERY OK source="settings" db=0.4ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:10.556 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:10.556 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=iCpcE6tMpz8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/ec/bbec173d3e81c13f37352ddff506c55448659d7de8246037cda63cccbb45dda8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:13.517 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=iCpcE6tMpz8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/ec/bbec173d3e81c13f37352ddff506c55448659d7de8246037cda63cccbb45dda8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:13.517 [debug] Running yt-dlp command for action: download 14:10:13.518 [debug] QUERY OK source="settings" db=0.1ms idle=1057.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:13.518 [debug] QUERY OK source="settings" db=0.3ms idle=1057.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:13.518 [debug] QUERY OK source="settings" db=0.1ms idle=1057.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:13.519 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=iCpcE6tMpz8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1e/24/1e24de9a825ac1cca05a8d04968df6e77068ef757bc413ad702d9fccb4fa6671.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:15.771 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v9gsMFozXK0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/32/17/3217a535ef789c79d9b320c5f14d674217ccac73680d51a5c149b43bd890adae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:15.795 [debug] Running yt-dlp command for action: download_thumbnail 14:10:15.797 [debug] QUERY OK source="settings" db=0.1ms idle=1302.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:15.797 [debug] QUERY OK source="settings" db=0.7ms idle=336.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:15.798 [debug] QUERY OK source="settings" db=0.6ms idle=337.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:15.798 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v9gsMFozXK0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/33/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d2/9c/d29ce19d66ced64748d0a6ed05342fa1d59268ecfa70f6d1ac6d7130453c5171.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:18.853 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=v9gsMFozXK0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/33/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d2/9c/d29ce19d66ced64748d0a6ed05342fa1d59268ecfa70f6d1ac6d7130453c5171.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:18.854 [debug] QUERY OK db=0.2ms idle=1392.8ms begin [] 14:10:18.855 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:10:15Z], "/downloads/The Standup/2025-09-18 The Standup - Jira Bought 2 Browsers???/The Standup - Jira Bought 2 Browsers??? [v9gsMFozXK0].mp4", ~U[2026-07-24 12:10:18Z], 33] 14:10:18.855 [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/33/metadata.json.gz", "/config/metadata/media_items/33/thumbnail.jpg", 33, ~U[2026-07-24 12:10:18Z], ~U[2026-07-24 12:10:18Z]] 14:10:18.862 [debug] QUERY OK db=6.1ms commit [] 14:10:18.863 [debug] QUERY OK source="media_items" db=1.2ms idle=1401.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [394461472, ~U[2026-07-24 12:10:18Z], 33] 14:10:18.864 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:18.864 [info] {"args":{"id":33},"id":37,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37579628,"event":"job:stop","queue_time":626283758,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:18.871 [info] {"args":{"id":35},"id":39,"meta":{},"system_time":1784895018871410941,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:18.871 [debug] QUERY OK source="media_items" db=0.1ms idle=371.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [35] 14:10:18.872 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:18.872 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=10.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:10:18.872 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:10:18.873 [debug] QUERY OK source="media_items" db=0.3ms 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 [35] 14:10:18.874 [debug] QUERY OK source="media_metadata" db=0.2ms idle=3.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [35] 14:10:18.875 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:10:18.876 [debug] QUERY OK source="settings" db=0.7ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.877 [debug] QUERY OK source="settings" db=0.6ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.878 [debug] Running yt-dlp command for action: get_downloadable_status 14:10:18.879 [debug] QUERY OK source="settings" db=0.3ms idle=5.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.880 [debug] QUERY OK source="settings" db=0.5ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.881 [debug] QUERY OK source="settings" db=0.5ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:18.881 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=O-3gEsfEm0g --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/06/84/0684e4d6eca47e540ef791f39ecaea841c5fb88321d2a36880b96cfe72f6a22f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:21.231 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=O-3gEsfEm0g --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/06/84/0684e4d6eca47e540ef791f39ecaea841c5fb88321d2a36880b96cfe72f6a22f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:21.232 [debug] Running yt-dlp command for action: download 14:10:21.232 [debug] QUERY OK source="settings" db=0.2ms idle=771.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:21.233 [debug] QUERY OK source="settings" db=0.6ms idle=771.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:21.234 [debug] QUERY OK source="settings" db=0.9ms idle=772.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:21.234 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=O-3gEsfEm0g --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/23/38/23388e9fb939c2478f30172eeb28872799da8031f2d8af6e54103a6e0656bbb0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:22.554 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:23.821 [info] GET /media_profiles 14:10:23.821 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 14:10:23.822 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1360.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", (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" [] 14:10:23.822 [debug] QUERY OK source="settings" db=0.2ms idle=1361.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:23.822 [debug] QUERY OK source="settings" db=0.2ms idle=1317.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:23.823 [debug] QUERY OK source="settings" db=0.6ms idle=1268.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:23.824 [info] Sent 200 in 3ms 14:10:24.862 [info] GET /media_profiles/new 14:10:24.862 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 14:10:24.862 [debug] QUERY OK source="settings" db=0.1ms idle=1040.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:24.863 [debug] QUERY OK source="settings" db=0.1ms idle=1040.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:24.863 [debug] QUERY OK source="settings" db=0.4ms idle=1040.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:24.864 [debug] QUERY OK source="settings" db=0.1ms idle=1040.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:24.864 [debug] QUERY OK source="settings" db=0.2ms idle=356.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:24.866 [info] Sent 200 in 3ms 14:10:44.923 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=iCpcE6tMpz8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1e/24/1e24de9a825ac1cca05a8d04968df6e77068ef757bc413ad702d9fccb4fa6671.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:44.961 [debug] Running yt-dlp command for action: download_thumbnail 14:10:44.962 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:10:44.963 [debug] QUERY OK source="settings" db=0.6ms idle=501.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:44.964 [debug] QUERY OK source="settings" db=0.7ms idle=502.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:44.964 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=iCpcE6tMpz8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/34/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/18/28/1828012a198d51bacc043771231cd4bffa78e9890393e9269360a1f315a5d8c5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:48.097 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=iCpcE6tMpz8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/34/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/18/28/1828012a198d51bacc043771231cd4bffa78e9890393e9269360a1f315a5d8c5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:48.098 [debug] QUERY OK db=0.0ms idle=1636.8ms begin [] 14:10:48.098 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:10:44Z], "/downloads/The Standup/2025-09-12 The Most Insightful Apple Commentary | The Standup/The Most Insightful Apple Commentary | The Standup [iCpcE6tMpz8].mp4", ~U[2026-07-24 12:10:48Z], 34] 14:10:48.099 [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/34/metadata.json.gz", "/config/metadata/media_items/34/thumbnail.jpg", 34, ~U[2026-07-24 12:10:48Z], ~U[2026-07-24 12:10:48Z]] 14:10:48.099 [debug] QUERY OK db=0.3ms commit [] 14:10:48.100 [debug] QUERY OK source="media_items" db=0.7ms idle=1638.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [412122790, ~U[2026-07-24 12:10:48Z], 34] 14:10:48.100 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:48.101 [info] {"args":{"id":34},"id":38,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37551429,"event":"job:stop","queue_time":654548753,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:48.107 [info] {"args":{"id":36},"id":40,"meta":{},"system_time":1784895048107525769,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:10:48.108 [debug] QUERY OK source="media_items" db=0.7ms idle=564.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" = ?) [36] 14:10:48.108 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:10:48.108 [debug] QUERY OK source="sources" db=0.2ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:10:48.109 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:10:48.109 [debug] QUERY OK source="media_items" db=0.4ms 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 [36] 14:10:48.111 [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" = ?) [36] 14:10:48.111 [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] 14:10:48.112 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:48.112 [debug] QUERY OK source="settings" db=0.0ms queue=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:48.113 [debug] Running yt-dlp command for action: get_downloadable_status 14:10:48.113 [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:10:48.113 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:48.114 [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 [] 14:10:48.114 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tXJfS6jI9Z0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/34/bb34b8f6802c2098adb3ba5427ab5fd6508329a33c797c42b2e7c0435ff0a6a9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:50.485 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tXJfS6jI9Z0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/34/bb34b8f6802c2098adb3ba5427ab5fd6508329a33c797c42b2e7c0435ff0a6a9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:10:50.486 [debug] Running yt-dlp command for action: download 14:10:50.486 [debug] QUERY OK source="settings" db=0.1ms idle=1025.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:50.487 [debug] QUERY OK source="settings" db=0.2ms idle=1025.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:50.487 [debug] QUERY OK source="settings" db=0.3ms idle=1026.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:10:50.488 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tXJfS6jI9Z0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/19/0d/190df71d6f961dd72bec5be982905516859b614709fafd0ae4dbf7cc08b1d9ec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:10:50.774 [info] CONNECTED TO Phoenix.LiveView.Socket in 30µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IkUvB1cuI3AICDRVOwQ6SRYLDDdzQD8wn4icbqi6zgDeAmH1tDJEK7P_", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:10:52.555 [info] {"source":"oban","duration":463,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:00.524 [info] {"source":"oban","duration":220,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:11:00.906 [info] GET / 14:11:00.906 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:11:00.907 [debug] QUERY OK source="settings" db=0.2ms idle=445.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:00.907 [debug] QUERY OK source="media_profiles" db=0.1ms idle=446.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:11:00.907 [debug] QUERY OK source="sources" db=0.2ms idle=446.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:11:00.908 [debug] QUERY OK source="media_items" db=0.3ms idle=383.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:11:00.908 [debug] QUERY OK source="media_items" db=0.0ms idle=347.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:11:00.908 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:00.909 [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 [] 14:11:00.909 [debug] QUERY OK source="settings" db=0.0ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:00.910 [debug] QUERY OK source="tasks" db=0.3ms idle=1.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:11:00.910 [debug] QUERY OK source="media_items" db=0.1ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [35, 36] 14:11:00.911 [debug] QUERY OK source="media_items" db=0.1ms 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:11:00.912 [debug] QUERY OK source="media_items" db=0.5ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:11:00.912 [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" = ?) [1] 14:11:00.915 [debug] QUERY OK source="media_items" db=0.4ms 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"))) [] 14:11:00.916 [debug] QUERY OK source="media_items" db=1.0ms 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] 14:11:00.916 [debug] QUERY OK source="sources" db=0.2ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:11:00.918 [info] Sent 200 in 11ms 14:11:01.039 [info] GET / 14:11:01.039 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:11:01.039 [debug] QUERY OK source="settings" db=0.2ms idle=127.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:01.040 [debug] QUERY OK source="media_profiles" db=0.0ms idle=127.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:11:01.040 [debug] QUERY OK source="sources" db=0.1ms idle=124.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:11:01.040 [debug] QUERY OK source="media_items" db=0.1ms idle=124.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:11:01.040 [debug] QUERY OK source="media_items" db=0.1ms idle=123.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:11:01.041 [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 [] 14:11:01.041 [debug] QUERY OK source="settings" db=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:01.041 [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 [] 14:11:01.042 [debug] QUERY OK source="tasks" db=0.2ms idle=1.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:11:01.043 [debug] QUERY OK source="media_items" db=0.1ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [35, 36] 14:11:01.043 [debug] QUERY OK source="media_items" db=0.1ms 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:11:01.044 [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:11:01.044 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:11:01.047 [debug] QUERY OK source="media_items" db=0.2ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:11:01.048 [debug] QUERY OK source="media_items" db=0.8ms idle=4.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:11:01.048 [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" = ?) [1] 14:11:01.050 [info] Sent 200 in 10ms 14:11:22.556 [info] {"source":"oban","duration":559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:38.277 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tXJfS6jI9Z0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/19/0d/190df71d6f961dd72bec5be982905516859b614709fafd0ae4dbf7cc08b1d9ec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:11:38.299 [debug] Running yt-dlp command for action: download_thumbnail 14:11:38.299 [debug] QUERY OK source="settings" db=0.1ms idle=1824.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:38.300 [debug] QUERY OK source="settings" db=0.1ms idle=1825.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:38.300 [debug] QUERY OK source="settings" db=0.1ms idle=1825.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:38.300 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tXJfS6jI9Z0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/36/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8a/fc/8afc8f2bb981d1a43db97c75a38ba052d6484519b43af45c28918e0b9ec4235c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:11:40.702 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tXJfS6jI9Z0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/36/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8a/fc/8afc8f2bb981d1a43db97c75a38ba052d6484519b43af45c28918e0b9ec4235c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:11:40.702 [debug] QUERY OK db=0.0ms idle=1227.8ms begin [] 14:11:40.703 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:11:38Z], "/downloads/The Standup/2025-08-14 2 Language Creators vs 2 Idiots | The Standup/2 Language Creators vs 2 Idiots | The Standup [tXJfS6jI9Z0].mp4", ~U[2026-07-24 12:11:40Z], 36] 14:11:40.704 [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/36/metadata.json.gz", "/config/metadata/media_items/36/thumbnail.jpg", 36, ~U[2026-07-24 12:11:40Z], ~U[2026-07-24 12:11:40Z]] 14:11:40.704 [debug] QUERY OK db=0.2ms commit [] 14:11:40.705 [debug] QUERY OK source="media_items" db=0.7ms idle=1230.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [780023722, ~U[2026-07-24 12:11:40Z], 36] 14:11:40.705 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:11:40.706 [info] {"args":{"id":36},"id":40,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":52598819,"event":"job:stop","queue_time":689106846,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:11:40.713 [info] {"args":{"id":37},"id":41,"meta":{},"system_time":1784895100713521552,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:11:40.714 [debug] QUERY OK source="media_items" db=0.1ms idle=97.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [37] 14:11:40.714 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:11:40.714 [debug] QUERY OK source="sources" db=0.3ms idle=9.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:11:40.714 [debug] QUERY OK source="media_profiles" db=0.0ms idle=9.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:11:40.716 [debug] QUERY OK source="media_items" db=0.8ms 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 [37] 14:11:40.716 [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" = ?) [37] 14:11:40.716 [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] 14:11:40.716 [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 [] 14:11:40.717 [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 [] 14:11:40.717 [debug] Running yt-dlp command for action: get_downloadable_status 14:11:40.718 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:40.718 [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 [] 14:11:40.718 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:40.718 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=qhzTawm3_6Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/04/1004b03356918c63da9b6e9d55fbd7d806002a6a980082d69a659ea997410646.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:11:43.401 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=qhzTawm3_6Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/10/04/1004b03356918c63da9b6e9d55fbd7d806002a6a980082d69a659ea997410646.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:11:43.401 [debug] Running yt-dlp command for action: download 14:11:43.401 [debug] QUERY OK source="settings" db=0.2ms idle=926.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:43.402 [debug] QUERY OK source="settings" db=0.2ms queue=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 [] 14:11:43.402 [debug] QUERY OK source="settings" db=0.2ms idle=927.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:43.402 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=qhzTawm3_6Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/36/48/36480133f12d2503200b9d96d94d37cba761dc94ce5aca9e7774182eb1992b98.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:11:45.382 [info] GET / 14:11:45.382 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:11:45.383 [debug] QUERY OK source="settings" db=0.7ms idle=907.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:45.383 [debug] QUERY OK source="media_profiles" db=0.1ms idle=908.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:11:45.384 [debug] QUERY OK source="sources" db=0.2ms idle=909.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:11:45.384 [debug] QUERY OK source="media_items" db=0.2ms queue=0.2ms idle=909.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:11:45.385 [debug] QUERY OK source="media_items" db=0.3ms idle=762.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:11:45.385 [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 [] 14:11:45.386 [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 [] 14:11:45.386 [debug] QUERY OK source="settings" db=0.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:11:45.387 [debug] QUERY OK source="tasks" db=0.4ms idle=2.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:11:45.388 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [35, 37] 14:11:45.389 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 14:11:45.390 [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] 14:11:45.390 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [1] 14:11:45.393 [debug] QUERY OK source="media_items" db=0.2ms idle=4.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:11:45.393 [debug] QUERY OK source="media_items" db=0.6ms 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] 14:11:45.394 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [1] 14:11:45.396 [info] Sent 200 in 14ms 14:11:50.829 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IkUvB1cuI3AICDRVOwQ6SRYLDDdzQD8wn4icbqi6zgDeAmH1tDJEK7P_", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:11:52.557 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:00.525 [info] {"source":"oban","duration":165,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:12:06.390 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=O-3gEsfEm0g --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/23/38/23388e9fb939c2478f30172eeb28872799da8031f2d8af6e54103a6e0656bbb0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:06.412 [debug] Running yt-dlp command for action: download_thumbnail 14:12:06.412 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:12:06.413 [debug] QUERY OK source="settings" db=0.2ms idle=1938.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:06.413 [debug] QUERY OK source="settings" db=0.2ms idle=1938.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:06.413 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=O-3gEsfEm0g --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/35/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ce/b7/ceb76abbd8e3bc21e22d29d907887c4fe4fdcf24501f0f2a74d7c96c79af76a9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:08.727 [info] POST /media_profiles 14:12:08.728 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.create/2 Parameters: %{"_csrf_token" => "IkUvB1cuI3AICDRVOwQ6SRYLDDdzQD8wn4icbqi6zgDeAmH1tDJEK7P_", "media_profile" => %{"audio_track" => "", "download_auto_subs" => "true", "download_metadata" => "false", "download_nfo" => "false", "download_source_images" => "false", "download_subs" => "true", "download_thumbnail" => "false", "embed_metadata" => "true", "embed_subs" => "false", "embed_thumbnail" => "true", "livestream_behaviour" => "include", "media_container" => "", "name" => "Youtube Archive", "output_path_template" => "/{{ source_custom_name }}/{{ upload_yyyy_mm_dd }} {{ title }}/{{ title }} [{{ id }}].{{ ext }}", "preferred_resolution" => "1080p", "redownload_delay_days" => "", "shorts_behaviour" => "exclude", "sponsorblock_behaviour" => "mark", "sponsorblock_categories" => ["sponsor", "intro", "outro", "selfpromo", "preview", "filler", "interaction", "music_offtopic"], "sub_langs" => "en"}, "media_profile_preset" => "archiving"} Pipelines: [:browser] 14:12:08.730 [debug] QUERY OK source="media_profiles" db=0.9ms idle=1254.3ms INSERT INTO "media_profiles" ("name","output_path_template","sponsorblock_categories","sponsorblock_behaviour","download_thumbnail","embed_thumbnail","download_auto_subs","download_subs","embed_subs","sub_langs","preferred_resolution","download_metadata","embed_metadata","download_nfo","download_source_images","livestream_behaviour","shorts_behaviour","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19) RETURNING "id" ["Youtube Archive", "/{{ source_custom_name }}/{{ upload_yyyy_mm_dd }} {{ title }}/{{ title }} [{{ id }}].{{ ext }}", ["sponsor", "intro", "outro", "selfpromo", "preview", "filler", "interaction", "music_offtopic"], :mark, false, true, true, true, false, "en", :"1080p", false, true, false, false, :include, :exclude, ~U[2026-07-24 12:12:08Z], ~U[2026-07-24 12:12:08Z]] 14:12:08.730 [debug] QUERY OK source="settings" db=0.4ms idle=1255.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:08.731 [info] Sent 302 in 3ms 14:12:08.745 [info] GET /media_profiles/2 14:12:08.746 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:12:08.747 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.7ms idle=1074.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:12:08.748 [debug] QUERY OK source="sources" db=0.1ms queue=0.4ms idle=272.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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" [2] 14:12:08.748 [debug] QUERY OK source="settings" db=0.3ms idle=74.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:08.749 [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 [] 14:12:08.749 [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 [] 14:12:08.750 [info] Sent 200 in 5ms 14:12:09.194 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=O-3gEsfEm0g --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/35/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ce/b7/ceb76abbd8e3bc21e22d29d907887c4fe4fdcf24501f0f2a74d7c96c79af76a9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:09.195 [debug] QUERY OK db=0.2ms idle=447.7ms begin [] 14:12:09.196 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:12:06Z], "/downloads/The Standup/2025-08-21 Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury)/Why Making a Debugger is So Hard! | The Standup (ft. Ryan Fleury) [O-3gEsfEm0g].mp4", ~U[2026-07-24 12:12:09Z], 35] 14:12:09.197 [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/35/metadata.json.gz", "/config/metadata/media_items/35/thumbnail.jpg", 35, ~U[2026-07-24 12:12:09Z], ~U[2026-07-24 12:12:09Z]] 14:12:09.197 [debug] QUERY OK db=0.2ms commit [] 14:12:09.198 [debug] QUERY OK source="media_items" db=0.9ms idle=449.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [765137519, ~U[2026-07-24 12:12:09Z], 35] 14:12:09.199 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:09.199 [info] {"args":{"id":35},"id":39,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":110327916,"event":"job:stop","queue_time":660870773,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:09.206 [info] {"args":{"id":38},"id":42,"meta":{},"system_time":1784895129206753774,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:09.207 [debug] QUERY OK source="media_items" db=0.3ms idle=457.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [38] 14:12:09.207 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:09.208 [debug] QUERY OK source="sources" db=0.6ms idle=9.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:12:09.208 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:09.209 [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 [38] 14:12:09.209 [debug] QUERY OK source="media_metadata" db=0.0ms idle=3.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [38] 14:12:09.210 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:09.210 [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 [] 14:12:09.210 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:09.211 [debug] Running yt-dlp command for action: get_downloadable_status 14:12:09.212 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:09.212 [debug] QUERY OK source="settings" db=0.4ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:09.213 [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 [] 14:12:09.213 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tpe1bLzydhU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/43/7a43210248125bafd8343bef86916905591e8bc30010577da4fd3742e1ab9eca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:10.255 [info] GET /sources 14:12:10.255 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:12:10.256 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:12:10.257 [debug] QUERY OK source="settings" db=0.5ms idle=1044.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:10.258 [debug] QUERY OK source="settings" db=0.9ms idle=1044.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:10.259 [debug] QUERY OK source="settings" db=0.2ms idle=1045.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:10.259 [debug] QUERY OK source="settings" db=0.0ms idle=584.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:10.262 [debug] QUERY OK source="sources" db=2.8ms idle=3.1ms 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)) [] 14:12:10.264 [debug] QUERY OK source="sources" db=1.9ms 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", 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] 14:12:10.266 [info] Sent 200 in 10ms 14:12:11.178 [info] GET /sources/new 14:12:11.178 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 14:12:11.179 [debug] QUERY OK source="media_profiles" db=0.3ms idle=919.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:12:11.179 [debug] QUERY OK source="settings" db=0.2ms idle=919.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:11.180 [debug] QUERY OK source="settings" db=0.3ms idle=917.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:11.180 [debug] QUERY OK source="settings" db=0.2ms idle=915.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:11.180 [debug] QUERY OK source="settings" db=0.0ms idle=503.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:11.181 [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 [] 14:12:11.184 [info] Sent 200 in 5ms 14:12:12.103 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tpe1bLzydhU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7a/43/7a43210248125bafd8343bef86916905591e8bc30010577da4fd3742e1ab9eca.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:12.103 [debug] Running yt-dlp command for action: download 14:12:12.104 [debug] QUERY OK source="settings" db=0.9ms idle=923.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:12.105 [debug] QUERY OK source="settings" db=0.4ms idle=924.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:12.105 [debug] QUERY OK source="settings" db=0.2ms idle=924.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:12.105 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tpe1bLzydhU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/05/71/0571f5adbff1254f5467c0fcd74902c09929881037a8015500ebc82e04ef7b38.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:17.674 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=qhzTawm3_6Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/36/48/36480133f12d2503200b9d96d94d37cba761dc94ce5aca9e7774182eb1992b98.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:17.695 [debug] Running yt-dlp command for action: download_thumbnail 14:12:17.696 [debug] QUERY OK source="settings" db=0.1ms idle=1005.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:17.696 [debug] QUERY OK source="settings" db=0.1ms idle=220.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:17.696 [debug] QUERY OK source="settings" db=0.1ms idle=220.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:17.697 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=qhzTawm3_6Y --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/37/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c9/fc/c9fc1f5b0dd526fa5f9cf496bf57db9424eba3c7dc769298d2b87b73e6a41fc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:20.389 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=qhzTawm3_6Y --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/37/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c9/fc/c9fc1f5b0dd526fa5f9cf496bf57db9424eba3c7dc769298d2b87b73e6a41fc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:20.390 [debug] QUERY OK db=0.0ms idle=914.1ms begin [] 14:12:20.390 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:12:17Z], "/downloads/The Standup/2025-08-07 The Evolution of Programming | The Standup/The Evolution of Programming | The Standup [qhzTawm3_6Y].mp4", ~U[2026-07-24 12:12:20Z], 37] 14:12:20.391 [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/37/metadata.json.gz", "/config/metadata/media_items/37/thumbnail.jpg", 37, ~U[2026-07-24 12:12:20Z], ~U[2026-07-24 12:12:20Z]] 14:12:20.391 [debug] QUERY OK db=0.3ms commit [] 14:12:20.392 [debug] QUERY OK source="media_items" db=0.7ms idle=915.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [571509992, ~U[2026-07-24 12:12:20Z], 37] 14:12:20.393 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:20.393 [info] {"args":{"id":37},"id":41,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":39679566,"event":"job:stop","queue_time":740712854,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:20.399 [info] {"args":{"id":39},"id":43,"meta":{},"system_time":1784895140399520467,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:20.400 [debug] QUERY OK source="media_items" db=0.3ms idle=703.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [39] 14:12:20.400 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:20.400 [debug] QUERY OK source="sources" db=0.3ms idle=8.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:12:20.401 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:20.401 [debug] QUERY OK source="media_items" db=0.4ms idle=7.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [39] 14:12:20.402 [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" = ?) [39] 14:12:20.402 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:20.403 [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 [] 14:12:20.403 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:20.403 [debug] Running yt-dlp command for action: get_downloadable_status 14:12:20.404 [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 [] 14:12:20.405 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:20.405 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:20.405 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0_5aOO980uI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/a8/12a888c88fd203c156bb5ad94f0a80ed64be4ae2d6a3226cbd2476536c17a96f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:22.558 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:22.892 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0_5aOO980uI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/a8/12a888c88fd203c156bb5ad94f0a80ed64be4ae2d6a3226cbd2476536c17a96f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:22.893 [debug] Running yt-dlp command for action: download 14:12:22.893 [debug] QUERY OK source="settings" db=0.2ms idle=1417.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:22.893 [debug] QUERY OK source="settings" db=0.2ms idle=1417.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:22.894 [debug] QUERY OK source="settings" db=0.1ms idle=1175.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:22.894 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0_5aOO980uI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6a/08/6a08026078b4a5cceb47bed32290184ecf62f00de0e1db84cb64a4ce7f7bf2d2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:23.660 [info] POST /sources 14:12:23.661 [debug] Processing with PinchflatWeb.Sources.SourceController.create/2 Parameters: %{"_csrf_token" => "PT8hJQwxDiUlARFDLlA5TxgndUFSNFYZqNgA9nDcWnasT9K7zh33jC9v", "download_cutoff_date_preset" => "", "source" => %{"cookie_behaviour" => "disabled", "custom_name" => "Tiny Desk", "download_cutoff_date" => "", "download_media" => "true", "fast_index" => "false", "index_frequency_minutes" => "1440", "max_duration_seconds" => "", "media_profile_id" => "2", "min_duration_seconds" => "", "original_url" => "https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb", "output_path_template_override" => "", "retention_period_days" => "", "title_filter_regex" => ""}} Pipelines: [:browser] 14:12:23.661 [debug] Running yt-dlp command for action: get_source_details 14:12:23.663 [debug] QUERY OK source="settings" db=0.4ms idle=1104.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:23.664 [debug] QUERY OK source="settings" db=0.6ms idle=944.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:23.665 [debug] QUERY OK source="settings" db=0.7ms idle=771.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:23.665 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/07/95/0795cd48a407e16b44f26dc49f109674acef93dd0db960f25ab285a64a2f3517.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:26.445 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/07/95/0795cd48a407e16b44f26dc49f109674acef93dd0db960f25ab285a64a2f3517.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:26.446 [debug] QUERY OK source="sources" db=0.4ms idle=1722.2ms INSERT INTO "sources" ("enabled","uuid","original_url","media_profile_id","custom_name","collection_id","collection_name","collection_type","download_media","fast_index","index_frequency_minutes","cookie_behaviour","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14) RETURNING "id" [true, "f9883e85-33c0-412e-ae8c-c9ba232542e8", "https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb", 2, "Tiny Desk", "PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX", "Tiny desks", :playlist, true, false, 1440, :disabled, ~U[2026-07-24 12:12:26Z], ~U[2026-07-24 12:12:26Z]] 14:12:26.447 [debug] QUERY OK source="tasks" db=0.5ms idle=970.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."worker" LIKE ?) AND (o1."state" IN (?,?,?,?)) [2, "%.MediaCollectionIndexingWorker", "available", "scheduled", "retryable", "executing"] 14:12:26.448 [debug] QUERY OK source="tasks" db=0.2ms idle=722.7ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [68, 2, ~U[2026-07-24 12:12:26Z], ~U[2026-07-24 12:12:26Z]] 14:12:26.449 [debug] QUERY OK source="tasks" db=0.3ms idle=2.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [69, 2, ~U[2026-07-24 12:12:26Z], ~U[2026-07-24 12:12:26Z]] 14:12:26.450 [debug] QUERY OK source="settings" db=0.4ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.450 [info] Sent 302 in 2789ms 14:12:26.455 [info] {"args":{"id":2},"id":69,"meta":{},"system_time":1784895146455427755,"max_attempts":3,"queue":"remote_metadata","worker":"Pinchflat.Metadata.SourceMetadataStorageWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_source","source_metadata","remote_metadata","show_in_dashboard"]} 14:12:26.455 [debug] QUERY OK source="sources" db=0.2ms idle=7.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:26.456 [debug] QUERY OK source="media_profiles" db=0.2ms idle=7.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:12:26.456 [debug] QUERY OK source="source_metadata" db=0.2ms idle=6.7ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [2] 14:12:26.457 [debug] Running yt-dlp command for action: get_source_details 14:12:26.458 [debug] QUERY OK source="settings" db=0.2ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.458 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.458 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.458 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/f9/c3/f9c37d678a556aed4b90a60e55d5c88bcc57b3b7c37934ef4f028ae996a4c652.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:26.472 [info] GET /sources/2 14:12:26.472 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:12:26.473 [debug] QUERY OK source="sources" db=0.7ms idle=16.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:26.474 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 14:12:26.475 [debug] QUERY OK source="tasks" db=0.2ms queue=0.2ms idle=16.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 (?,?,?,?)) [2, "executing", "available", "scheduled", "retryable"] 14:12:26.475 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=17.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" IN (?,?)) [69, 68] 14:12:26.476 [debug] QUERY OK source="settings" db=0.3ms idle=17.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.476 [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 [] 14:12:26.477 [debug] QUERY OK source="settings" db=0.4ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.478 [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" = ?) [2] 14:12:26.479 [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 (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:12:26.481 [debug] QUERY OK source="media_items" db=1.5ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 14:12:26.483 [debug] QUERY OK source="sources" db=1.3ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:26.483 [debug] QUERY OK source="media_items" db=0.1ms idle=5.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 14:12:26.484 [debug] QUERY OK source="media_items" db=0.4ms idle=4.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 ? [2, 10, 0] 14:12:26.484 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:26.485 [debug] QUERY OK source="media_items" db=0.5ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [2] 14:12:26.486 [debug] QUERY OK source="media_items" db=1.0ms 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 ? [2, 10, 0] 14:12:26.488 [info] Sent 200 in 15ms 14:12:26.733 [info] {"args":{"id":2},"id":68,"meta":{},"system_time":1784895146733410491,"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"]} 14:12:26.734 [debug] QUERY OK source="sources" db=0.4ms idle=248.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:26.734 [debug] QUERY OK source="settings" db=0.3ms idle=248.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.736 [debug] QUERY OK source="media_items" db=0.6ms queue=0.7ms idle=247.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")))) [2] 14:12:26.737 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=9.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 14:12:26.738 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:12:26.739 [debug] QUERY OK source="settings" db=0.8ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.740 [debug] QUERY OK source="settings" db=0.6ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.741 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 14:12:26.741 [debug] Current batch of media processed. Will check again in 1000ms 14:12:26.741 [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 [] 14:12:26.742 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:26.742 [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:12:26.743 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/9f/8c/9f8c14c7d7dfb44b5a2de36e9797d7b0a92c9837ad863e6f6dfbaa17facb2d0b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:27.741 [debug] Current batch of media processed. Will check again in 1000ms 14:12:28.742 [debug] Current batch of media processed. Will check again in 1000ms 14:12:29.007 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tpe1bLzydhU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/05/71/0571f5adbff1254f5467c0fcd74902c09929881037a8015500ebc82e04ef7b38.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:29.028 [debug] Running yt-dlp command for action: download_thumbnail 14:12:29.029 [debug] QUERY OK source="settings" db=0.2ms idle=553.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:29.029 [debug] QUERY OK source="settings" db=0.4ms idle=553.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:29.030 [debug] QUERY OK source="settings" db=0.1ms idle=553.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:29.030 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tpe1bLzydhU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/38/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8c/75/8c75f015ebd6aba0c4a26c93260d4cb057055f52a4d675033eb7ac5ef2880791.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:29.562 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --simulate --skip-download --ignore-no-formats-error --playlist-end 1 --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file %(.{channel,channel_id,playlist_id,playlist_title,filename})j /tmp/pinchflat/data/f9/c3/f9c37d678a556aed4b90a60e55d5c88bcc57b3b7c37934ef4f028ae996a4c652.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:29.563 [debug] Running yt-dlp command for action: get_source_metadata 14:12:29.563 [debug] QUERY OK source="settings" db=0.1ms idle=1087.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:29.564 [debug] QUERY OK source="settings" db=0.2ms idle=833.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:29.564 [debug] QUERY OK source="settings" db=0.2ms idle=535.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:29.564 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --skip-download --convert-thumbnails jpg --output /tmp/pinchflat/data/7c36f4aeb3bd9fbe/source_image.%(ext)S --write-thumbnail --playlist-items 1 --print-to-file playlist:%()j /tmp/pinchflat/data/19/2d/192da7ff109c549d024decb4d5d463d274ab6c73696393894468638876286077.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:29.743 [debug] Current batch of media processed. Will check again in 1000ms 14:12:30.744 [debug] Current batch of media processed. Will check again in 1000ms 14:12:31.745 [debug] Current batch of media processed. Will check again in 1000ms 14:12:32.428 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=tpe1bLzydhU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/38/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8c/75/8c75f015ebd6aba0c4a26c93260d4cb057055f52a4d675033eb7ac5ef2880791.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:32.429 [debug] QUERY OK db=0.1ms queue=0.2ms idle=1692.8ms begin [] 14:12:32.431 [debug] QUERY OK source="media_items" db=2.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:12:29Z], "/downloads/The Standup/2025-08-01 Casey Muratori's Origin Story | The Standup/Casey Muratori's Origin Story | The Standup [tpe1bLzydhU].mp4", ~U[2026-07-24 12:12:32Z], 38] 14:12:32.433 [debug] QUERY OK source="media_metadata" db=1.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/38/metadata.json.gz", "/config/metadata/media_items/38/thumbnail.jpg", 38, ~U[2026-07-24 12:12:32Z], ~U[2026-07-24 12:12:32Z]] 14:12:32.434 [debug] QUERY OK db=0.1ms commit [] 14:12:32.436 [debug] QUERY OK source="media_items" db=1.4ms idle=957.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [207468730, ~U[2026-07-24 12:12:32Z], 38] 14:12:32.436 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:32.436 [info] {"args":{"id":38},"id":42,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":23229587,"event":"job:stop","queue_time":767206072,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:32.444 [info] {"args":{"id":40},"id":44,"meta":{},"system_time":1784895152443868572,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:32.444 [debug] QUERY OK source="media_items" db=0.7ms idle=705.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40] 14:12:32.445 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:32.445 [debug] QUERY OK source="sources" db=0.2ms idle=10.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:12:32.446 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:32.446 [debug] QUERY OK source="media_items" db=0.5ms 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 [40] 14:12:32.447 [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" = ?) [40] 14:12:32.448 [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] 14:12:32.448 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:32.448 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:32.449 [debug] Running yt-dlp command for action: get_downloadable_status 14:12:32.449 [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 [] 14:12:32.450 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:32.450 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:32.450 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e1/01/e101f2148235ddf604f580ffd76eb895f4f24a975e72a5632a5bd37aa7f179a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:32.617 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --skip-download --convert-thumbnails jpg --output /tmp/pinchflat/data/7c36f4aeb3bd9fbe/source_image.%(ext)S --write-thumbnail --playlist-items 1 --print-to-file playlist:%()j /tmp/pinchflat/data/19/2d/192da7ff109c549d024decb4d5d463d274ab6c73696393894468638876286077.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:32.622 [debug] QUERY OK db=0.0ms idle=173.8ms begin [] 14:12:32.623 [debug] QUERY OK source="sources" db=0.5ms UPDATE "sources" SET "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:12:32Z], 2] 14:12:32.623 [debug] QUERY OK source="source_metadata" db=0.4ms INSERT INTO "source_metadata" ("metadata_filepath","source_id","poster_filepath","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/sources/2/metadata.json.gz", 2, "/config/metadata/sources/2/poster.jpg", ~U[2026-07-24 12:12:32Z], ~U[2026-07-24 12:12:32Z]] 14:12:32.624 [debug] QUERY OK db=0.4ms commit [] 14:12:32.625 [info] {"args":{"id":2},"id":69,"meta":{},"state":"success","max_attempts":3,"queue":"remote_metadata","worker":"Pinchflat.Metadata.SourceMetadataStorageWorker","source":"oban","duration":6168819,"event":"job:stop","queue_time":454782,"attempt":1,"tags":["media_source","source_metadata","remote_metadata","show_in_dashboard"]} 14:12:32.747 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Stephen Thompson | March 21, 2024\nIt’s become a Tiny Desk tradition for artists to leave a small offering on the shelves — a tchotchke, a toy, a signed album or piece of swag, a guitar pick, that sort of thing. Usually, those pieces get absorbed into the visual din, but sometimes, they change the look of the Tiny Desk permanently. All of which is to say that when Chappell Roan finished her magnetic performance, we immediately sought her out to sheepishly ask if we could keep her wig.\n\nRoan’s marvelous debut album, The Rise and Fall of a Midwest Princess, came out last September — just in time to fit into the window of eligibility for the 2025 Grammys, hint hint wink — and it finds the singer toying confidently with a persona inspired in part by drag performers. Flanked by a pink-clad band, she wasn’t about to pass up the opportunity to serve up an absolute look, complete with white makeup and a towering wig (bolstered by a wadded-up trash bag tucked inside, as well as an assortment of stubbed-out cigarette butts), which now sits comfortably atop a skull Cypress Hill left us.\n\nIt’s only appropriate that Roan would forever alter the Tiny Desk. Because, at the risk of sounding hyperbolic, this is a stunning set: Performing five songs from Midwest Princess, Roan worked through songs of youthful heartache (“Casual”), queer liberation (“Pink Pony Club”), mournful alienation (“California”) and two decidedly different forms of chaotic seduction (“Picture You,” “Red Wine Supernova”). In every mood and every song, she’s utterly commanding — witty and whip-smart, vocally assured and charismatic beyond words.\n\nShe didn’t just leave her wig; she left a mark.\n\nSET LIST\n“Casual”\n“Pink Pony Club”\n“Picture You”\n“California”\n“Red Wine Supernova”\n\nMUSICIANS\nChappell Roan: lead vocals\nEliza Petrosyan: guitar\nLucy Ritter: drums\nValeria Falcon: bass\nSarah Hinez: keys \nDanica Pinner: cello \nMia Pfirrman: vocals\nEmily Lenck: violin\n\nTINY DESK TEAM\nProducer: Stephen Thompson\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Zayrha Rodriguez \nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Elizabeth Gillis\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #chappellroan \n0:14 Casual\n5:00 Pink Pony Club\n10:03 Picture You\n15:05 California \n19:30 Red Wine Supernova", "duration" => 1381, "filename" => "/downloads/Tiny Desk/2024-03-21 Chappell Roan: Tiny Desk Concert/Chappell Roan: Tiny Desk Concert [w4WiXKGCJhg].mp4", "id" => "w4WiXKGCJhg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=w4WiXKGCJhg", "playlist_index" => 1, "timestamp" => 1711011647, "title" => "Chappell Roan: Tiny Desk Concert", "upload_date" => "20240321"} 14:12:32.748 [debug] QUERY OK source="sources" db=0.8ms idle=296.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:32.748 [debug] QUERY OK source="sources" db=0.6ms idle=124.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:32.750 [debug] QUERY OK source="media_items" db=0.2ms queue=0.7ms idle=124.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-03-21 09:00:47Z], 2] 14:12:32.754 [debug] QUERY OK source="media_items" db=4.2ms idle=118.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | March 21, 2024\nIt’s become a Tiny Desk tradition for artists to leave a small offering on the shelves — a tchotchke, a toy, a signed album or piece of swag, a guitar pick, that sort of thing. Usually, those pieces get absorbed into the visual din, but sometimes, they change the look of the Tiny Desk permanently. All of which is to say that when Chappell Roan finished her magnetic performance, we immediately sought her out to sheepishly ask if we could keep her wig.\n\nRoan’s marvelous debut album, The Rise and Fall of a Midwest Princess, came out last September — just in time to fit into the window of eligibility for the 2025 Grammys, hint hint wink — and it finds the singer toying confidently with a persona inspired in part by drag performers. Flanked by a pink-clad band, she wasn’t about to pass up the opportunity to serve up an absolute look, complete with white makeup and a towering wig (bolstered by a wadded-up trash bag tucked inside, as well as an assortment of stubbed-out cigarette butts), which now sits comfortably atop a skull Cypress Hill left us.\n\nIt’s only appropriate that Roan would forever alter the Tiny Desk. Because, at the risk of sounding hyperbolic, this is a stunning set: Performing five songs from Midwest Princess, Roan worked through songs of youthful heartache (“Casual”), queer liberation (“Pink Pony Club”), mournful alienation (“California”) and two decidedly different forms of chaotic seduction (“Picture You,” “Red Wine Supernova”). In every mood and every song, she’s utterly commanding — witty and whip-smart, vocally assured and charismatic beyond words.\n\nShe didn’t just leave her wig; she left a mark.\n\nSET LIST\n“Casual”\n“Pink Pony Club”\n“Picture You”\n“California”\n“Red Wine Supernova”\n\nMUSICIANS\nChappell Roan: lead vocals\nEliza Petrosyan: guitar\nLucy Ritter: drums\nValeria Falcon: bass\nSarah Hinez: keys \nDanica Pinner: cello \nMia Pfirrman: vocals\nEmily Lenck: violin\n\nTINY DESK TEAM\nProducer: Stephen Thompson\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Zayrha Rodriguez \nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Elizabeth Gillis\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #chappellroan \n0:14 Casual\n5:00 Pink Pony Club\n10:03 Picture You\n15:05 California \n19:30 Red Wine Supernova", "Chappell Roan: Tiny Desk Concert", "bdc1a7c4-7ad9-43bc-be9e-92a5f7b81724", 1381, false, "w4WiXKGCJhg", "https://www.youtube.com/watch?v=w4WiXKGCJhg", 1, "/downloads/Tiny Desk/2024-03-21 Chappell Roan: Tiny Desk Concert/Chappell Roan: Tiny Desk Concert [w4WiXKGCJhg].mp4", false, false, false, 2, [], 0, ~U[2024-03-21 09:00:47Z], ~U[2026-07-24 12:12:32Z], ~U[2026-07-24 12:12:32Z], "Stephen Thompson | March 21, 2024\nIt’s become a Tiny Desk tradition for artists to leave a small offering on the shelves — a tchotchke, a toy, a signed album or piece of swag, a guitar pick, that sort of thing. Usually, those pieces get absorbed into the visual din, but sometimes, they change the look of the Tiny Desk permanently. All of which is to say that when Chappell Roan finished her magnetic performance, we immediately sought her out to sheepishly ask if we could keep her wig.\n\nRoan’s marvelous debut album, The Rise and Fall of a Midwest Princess, came out last September — just in time to fit into the window of eligibility for the 2025 Grammys, hint hint wink — and it finds the singer toying confidently with a persona inspired in part by drag performers. Flanked by a pink-clad band, she wasn’t about to pass up the opportunity to serve up an absolute look, complete with white makeup and a towering wig (bolstered by a wadded-up trash bag tucked inside, as well as an assortment of stubbed-out cigarette butts), which now sits comfortably atop a skull Cypress Hill left us.\n\nIt’s only appropriate that Roan would forever alter the Tiny Desk. Because, at the risk of sounding hyperbolic, this is a stunning set: Performing five songs from Midwest Princess, Roan worked through songs of youthful heartache (“Casual”), queer liberation (“Pink Pony Club”), mournful alienation (“California”) and two decidedly different forms of chaotic seduction (“Picture You,” “Red Wine Supernova”). In every mood and every song, she’s utterly commanding — witty and whip-smart, vocally assured and charismatic beyond words.\n\nShe didn’t just leave her wig; she left a mark.\n\nSET LIST\n“Casual”\n“Pink Pony Club”\n“Picture You”\n“California”\n“Red Wine Supernova”\n\nMUSICIANS\nChappell Roan: lead vocals\nEliza Petrosyan: guitar\nLucy Ritter: drums\nValeria Falcon: bass\nSarah Hinez: keys \nDanica Pinner: cello \nMia Pfirrman: vocals\nEmily Lenck: violin\n\nTINY DESK TEAM\nProducer: Stephen Thompson\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Zayrha Rodriguez \nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Elizabeth Gillis\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #chappellroan \n0:14 Casual\n5:00 Pink Pony Club\n10:03 Picture You\n15:05 California \n19:30 Red Wine Supernova", "Chappell Roan: Tiny Desk Concert", 1381, false, "w4WiXKGCJhg", "https://www.youtube.com/watch?v=w4WiXKGCJhg", "/downloads/Tiny Desk/2024-03-21 Chappell Roan: Tiny Desk Concert/Chappell Roan: Tiny Desk Concert [w4WiXKGCJhg].mp4", false, 2, ~U[2024-03-21 09:00:47Z]] 14:12:32.755 [debug] QUERY OK source="sources" db=0.3ms 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] 14:12:32.756 [debug] QUERY OK source="media_profiles" db=0.2ms 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" = ?) [2] 14:12:32.756 [debug] QUERY OK source="media_items" db=0.3ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [122] 14:12:32.756 [info] Kicking off download for media item #122 (w4WiXKGCJhg) 14:12:32.759 [debug] QUERY OK source="tasks" db=0.3ms queue=0.2ms idle=3.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [70, 122, ~U[2026-07-24 12:12:32Z], ~U[2026-07-24 12:12:32Z]] 14:12:32.759 [debug] Current batch of media processed. Will check again in 1000ms 14:12:33.759 [debug] Current batch of media processed. Will check again in 1000ms 14:12:34.760 [debug] Current batch of media processed. Will check again in 1000ms 14:12:34.956 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e1/01/e101f2148235ddf604f580ffd76eb895f4f24a975e72a5632a5bd37aa7f179a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:34.956 [debug] Running yt-dlp command for action: download 14:12:34.957 [debug] QUERY OK source="settings" db=0.9ms idle=479.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:34.958 [debug] QUERY OK source="settings" db=0.2ms idle=480.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:34.958 [debug] QUERY OK source="settings" db=0.1ms idle=481.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:34.958 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/aa/02/aa0225e331daf0bf2e689a0529f856109a6d2e40d7f948750183f40a4f160072.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:35.762 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ashley Pointer | December 6, 2024\nDoechii, known as the \"Swamp Princess,\" arrived at NPR HQ radiating confidence. She moved with purpose, knowing exactly what she wanted and how to achieve it. Her declarative statement, \"I'm everything,\" from \"BOOM BAP\" off her Grammy-nominated mixtape, ALLIGATOR BITES NEVER HEAL, was on full display in her Tiny Desk debut.\n\nBacked by a full band, horns and two background singers, Doechii's performance was a masterclass in creativity. Sporting vintage academia looks, complete with matching cornrows and beads, Doechii delivers a freshly rearranged medley of cuts from ALLIGATOR BITES NEVER HEAL, tailored specifically for Tiny Desk. While hip-hop remained at the core, she truly gave us everything: a jazz arrangement of \"BOOM BAP,\" heavy rock vibes on \"CATFISH\" and a Southern praise break outro on \"NISSAN ALTIMA.\"\n\nShe closed her set with \"Black Girl Memoir\" from her debut album, Oh The Places You'll Go. Before performing, she shared, \"I wrote this song specifically for Black women. As a dark-skinned woman, there's a very unique experience I'm trying to internalize … This is dedicated to all the beautiful Black women in the room.\" While her star has been steadily on the rise since her debut, 2024 is shaping up to be the year Doechii cements herself as a household name.\n\nSET LIST\n\"BOOM BAP\"\n\"BOILED PEANUTS\"\n\"DENIAL IS A RIVER\"\n\"CATFISH\"\n\"NISSAN ALTIMA\"\n\"BULLFROG\"\n\"HIDE N SEEK\"\n\"Black Girl Memoir\"\n\nMUSICIANS\nDoechii: vocals\nTyler Victoria: guitar\nDee Simone: drums\nTatiana Tate: trumpeter, arrangement\nHammondgal: keyboards \nDJ Miss Milan: vocals\nBREN'NAE: background vocals\nEmmani: background vocals\nKeschia Potter : saxophone\nZuri Appleby: bassist\nSlimWav: musical direction\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Josh Newell\nVideographers: Joshua Bryant, Kara Frame, Sofia Seidel, Wendy Li\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Elle Mannion\nPhotographer: Alanté Serene\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #doechii \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "duration" => 1420, "filename" => "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].mp4", "id" => "-91vymvIH0c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-91vymvIH0c", "playlist_index" => 2, "timestamp" => 1733504406, "title" => "Doechii: Tiny Desk Concert", "upload_date" => "20241206"} 14:12:35.763 [debug] QUERY OK source="sources" db=0.7ms idle=1019.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:35.770 [debug] QUERY OK source="sources" db=6.7ms idle=805.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:35.778 [debug] QUERY OK source="media_items" db=8.1ms idle=812.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-12-06 17:00:06Z], 2] 14:12:35.781 [debug] QUERY OK source="media_items" db=2.2ms idle=820.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ashley Pointer | December 6, 2024\nDoechii, known as the \"Swamp Princess,\" arrived at NPR HQ radiating confidence. She moved with purpose, knowing exactly what she wanted and how to achieve it. Her declarative statement, \"I'm everything,\" from \"BOOM BAP\" off her Grammy-nominated mixtape, ALLIGATOR BITES NEVER HEAL, was on full display in her Tiny Desk debut.\n\nBacked by a full band, horns and two background singers, Doechii's performance was a masterclass in creativity. Sporting vintage academia looks, complete with matching cornrows and beads, Doechii delivers a freshly rearranged medley of cuts from ALLIGATOR BITES NEVER HEAL, tailored specifically for Tiny Desk. While hip-hop remained at the core, she truly gave us everything: a jazz arrangement of \"BOOM BAP,\" heavy rock vibes on \"CATFISH\" and a Southern praise break outro on \"NISSAN ALTIMA.\"\n\nShe closed her set with \"Black Girl Memoir\" from her debut album, Oh The Places You'll Go. Before performing, she shared, \"I wrote this song specifically for Black women. As a dark-skinned woman, there's a very unique experience I'm trying to internalize … This is dedicated to all the beautiful Black women in the room.\" While her star has been steadily on the rise since her debut, 2024 is shaping up to be the year Doechii cements herself as a household name.\n\nSET LIST\n\"BOOM BAP\"\n\"BOILED PEANUTS\"\n\"DENIAL IS A RIVER\"\n\"CATFISH\"\n\"NISSAN ALTIMA\"\n\"BULLFROG\"\n\"HIDE N SEEK\"\n\"Black Girl Memoir\"\n\nMUSICIANS\nDoechii: vocals\nTyler Victoria: guitar\nDee Simone: drums\nTatiana Tate: trumpeter, arrangement\nHammondgal: keyboards \nDJ Miss Milan: vocals\nBREN'NAE: background vocals\nEmmani: background vocals\nKeschia Potter : saxophone\nZuri Appleby: bassist\nSlimWav: musical direction\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Josh Newell\nVideographers: Joshua Bryant, Kara Frame, Sofia Seidel, Wendy Li\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Elle Mannion\nPhotographer: Alanté Serene\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #doechii \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Doechii: Tiny Desk Concert", "f581ca42-03d3-43c3-a956-715c800f1d59", 1420, false, "-91vymvIH0c", "https://www.youtube.com/watch?v=-91vymvIH0c", 2, "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].mp4", false, false, false, 2, [], 0, ~U[2024-12-06 17:00:06Z], ~U[2026-07-24 12:12:35Z], ~U[2026-07-24 12:12:35Z], "Ashley Pointer | December 6, 2024\nDoechii, known as the \"Swamp Princess,\" arrived at NPR HQ radiating confidence. She moved with purpose, knowing exactly what she wanted and how to achieve it. Her declarative statement, \"I'm everything,\" from \"BOOM BAP\" off her Grammy-nominated mixtape, ALLIGATOR BITES NEVER HEAL, was on full display in her Tiny Desk debut.\n\nBacked by a full band, horns and two background singers, Doechii's performance was a masterclass in creativity. Sporting vintage academia looks, complete with matching cornrows and beads, Doechii delivers a freshly rearranged medley of cuts from ALLIGATOR BITES NEVER HEAL, tailored specifically for Tiny Desk. While hip-hop remained at the core, she truly gave us everything: a jazz arrangement of \"BOOM BAP,\" heavy rock vibes on \"CATFISH\" and a Southern praise break outro on \"NISSAN ALTIMA.\"\n\nShe closed her set with \"Black Girl Memoir\" from her debut album, Oh The Places You'll Go. Before performing, she shared, \"I wrote this song specifically for Black women. As a dark-skinned woman, there's a very unique experience I'm trying to internalize … This is dedicated to all the beautiful Black women in the room.\" While her star has been steadily on the rise since her debut, 2024 is shaping up to be the year Doechii cements herself as a household name.\n\nSET LIST\n\"BOOM BAP\"\n\"BOILED PEANUTS\"\n\"DENIAL IS A RIVER\"\n\"CATFISH\"\n\"NISSAN ALTIMA\"\n\"BULLFROG\"\n\"HIDE N SEEK\"\n\"Black Girl Memoir\"\n\nMUSICIANS\nDoechii: vocals\nTyler Victoria: guitar\nDee Simone: drums\nTatiana Tate: trumpeter, arrangement\nHammondgal: keyboards \nDJ Miss Milan: vocals\nBREN'NAE: background vocals\nEmmani: background vocals\nKeschia Potter : saxophone\nZuri Appleby: bassist\nSlimWav: musical direction\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Josh Newell\nVideographers: Joshua Bryant, Kara Frame, Sofia Seidel, Wendy Li\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Elle Mannion\nPhotographer: Alanté Serene\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #doechii \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Doechii: Tiny Desk Concert", 1420, false, "-91vymvIH0c", "https://www.youtube.com/watch?v=-91vymvIH0c", "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].mp4", false, 2, ~U[2024-12-06 17:00:06Z]] 14:12:35.782 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms 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] 14:12:35.784 [debug] QUERY OK source="media_profiles" db=1.1ms queue=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" = ?) [2] 14:12:35.785 [debug] QUERY OK source="media_items" db=0.5ms idle=14.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [123] 14:12:35.785 [info] Kicking off download for media item #123 (-91vymvIH0c) 14:12:35.789 [debug] QUERY OK source="tasks" db=2.0ms idle=4.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [71, 123, ~U[2026-07-24 12:12:35Z], ~U[2026-07-24 12:12:35Z]] 14:12:35.790 [debug] Current batch of media processed. Will check again in 1000ms 14:12:36.790 [debug] Current batch of media processed. Will check again in 1000ms 14:12:37.555 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/aa/02/aa0225e331daf0bf2e689a0529f856109a6d2e40d7f948750183f40a4f160072.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: unable to download video data: HTTP Error 403: Forbidden 14:12:37.555 [error] yt-dlp download error for media item #40: "ERROR: unable to download video data: HTTP Error 403: Forbidden\n" 14:12:37.557 [debug] QUERY OK source="media_items" db=1.4ms idle=810.1ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: unable to download video data: HTTP Error 403: Forbidden\n", ~U[2026-07-24 12:12:37Z], 40] 14:12:37.557 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":40},"id":44,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5113614,"event":"job:exception","queue_time":787442759,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:37.564 [info] {"args":{"id":41},"id":45,"meta":{},"system_time":1784895157564393008,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:37.564 [debug] QUERY OK source="media_items" db=0.2ms idle=87.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" = ?) [41] 14:12:37.565 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:37.565 [debug] QUERY OK source="sources" db=0.1ms idle=88.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:12:37.565 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:37.566 [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 [41] 14:12:37.567 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [41] 14:12:37.568 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 14:12:37.568 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:37.568 [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 [] 14:12:37.568 [debug] Running yt-dlp command for action: get_downloadable_status 14:12:37.569 [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 [] 14:12:37.569 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:37.569 [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 [] 14:12:37.570 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=RlTVMi4JzZA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/a6/46a6f6e4d43574410fb5b3da37ef19607e59651e9f3b846ce621b786bb4a2e67.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:37.792 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Elle Mannion | January 31, 2025\nIf you want it, Faye Webster’s Tiny Desk can offer an escape. Featuring her longtime band and a string quartet, Webster guides us through a swooning and sweeping set culled from her quickly growing catalog. \n\nWebster’s Underdressed at the Symphony was inspired by just that: Buying last-minute tickets to the symphony orchestra in her hometown of Atlanta and finding the experience otherworldly. She performs “But Not Kiss” and the title track from that album. Webster is a gentle but captivating performer in this space, at times grooving with her locked-in band. But she also appears to be in a trance of her own, like on the Atlanta Millionaires Club cuts “Jonny” and its spoken-word reprise. The horns heard on those original recordings gave everything a brassy warmth, but here Trey Pollard’s string arrangements enhance this Tiny Desk’s dream-like quality. \n\nSET LIST\n“In A Good Way”\n“But Not Kiss”\n“Underdressed at the Symphony”\n“Jonny”\n“Jonny (Reprise)”\n\nMUSICIANS\nFaye Webster: vocals, guitar\nNoor Khan: bass, backing vocals\nMatthew Stoessel: guitar, pedal steel \nNick Rosen: piano\nCharles Garner: drums, percussion\nEllen Riccio: violin \nDanielle Wiebe Burke: viola \nStephanie Barrett: cello \nAnnie Leeth: violin\n\nTINY DESK TEAM\nProducer: Elle Mannion\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Sofia Seidel\nAudio Engineer: Andie Huether\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #fayewebster", "duration" => 1187, "filename" => "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].mp4", "id" => "1ul9aWg0AQo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1ul9aWg0AQo", "playlist_index" => 3, "timestamp" => 1738317602, "title" => "Faye Webster: Tiny Desk Concert", "upload_date" => "20250131"} 14:12:37.792 [debug] QUERY OK source="sources" db=0.3ms idle=223.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:12:37.793 [debug] QUERY OK source="sources" db=0.5ms idle=223.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:37.793 [debug] QUERY OK source="media_items" db=0.2ms idle=223.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-01-31 10:00:02Z], 2] 14:12:37.795 [debug] QUERY OK source="media_items" db=1.4ms idle=224.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Elle Mannion | January 31, 2025\nIf you want it, Faye Webster’s Tiny Desk can offer an escape. Featuring her longtime band and a string quartet, Webster guides us through a swooning and sweeping set culled from her quickly growing catalog. \n\nWebster’s Underdressed at the Symphony was inspired by just that: Buying last-minute tickets to the symphony orchestra in her hometown of Atlanta and finding the experience otherworldly. She performs “But Not Kiss” and the title track from that album. Webster is a gentle but captivating performer in this space, at times grooving with her locked-in band. But she also appears to be in a trance of her own, like on the Atlanta Millionaires Club cuts “Jonny” and its spoken-word reprise. The horns heard on those original recordings gave everything a brassy warmth, but here Trey Pollard’s string arrangements enhance this Tiny Desk’s dream-like quality. \n\nSET LIST\n“In A Good Way”\n“But Not Kiss”\n“Underdressed at the Symphony”\n“Jonny”\n“Jonny (Reprise)”\n\nMUSICIANS\nFaye Webster: vocals, guitar\nNoor Khan: bass, backing vocals\nMatthew Stoessel: guitar, pedal steel \nNick Rosen: piano\nCharles Garner: drums, percussion\nEllen Riccio: violin \nDanielle Wiebe Burke: viola \nStephanie Barrett: cello \nAnnie Leeth: violin\n\nTINY DESK TEAM\nProducer: Elle Mannion\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Sofia Seidel\nAudio Engineer: Andie Huether\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #fayewebster", "Faye Webster: Tiny Desk Concert", "de28bb5f-aa12-41fc-a016-ca1a0d4873d9", 1187, false, "1ul9aWg0AQo", "https://www.youtube.com/watch?v=1ul9aWg0AQo", 3, "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].mp4", false, false, false, 2, [], 0, ~U[2025-01-31 10:00:02Z], ~U[2026-07-24 12:12:37Z], ~U[2026-07-24 12:12:37Z], "Elle Mannion | January 31, 2025\nIf you want it, Faye Webster’s Tiny Desk can offer an escape. Featuring her longtime band and a string quartet, Webster guides us through a swooning and sweeping set culled from her quickly growing catalog. \n\nWebster’s Underdressed at the Symphony was inspired by just that: Buying last-minute tickets to the symphony orchestra in her hometown of Atlanta and finding the experience otherworldly. She performs “But Not Kiss” and the title track from that album. Webster is a gentle but captivating performer in this space, at times grooving with her locked-in band. But she also appears to be in a trance of her own, like on the Atlanta Millionaires Club cuts “Jonny” and its spoken-word reprise. The horns heard on those original recordings gave everything a brassy warmth, but here Trey Pollard’s string arrangements enhance this Tiny Desk’s dream-like quality. \n\nSET LIST\n“In A Good Way”\n“But Not Kiss”\n“Underdressed at the Symphony”\n“Jonny”\n“Jonny (Reprise)”\n\nMUSICIANS\nFaye Webster: vocals, guitar\nNoor Khan: bass, backing vocals\nMatthew Stoessel: guitar, pedal steel \nNick Rosen: piano\nCharles Garner: drums, percussion\nEllen Riccio: violin \nDanielle Wiebe Burke: viola \nStephanie Barrett: cello \nAnnie Leeth: violin\n\nTINY DESK TEAM\nProducer: Elle Mannion\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Sofia Seidel\nAudio Engineer: Andie Huether\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #fayewebster", "Faye Webster: Tiny Desk Concert", 1187, false, "1ul9aWg0AQo", "https://www.youtube.com/watch?v=1ul9aWg0AQo", "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].mp4", false, 2, ~U[2025-01-31 10:00:02Z]] 14:12:37.796 [debug] QUERY OK source="sources" db=0.3ms idle=49.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:37.797 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:12:37.797 [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 [124] 14:12:37.797 [info] Kicking off download for media item #124 (1ul9aWg0AQo) 14:12:37.800 [debug] QUERY OK source="tasks" db=0.2ms idle=3.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [72, 124, ~U[2026-07-24 12:12:37Z], ~U[2026-07-24 12:12:37Z]] 14:12:37.800 [debug] Current batch of media processed. Will check again in 1000ms 14:12:38.801 [debug] Current batch of media processed. Will check again in 1000ms 14:12:39.803 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Anamaria Sayre | December 12, 2024\nSaudade is a Portuguese word that can be roughly defined as a feeling of melancholy, nostalgia or yearning for something that is beloved but not present. There's no perfect translation, but one of the closest English expressions of the word I've ever seen is Billie Eilish's Tiny Desk performance.\n\nYou'd think the Los Angeles-born singer invented the term. Every breath is so full of indulgent melancholy, hopeful regret, at 22 years old she's become a captivating fixture of what it means, or rather what it feels, to love and lose simultaneously.\n\nTrading belting vocals and rocking guitar for gentle piano and almost-breaking falsetto, she reimagines tracks like \"THE GREATEST\" in their most raw and honest form. In Eilish's world, love's purest forms are inherently terrifying. Therein lies her starpower – she effortlessly, relentlessly brings to the fore the trickier emotions many of us tuck away for fear of what the world might think.\n\n\"I don't know what I'm crying for, I don't think I could love you more,\" she sings on \"BIRDS OF A FEATHER.\" Turns out the world is made up of a lot of people who just want to be seen, and this stripped down set is the perfect space for Eilish to give listeners just that.\n\nSET LIST\n\"THE GREATEST\"\n\"L'AMOUR DE MA VIE\"\n\"i love you\"\n\"BIRDS OF A FEATHER\"\n\nMUSICIANS\nBillie Eilish: vocals\nFinneas: guitar\nAndrew Marshall: drums\nSolo Smith: bass\nAbe Nouri: piano\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Alanté Serene\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #billieeilish \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "duration" => 1338, "filename" => "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].mp4", "id" => "fOAIrUZbOwo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=fOAIrUZbOwo", "playlist_index" => 4, "timestamp" => 1734022806, "title" => "Billie Eilish: Tiny Desk Concert", "upload_date" => "20241212"} 14:12:39.803 [debug] QUERY OK source="sources" db=0.1ms idle=325.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:39.803 [debug] QUERY OK source="sources" db=0.1ms idle=325.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:39.804 [debug] QUERY OK source="media_items" db=0.4ms idle=326.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-12-12 17:00:06Z], 2] 14:12:39.806 [debug] QUERY OK source="media_items" db=1.3ms idle=326.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Anamaria Sayre | December 12, 2024\nSaudade is a Portuguese word that can be roughly defined as a feeling of melancholy, nostalgia or yearning for something that is beloved but not present. There's no perfect translation, but one of the closest English expressions of the word I've ever seen is Billie Eilish's Tiny Desk performance.\n\nYou'd think the Los Angeles-born singer invented the term. Every breath is so full of indulgent melancholy, hopeful regret, at 22 years old she's become a captivating fixture of what it means, or rather what it feels, to love and lose simultaneously.\n\nTrading belting vocals and rocking guitar for gentle piano and almost-breaking falsetto, she reimagines tracks like \"THE GREATEST\" in their most raw and honest form. In Eilish's world, love's purest forms are inherently terrifying. Therein lies her starpower – she effortlessly, relentlessly brings to the fore the trickier emotions many of us tuck away for fear of what the world might think.\n\n\"I don't know what I'm crying for, I don't think I could love you more,\" she sings on \"BIRDS OF A FEATHER.\" Turns out the world is made up of a lot of people who just want to be seen, and this stripped down set is the perfect space for Eilish to give listeners just that.\n\nSET LIST\n\"THE GREATEST\"\n\"L'AMOUR DE MA VIE\"\n\"i love you\"\n\"BIRDS OF A FEATHER\"\n\nMUSICIANS\nBillie Eilish: vocals\nFinneas: guitar\nAndrew Marshall: drums\nSolo Smith: bass\nAbe Nouri: piano\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Alanté Serene\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #billieeilish \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Billie Eilish: Tiny Desk Concert", "482ef7a6-963a-4751-b84d-385d1e9e267e", 1338, false, "fOAIrUZbOwo", "https://www.youtube.com/watch?v=fOAIrUZbOwo", 4, "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].mp4", false, false, false, 2, [], 0, ~U[2024-12-12 17:00:06Z], ~U[2026-07-24 12:12:39Z], ~U[2026-07-24 12:12:39Z], "Anamaria Sayre | December 12, 2024\nSaudade is a Portuguese word that can be roughly defined as a feeling of melancholy, nostalgia or yearning for something that is beloved but not present. There's no perfect translation, but one of the closest English expressions of the word I've ever seen is Billie Eilish's Tiny Desk performance.\n\nYou'd think the Los Angeles-born singer invented the term. Every breath is so full of indulgent melancholy, hopeful regret, at 22 years old she's become a captivating fixture of what it means, or rather what it feels, to love and lose simultaneously.\n\nTrading belting vocals and rocking guitar for gentle piano and almost-breaking falsetto, she reimagines tracks like \"THE GREATEST\" in their most raw and honest form. In Eilish's world, love's purest forms are inherently terrifying. Therein lies her starpower – she effortlessly, relentlessly brings to the fore the trickier emotions many of us tuck away for fear of what the world might think.\n\n\"I don't know what I'm crying for, I don't think I could love you more,\" she sings on \"BIRDS OF A FEATHER.\" Turns out the world is made up of a lot of people who just want to be seen, and this stripped down set is the perfect space for Eilish to give listeners just that.\n\nSET LIST\n\"THE GREATEST\"\n\"L'AMOUR DE MA VIE\"\n\"i love you\"\n\"BIRDS OF A FEATHER\"\n\nMUSICIANS\nBillie Eilish: vocals\nFinneas: guitar\nAndrew Marshall: drums\nSolo Smith: bass\nAbe Nouri: piano\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Alanté Serene\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #billieeilish \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Billie Eilish: Tiny Desk Concert", 1338, false, "fOAIrUZbOwo", "https://www.youtube.com/watch?v=fOAIrUZbOwo", "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].mp4", false, 2, ~U[2024-12-12 17:00:06Z]] 14:12:39.806 [debug] QUERY OK source="sources" db=0.2ms idle=55.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:39.807 [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" = ?) [2] 14:12:39.807 [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 [125] 14:12:39.807 [info] Kicking off download for media item #125 (fOAIrUZbOwo) 14:12:39.809 [debug] QUERY OK source="tasks" db=0.1ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [73, 125, ~U[2026-07-24 12:12:39Z], ~U[2026-07-24 12:12:39Z]] 14:12:39.809 [debug] Current batch of media processed. Will check again in 1000ms 14:12:40.809 [debug] Current batch of media processed. Will check again in 1000ms 14:12:41.492 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=RlTVMi4JzZA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/a6/46a6f6e4d43574410fb5b3da37ef19607e59651e9f3b846ce621b786bb4a2e67.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:41.493 [debug] Running yt-dlp command for action: download 14:12:41.497 [debug] QUERY OK source="settings" db=3.5ms idle=741.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:41.499 [debug] QUERY OK source="settings" db=2.4ms idle=19.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:41.500 [debug] QUERY OK source="settings" db=0.1ms idle=21.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:41.500 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=RlTVMi4JzZA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e7/ff/e7fffe8f2c70495bd5bf341e30ad7aeaf4b35f5a09ae25a9dd4b5ea68b6e95a6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:41.810 [debug] Current batch of media processed. Will check again in 1000ms 14:12:42.812 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Hazel Cills | December 11, 2023\nThe last time Olivia Rodrigo performed a Tiny Desk concert, it was two years ago, in a deserted DMV office, back when pandemic precautions meant artists sadly couldn't play the real Desk. But this year, the singer-songwriter returned, bringing a handful of songs from her wildly fun sophomore album to the NPR Music office. \"It's much cooler to be here,\" Rodrigo says. \"I was saying earlier, I've never been starstruck by a room before.\"\n\nMany of the songs on GUTS, which earned a special recommendation on NPR Music's Best Albums of 2023 list, blow out Rodrigo's sound into colorful, grungy pop-rock fit for a stadium, like \"love is embarrassing,\" performed here with Rodrigo on jangly acoustic guitar. But the artist builds her set out with GUTS cuts that fit the intimate setup, like the searing \"vampire,\" her backup vocalists cooing eerily around each of her lines, or the potent ode to female jealousy, \"lacy,\" which Rodrigo explains started out as a poetry exercise in a college class. By the end of her set, she's completely alone at the piano for the sobering \"making the bed,\" and it's not difficult to see why she's one of pop's most promising rising performers.\n\nSET LIST\n\"love is embarrassing\"\n\"vampire\"\n\"lacy\"\n\"making the bed\"\n\nMUSICIANS\nOlivia Rodrigo: piano, guitar\nHayley Brownell: drums\nMoa Munoz: bass\nDaisy Spencer: guitar\nAshley Morgan: vocals\nGaba: vocals\nJulia Gartha: vocals\n\nTINY DESK TEAM\nProducers: Suraya Mohamed, Bob Boilen\nDirector/Editor: Joshua Bryant\nAudio Engineer: Josh Rogosin\nSeries Producer: Bobby Carter \nVideographers: Joshua Bryant, Kara Frame, Elizabeth Gillis, Maia Stern\nAudio Assistant: Valentina Rodríguez Sánchez\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #oliviarodrigo", "duration" => 1095, "filename" => "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].mp4", "id" => "jmh3iruf4RA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=jmh3iruf4RA", "playlist_index" => 5, "timestamp" => 1702270831, "title" => "Olivia Rodrigo: Tiny Desk Concert", "upload_date" => "20231211"} 14:12:42.812 [debug] QUERY OK source="sources" db=0.3ms idle=1315.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:42.813 [debug] QUERY OK source="sources" db=0.1ms idle=1313.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:42.813 [debug] QUERY OK source="media_items" db=0.1ms idle=1313.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-12-11 05:00:31Z], 2] 14:12:42.815 [debug] QUERY OK source="media_items" db=1.4ms idle=1058.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Hazel Cills | December 11, 2023\nThe last time Olivia Rodrigo performed a Tiny Desk concert, it was two years ago, in a deserted DMV office, back when pandemic precautions meant artists sadly couldn't play the real Desk. But this year, the singer-songwriter returned, bringing a handful of songs from her wildly fun sophomore album to the NPR Music office. \"It's much cooler to be here,\" Rodrigo says. \"I was saying earlier, I've never been starstruck by a room before.\"\n\nMany of the songs on GUTS, which earned a special recommendation on NPR Music's Best Albums of 2023 list, blow out Rodrigo's sound into colorful, grungy pop-rock fit for a stadium, like \"love is embarrassing,\" performed here with Rodrigo on jangly acoustic guitar. But the artist builds her set out with GUTS cuts that fit the intimate setup, like the searing \"vampire,\" her backup vocalists cooing eerily around each of her lines, or the potent ode to female jealousy, \"lacy,\" which Rodrigo explains started out as a poetry exercise in a college class. By the end of her set, she's completely alone at the piano for the sobering \"making the bed,\" and it's not difficult to see why she's one of pop's most promising rising performers.\n\nSET LIST\n\"love is embarrassing\"\n\"vampire\"\n\"lacy\"\n\"making the bed\"\n\nMUSICIANS\nOlivia Rodrigo: piano, guitar\nHayley Brownell: drums\nMoa Munoz: bass\nDaisy Spencer: guitar\nAshley Morgan: vocals\nGaba: vocals\nJulia Gartha: vocals\n\nTINY DESK TEAM\nProducers: Suraya Mohamed, Bob Boilen\nDirector/Editor: Joshua Bryant\nAudio Engineer: Josh Rogosin\nSeries Producer: Bobby Carter \nVideographers: Joshua Bryant, Kara Frame, Elizabeth Gillis, Maia Stern\nAudio Assistant: Valentina Rodríguez Sánchez\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #oliviarodrigo", "Olivia Rodrigo: Tiny Desk Concert", "5f6f8ba7-04a6-401e-88d5-1d4f41b99cb0", 1095, false, "jmh3iruf4RA", "https://www.youtube.com/watch?v=jmh3iruf4RA", 5, "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].mp4", false, false, false, 2, [], 0, ~U[2023-12-11 05:00:31Z], ~U[2026-07-24 12:12:42Z], ~U[2026-07-24 12:12:42Z], "Hazel Cills | December 11, 2023\nThe last time Olivia Rodrigo performed a Tiny Desk concert, it was two years ago, in a deserted DMV office, back when pandemic precautions meant artists sadly couldn't play the real Desk. But this year, the singer-songwriter returned, bringing a handful of songs from her wildly fun sophomore album to the NPR Music office. \"It's much cooler to be here,\" Rodrigo says. \"I was saying earlier, I've never been starstruck by a room before.\"\n\nMany of the songs on GUTS, which earned a special recommendation on NPR Music's Best Albums of 2023 list, blow out Rodrigo's sound into colorful, grungy pop-rock fit for a stadium, like \"love is embarrassing,\" performed here with Rodrigo on jangly acoustic guitar. But the artist builds her set out with GUTS cuts that fit the intimate setup, like the searing \"vampire,\" her backup vocalists cooing eerily around each of her lines, or the potent ode to female jealousy, \"lacy,\" which Rodrigo explains started out as a poetry exercise in a college class. By the end of her set, she's completely alone at the piano for the sobering \"making the bed,\" and it's not difficult to see why she's one of pop's most promising rising performers.\n\nSET LIST\n\"love is embarrassing\"\n\"vampire\"\n\"lacy\"\n\"making the bed\"\n\nMUSICIANS\nOlivia Rodrigo: piano, guitar\nHayley Brownell: drums\nMoa Munoz: bass\nDaisy Spencer: guitar\nAshley Morgan: vocals\nGaba: vocals\nJulia Gartha: vocals\n\nTINY DESK TEAM\nProducers: Suraya Mohamed, Bob Boilen\nDirector/Editor: Joshua Bryant\nAudio Engineer: Josh Rogosin\nSeries Producer: Bobby Carter \nVideographers: Joshua Bryant, Kara Frame, Elizabeth Gillis, Maia Stern\nAudio Assistant: Valentina Rodríguez Sánchez\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #oliviarodrigo", "Olivia Rodrigo: Tiny Desk Concert", 1095, false, "jmh3iruf4RA", "https://www.youtube.com/watch?v=jmh3iruf4RA", "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].mp4", false, 2, ~U[2023-12-11 05:00:31Z]] 14:12:42.815 [debug] QUERY OK source="sources" db=0.2ms idle=58.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:42.816 [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" = ?) [2] 14:12:42.816 [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 [126] 14:12:42.816 [info] Kicking off download for media item #126 (jmh3iruf4RA) 14:12:42.818 [debug] QUERY OK source="tasks" db=0.1ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [74, 126, ~U[2026-07-24 12:12:42Z], ~U[2026-07-24 12:12:42Z]] 14:12:42.818 [debug] Current batch of media processed. Will check again in 1000ms 14:12:43.818 [debug] Current batch of media processed. Will check again in 1000ms 14:12:44.820 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ashley Pointer | December 20, 2024\nWhen I greeted Sabrina Carpenter at NPR HQ for her Tiny Desk debut, her charm was immediately disarming. Bubbling with excitement, she extended her hand, introduced herself and complimented my outfit with genuine warmth. You’d think this was one of her first “big time” gigs, not a regular performance for a pop veteran, having sold out arenas across the country touring her now six time Grammy-nominated sixth album, Short n’ Sweet. That humility made me love her even more. \n\nBut Carpenter delivers far more than just charm in this performance. Backed by her band, complimented with pedal steel and a string quartet, she reimagines her biggest hits from Short n’ Sweet, while sharing the stories in between songs of how these tracks came to life. Opening with “Taste,” strings serve up some playful pizzicato, before Carpenter and her band move into a lush, soulful version “Bed Chem.” Then everyone swaps their electric instruments for acoustic to perform “Please Please Please” and “Slim Pickins.” Finally, Carpenter closes with the viral favorite “Juno,” cheekily asking the audience, “Have you ever tried this one?” before sweeping her rear end across the windchimes, earning a laugh from the room. \n\n“When I first started [writing songs] it was kinda in a room like this — a room with very dry walls and there’s no reverb,” Carpenter reflects at the top of her performance. “But there’s something so real and special.” That authenticity set the tone for a memorable session with one of 2024’s biggest breakout superstars.\n\nSET LIST\n“Taste”\n“Bed Chem”\n“Please Please Please”\n“Slim Pickins”\n“Espresso”\n“Juno”\n\nMUSICIANS\nSabrina Carpenter: vocals\nHaeun “hani” You: piano, keyboards\nCaleb Nelson: guitar\nMatt Park: pedal steel guitar\nChris Johnson: drums\nAlexandra Simpson: viola\nSarena Hsu: violin\nYasmeen “YAS” Al-Mazeedi: violin\nBobby Wooten III: bass\nMarza Merophi Wilks: cello\nChristine Noel Smit: background vocals\nMIA MOR: background vocals\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Sofia Seidel, Wendy Li\nAudio Engineer: David Greenburg\nProduction Assistant: Elle Mannion\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #sabrinacarpenter #espresso #nprmusic \n\nSupport for NPR Music comes from Better Help, committed to helping clients with issues ranging from relationship challenges and goal-setting to grief and depression. Learn more at BetterHelp.com/TinyDesk\n\nSupport for NPR Music comes from Google and Year in Search 2024. Celebrating the breakout searches like Sabrina Carpenter, that defined the year and inspired the world to search on.", "duration" => 1570, "filename" => "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].mp4", "id" => "BEoGvTlJMyY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=BEoGvTlJMyY", "playlist_index" => 6, "timestamp" => 1734714006, "title" => "Sabrina Carpenter: Tiny Desk Concert", "upload_date" => "20241220"} 14:12:44.820 [debug] QUERY OK source="sources" db=0.3ms idle=342.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:44.821 [debug] QUERY OK source="sources" db=0.6ms idle=343.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:44.822 [debug] QUERY OK source="media_items" db=0.2ms idle=343.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-12-20 17:00:06Z], 2] 14:12:44.824 [debug] QUERY OK source="media_items" db=1.7ms idle=344.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ashley Pointer | December 20, 2024\nWhen I greeted Sabrina Carpenter at NPR HQ for her Tiny Desk debut, her charm was immediately disarming. Bubbling with excitement, she extended her hand, introduced herself and complimented my outfit with genuine warmth. You’d think this was one of her first “big time” gigs, not a regular performance for a pop veteran, having sold out arenas across the country touring her now six time Grammy-nominated sixth album, Short n’ Sweet. That humility made me love her even more. \n\nBut Carpenter delivers far more than just charm in this performance. Backed by her band, complimented with pedal steel and a string quartet, she reimagines her biggest hits from Short n’ Sweet, while sharing the stories in between songs of how these tracks came to life. Opening with “Taste,” strings serve up some playful pizzicato, before Carpenter and her band move into a lush, soulful version “Bed Chem.” Then everyone swaps their electric instruments for acoustic to perform “Please Please Please” and “Slim Pickins.” Finally, Carpenter closes with the viral favorite “Juno,” cheekily asking the audience, “Have you ever tried this one?” before sweeping her rear end across the windchimes, earning a laugh from the room. \n\n“When I first started [writing songs] it was kinda in a room like this — a room with very dry walls and there’s no reverb,” Carpenter reflects at the top of her performance. “But there’s something so real and special.” That authenticity set the tone for a memorable session with one of 2024’s biggest breakout superstars.\n\nSET LIST\n“Taste”\n“Bed Chem”\n“Please Please Please”\n“Slim Pickins”\n“Espresso”\n“Juno”\n\nMUSICIANS\nSabrina Carpenter: vocals\nHaeun “hani” You: piano, keyboards\nCaleb Nelson: guitar\nMatt Park: pedal steel guitar\nChris Johnson: drums\nAlexandra Simpson: viola\nSarena Hsu: violin\nYasmeen “YAS” Al-Mazeedi: violin\nBobby Wooten III: bass\nMarza Merophi Wilks: cello\nChristine Noel Smit: background vocals\nMIA MOR: background vocals\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Sofia Seidel, Wendy Li\nAudio Engineer: David Greenburg\nProduction Assistant: Elle Mannion\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #sabrinacarpenter #espresso #nprmusic \n\nSupport for NPR Music comes from Better Help, committed to helping clients with issues ranging from relationship challenges and goal-setting to grief and depression. Learn more at BetterHelp.com/TinyDesk\n\nSupport for NPR Music comes from Google and Year in Search 2024. Celebrating the breakout searches like Sabrina Carpenter, that defined the year and inspired the world to search on.", "Sabrina Carpenter: Tiny Desk Concert", "2f0cb062-a6a9-455f-b599-174ae6cf7ad4", 1570, false, "BEoGvTlJMyY", "https://www.youtube.com/watch?v=BEoGvTlJMyY", 6, "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].mp4", false, false, false, 2, [], 0, ~U[2024-12-20 17:00:06Z], ~U[2026-07-24 12:12:44Z], ~U[2026-07-24 12:12:44Z], "Ashley Pointer | December 20, 2024\nWhen I greeted Sabrina Carpenter at NPR HQ for her Tiny Desk debut, her charm was immediately disarming. Bubbling with excitement, she extended her hand, introduced herself and complimented my outfit with genuine warmth. You’d think this was one of her first “big time” gigs, not a regular performance for a pop veteran, having sold out arenas across the country touring her now six time Grammy-nominated sixth album, Short n’ Sweet. That humility made me love her even more. \n\nBut Carpenter delivers far more than just charm in this performance. Backed by her band, complimented with pedal steel and a string quartet, she reimagines her biggest hits from Short n’ Sweet, while sharing the stories in between songs of how these tracks came to life. Opening with “Taste,” strings serve up some playful pizzicato, before Carpenter and her band move into a lush, soulful version “Bed Chem.” Then everyone swaps their electric instruments for acoustic to perform “Please Please Please” and “Slim Pickins.” Finally, Carpenter closes with the viral favorite “Juno,” cheekily asking the audience, “Have you ever tried this one?” before sweeping her rear end across the windchimes, earning a laugh from the room. \n\n“When I first started [writing songs] it was kinda in a room like this — a room with very dry walls and there’s no reverb,” Carpenter reflects at the top of her performance. “But there’s something so real and special.” That authenticity set the tone for a memorable session with one of 2024’s biggest breakout superstars.\n\nSET LIST\n“Taste”\n“Bed Chem”\n“Please Please Please”\n“Slim Pickins”\n“Espresso”\n“Juno”\n\nMUSICIANS\nSabrina Carpenter: vocals\nHaeun “hani” You: piano, keyboards\nCaleb Nelson: guitar\nMatt Park: pedal steel guitar\nChris Johnson: drums\nAlexandra Simpson: viola\nSarena Hsu: violin\nYasmeen “YAS” Al-Mazeedi: violin\nBobby Wooten III: bass\nMarza Merophi Wilks: cello\nChristine Noel Smit: background vocals\nMIA MOR: background vocals\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Sofia Seidel, Wendy Li\nAudio Engineer: David Greenburg\nProduction Assistant: Elle Mannion\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #sabrinacarpenter #espresso #nprmusic \n\nSupport for NPR Music comes from Better Help, committed to helping clients with issues ranging from relationship challenges and goal-setting to grief and depression. Learn more at BetterHelp.com/TinyDesk\n\nSupport for NPR Music comes from Google and Year in Search 2024. Celebrating the breakout searches like Sabrina Carpenter, that defined the year and inspired the world to search on.", "Sabrina Carpenter: Tiny Desk Concert", 1570, false, "BEoGvTlJMyY", "https://www.youtube.com/watch?v=BEoGvTlJMyY", "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].mp4", false, 2, ~U[2024-12-20 17:00:06Z]] 14:12:44.825 [debug] QUERY OK source="sources" db=0.3ms idle=66.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:44.826 [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" = ?) [2] 14:12:44.826 [debug] QUERY OK source="media_items" db=0.1ms 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 [127] 14:12:44.826 [info] Kicking off download for media item #127 (BEoGvTlJMyY) 14:12:44.828 [debug] QUERY OK source="tasks" db=0.1ms idle=3.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [75, 127, ~U[2026-07-24 12:12:44Z], ~U[2026-07-24 12:12:44Z]] 14:12:44.828 [debug] Current batch of media processed. Will check again in 1000ms 14:12:45.829 [debug] Current batch of media processed. Will check again in 1000ms 14:12:46.831 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "When I first saw The Front Bottoms, I was stunned, as 350-plus singing/shouting clubgoers repeating compassionate verse after complicated verse back at singer Brian Sella. And then it happened again at a hot sweaty club in Philadelphia, and later in D.C., and then again in Baltimore. The community that's formed around these songs, total strangers purging deep emotions in a public space. It's a beautiful phenomena, a testament to the passion and compassion that this band radiates. A testament to the nerve that's gets pinged with lines cried out, 'I wanna be stronger than your dad was for your mom' or the phrase in one of this years best songs 'Twin Sized Mattress' \"\n\nI wanna contribute to the chaos\n\nI don't wanna watch and then complain\n\n'Cause I am through finding blame\n\nThat is the decision that I have made\n\nAnd when you hear the music...uncomplicated but pretty memorable, you realize that the talent in this band isn't about instrument craft and years of playing scales...this is about the shortest distance from emotion, sometimes complex and storied emotion, from band to audience. At the Tiny Desk in the bright of day and with office lights on, it was a tough to get the call and response that happens in a darkened late night room, but it's not hard to look at the faces in this band, especially the sweet smile of Brian, to understand this band. Their new record Talon of the Hawk is certainly on my year end list for all these reasons. It's all about heart and soul, something frequently avoided and hard to convey. --BOB BOILEN\n\nSet List\n\n\"Au Revoir (Adios)\"\n\"Swear To God The Devil Made Me Do It\"\n\"The Feud\"\n\"Twin Size Mattress\"\n\nCredits\n\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "duration" => 939, "filename" => "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].mp4", "id" => "pc8U2VP92Vg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=pc8U2VP92Vg", "playlist_index" => 7, "timestamp" => 1376943578, "title" => "The Front Bottoms: NPR Music Tiny Desk Concert", "upload_date" => "20130819"} 14:12:46.831 [debug] QUERY OK source="sources" db=0.3ms idle=349.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:46.832 [debug] QUERY OK source="sources" db=0.1ms idle=349.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:46.832 [debug] QUERY OK source="media_items" db=0.1ms idle=349.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2013-08-19 20:19:38Z], 2] 14:12:46.833 [debug] QUERY OK source="media_items" db=0.9ms idle=350.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["When I first saw The Front Bottoms, I was stunned, as 350-plus singing/shouting clubgoers repeating compassionate verse after complicated verse back at singer Brian Sella. And then it happened again at a hot sweaty club in Philadelphia, and later in D.C., and then again in Baltimore. The community that's formed around these songs, total strangers purging deep emotions in a public space. It's a beautiful phenomena, a testament to the passion and compassion that this band radiates. A testament to the nerve that's gets pinged with lines cried out, 'I wanna be stronger than your dad was for your mom' or the phrase in one of this years best songs 'Twin Sized Mattress' \"\n\nI wanna contribute to the chaos\n\nI don't wanna watch and then complain\n\n'Cause I am through finding blame\n\nThat is the decision that I have made\n\nAnd when you hear the music...uncomplicated but pretty memorable, you realize that the talent in this band isn't about instrument craft and years of playing scales...this is about the shortest distance from emotion, sometimes complex and storied emotion, from band to audience. At the Tiny Desk in the bright of day and with office lights on, it was a tough to get the call and response that happens in a darkened late night room, but it's not hard to look at the faces in this band, especially the sweet smile of Brian, to understand this band. Their new record Talon of the Hawk is certainly on my year end list for all these reasons. It's all about heart and soul, something frequently avoided and hard to convey. --BOB BOILEN\n\nSet List\n\n\"Au Revoir (Adios)\"\n\"Swear To God The Devil Made Me Do It\"\n\"The Feud\"\n\"Twin Size Mattress\"\n\nCredits\n\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The Front Bottoms: NPR Music Tiny Desk Concert", "a09aba95-b202-4ad8-8fd5-58c84f04606e", 939, false, "pc8U2VP92Vg", "https://www.youtube.com/watch?v=pc8U2VP92Vg", 7, "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].mp4", false, false, false, 2, [], 0, ~U[2013-08-19 20:19:38Z], ~U[2026-07-24 12:12:46Z], ~U[2026-07-24 12:12:46Z], "When I first saw The Front Bottoms, I was stunned, as 350-plus singing/shouting clubgoers repeating compassionate verse after complicated verse back at singer Brian Sella. And then it happened again at a hot sweaty club in Philadelphia, and later in D.C., and then again in Baltimore. The community that's formed around these songs, total strangers purging deep emotions in a public space. It's a beautiful phenomena, a testament to the passion and compassion that this band radiates. A testament to the nerve that's gets pinged with lines cried out, 'I wanna be stronger than your dad was for your mom' or the phrase in one of this years best songs 'Twin Sized Mattress' \"\n\nI wanna contribute to the chaos\n\nI don't wanna watch and then complain\n\n'Cause I am through finding blame\n\nThat is the decision that I have made\n\nAnd when you hear the music...uncomplicated but pretty memorable, you realize that the talent in this band isn't about instrument craft and years of playing scales...this is about the shortest distance from emotion, sometimes complex and storied emotion, from band to audience. At the Tiny Desk in the bright of day and with office lights on, it was a tough to get the call and response that happens in a darkened late night room, but it's not hard to look at the faces in this band, especially the sweet smile of Brian, to understand this band. Their new record Talon of the Hawk is certainly on my year end list for all these reasons. It's all about heart and soul, something frequently avoided and hard to convey. --BOB BOILEN\n\nSet List\n\n\"Au Revoir (Adios)\"\n\"Swear To God The Devil Made Me Do It\"\n\"The Feud\"\n\"Twin Size Mattress\"\n\nCredits\n\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The Front Bottoms: NPR Music Tiny Desk Concert", 939, false, "pc8U2VP92Vg", "https://www.youtube.com/watch?v=pc8U2VP92Vg", "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].mp4", false, 2, ~U[2013-08-19 20:19:38Z]] 14:12:46.834 [debug] QUERY OK source="sources" db=0.4ms idle=73.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:46.834 [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" = ?) [2] 14:12:46.835 [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 [128] 14:12:46.835 [info] Kicking off download for media item #128 (pc8U2VP92Vg) 14:12:46.837 [debug] QUERY OK source="tasks" db=0.2ms idle=2.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [76, 128, ~U[2026-07-24 12:12:46Z], ~U[2026-07-24 12:12:46Z]] 14:12:46.837 [debug] Current batch of media processed. Will check again in 1000ms 14:12:47.837 [debug] Current batch of media processed. Will check again in 1000ms 14:12:48.839 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Oct. 2, 2017 | Lars Gotrich -- Paramore's After Laughter captures the moment between rapture and its comedown, the glitter wiped away, left with skin rubbed raw. It's a record, more than a decade into the band's career, that not only exposes the sparkling pop that's always lit Paramore's songs, but also deals with the ache of growing up and growing apart. When Hayley Williams sings, \"Tell my friends I'm coming down / We'll kick it when I hit the ground\" from the '80s-tastic jam \"Hard Times\" at the Tiny Desk, the stark dichotomy is laid bare by the band's stripped-down performance that still packs a small synth and Zac Farro's drum machine into its Afro-pop-flecked textures.\n\nBacked here only by guitarist Taylor York, \"26\" is Williams' letter to a younger self, to still believe in dreams, knowing its costs. Paramore's quieter songs have never quite shown this depth of understated devastation and determination, and Williams reflects that nuance in a voice that scales the end of the line, \"And they say that dreaming is free,\" with just the slightest trail of regret.\n\nThese songs extend After Laughter's themes, racing across the spectrum of hope, with \"Fake Happy\" as a soaring anthem to expressing your truest self (and calling out those playing pretend). At the Tiny Desk, the shimmering guitars and synths almost become tropical, as if the band's all taken a big swig of Drake's \"Passionfruit\" and started a lowkey jam among friends.\n\nSet List\n\n\"Hard Times\"\n\"26\"\n\"Fake Happy\"\n\nMUSICIANS\n\nHayley Williams (vocals), Taylor York (guitar), Zac Farro (drum machine), Logan MacKenzie (keys), Joseph Howard (bass), Justin York (guitar)\n\nCREDITS\n\nProducers: Lars Gotrich, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin; Videographers: Morgan Noelle Smith, Niki Walker, Maia Stern, Alyse Young; Production Assistant: Salvatore Maicki; Photo: Christina Ascani/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "duration" => 761, "filename" => "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].mp4", "id" => "_t-nRXwAL1k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_t-nRXwAL1k", "playlist_index" => 8, "timestamp" => 1507640405, "title" => "Paramore: NPR Music Tiny Desk Concert", "upload_date" => "20171010"} 14:12:48.839 [debug] QUERY OK source="sources" db=0.3ms idle=357.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:48.840 [debug] QUERY OK source="sources" db=0.1ms idle=358.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:48.840 [debug] QUERY OK source="media_items" db=0.1ms idle=358.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-10-10 13:00:05Z], 2] 14:12:48.859 [debug] QUERY OK source="media_items" db=18.9ms idle=358.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Oct. 2, 2017 | Lars Gotrich -- Paramore's After Laughter captures the moment between rapture and its comedown, the glitter wiped away, left with skin rubbed raw. It's a record, more than a decade into the band's career, that not only exposes the sparkling pop that's always lit Paramore's songs, but also deals with the ache of growing up and growing apart. When Hayley Williams sings, \"Tell my friends I'm coming down / We'll kick it when I hit the ground\" from the '80s-tastic jam \"Hard Times\" at the Tiny Desk, the stark dichotomy is laid bare by the band's stripped-down performance that still packs a small synth and Zac Farro's drum machine into its Afro-pop-flecked textures.\n\nBacked here only by guitarist Taylor York, \"26\" is Williams' letter to a younger self, to still believe in dreams, knowing its costs. Paramore's quieter songs have never quite shown this depth of understated devastation and determination, and Williams reflects that nuance in a voice that scales the end of the line, \"And they say that dreaming is free,\" with just the slightest trail of regret.\n\nThese songs extend After Laughter's themes, racing across the spectrum of hope, with \"Fake Happy\" as a soaring anthem to expressing your truest self (and calling out those playing pretend). At the Tiny Desk, the shimmering guitars and synths almost become tropical, as if the band's all taken a big swig of Drake's \"Passionfruit\" and started a lowkey jam among friends.\n\nSet List\n\n\"Hard Times\"\n\"26\"\n\"Fake Happy\"\n\nMUSICIANS\n\nHayley Williams (vocals), Taylor York (guitar), Zac Farro (drum machine), Logan MacKenzie (keys), Joseph Howard (bass), Justin York (guitar)\n\nCREDITS\n\nProducers: Lars Gotrich, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin; Videographers: Morgan Noelle Smith, Niki Walker, Maia Stern, Alyse Young; Production Assistant: Salvatore Maicki; Photo: Christina Ascani/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Paramore: NPR Music Tiny Desk Concert", "b33d42bd-be3e-47c7-927e-ed8debc4c3fb", 761, false, "_t-nRXwAL1k", "https://www.youtube.com/watch?v=_t-nRXwAL1k", 8, "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].mp4", false, false, false, 2, [], 0, ~U[2017-10-10 13:00:05Z], ~U[2026-07-24 12:12:48Z], ~U[2026-07-24 12:12:48Z], "Oct. 2, 2017 | Lars Gotrich -- Paramore's After Laughter captures the moment between rapture and its comedown, the glitter wiped away, left with skin rubbed raw. It's a record, more than a decade into the band's career, that not only exposes the sparkling pop that's always lit Paramore's songs, but also deals with the ache of growing up and growing apart. When Hayley Williams sings, \"Tell my friends I'm coming down / We'll kick it when I hit the ground\" from the '80s-tastic jam \"Hard Times\" at the Tiny Desk, the stark dichotomy is laid bare by the band's stripped-down performance that still packs a small synth and Zac Farro's drum machine into its Afro-pop-flecked textures.\n\nBacked here only by guitarist Taylor York, \"26\" is Williams' letter to a younger self, to still believe in dreams, knowing its costs. Paramore's quieter songs have never quite shown this depth of understated devastation and determination, and Williams reflects that nuance in a voice that scales the end of the line, \"And they say that dreaming is free,\" with just the slightest trail of regret.\n\nThese songs extend After Laughter's themes, racing across the spectrum of hope, with \"Fake Happy\" as a soaring anthem to expressing your truest self (and calling out those playing pretend). At the Tiny Desk, the shimmering guitars and synths almost become tropical, as if the band's all taken a big swig of Drake's \"Passionfruit\" and started a lowkey jam among friends.\n\nSet List\n\n\"Hard Times\"\n\"26\"\n\"Fake Happy\"\n\nMUSICIANS\n\nHayley Williams (vocals), Taylor York (guitar), Zac Farro (drum machine), Logan MacKenzie (keys), Joseph Howard (bass), Justin York (guitar)\n\nCREDITS\n\nProducers: Lars Gotrich, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin; Videographers: Morgan Noelle Smith, Niki Walker, Maia Stern, Alyse Young; Production Assistant: Salvatore Maicki; Photo: Christina Ascani/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Paramore: NPR Music Tiny Desk Concert", 761, false, "_t-nRXwAL1k", "https://www.youtube.com/watch?v=_t-nRXwAL1k", "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].mp4", false, 2, ~U[2017-10-10 13:00:05Z]] 14:12:48.860 [debug] QUERY OK source="sources" db=0.2ms idle=95.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:48.860 [debug] QUERY OK source="media_profiles" db=0.2ms 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" = ?) [2] 14:12:48.861 [debug] QUERY OK source="media_items" db=0.3ms 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 [129] 14:12:48.861 [info] Kicking off download for media item #129 (_t-nRXwAL1k) 14:12:48.863 [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" [77, 129, ~U[2026-07-24 12:12:48Z], ~U[2026-07-24 12:12:48Z]] 14:12:48.863 [debug] Current batch of media processed. Will check again in 1000ms 14:12:49.863 [debug] Current batch of media processed. Will check again in 1000ms 14:12:50.866 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Robin Hilton | February 11, 2025\nArtists who play the Tiny Desk aren't always sure what they're getting into. \"I wasn't expecting it to be in a big building,\" girl in red's Marie Ulven tells the NPR crowd. \"I thought I was going to go into a little house or something.\"\n\nAny confusion aside, Ulven and her band deliver a set suitable for the kind of cozy space she imagined, one of genuine charm, good humor and unbridled joy — a vibe that girl in red has always cultivated through music. She can find cause for celebration even in life's bleakest moments, like when Ulven and the band deploy rapid-fire handclaps during a song about the emptiness of unrequited love (\"Phantom Pain\") or the way she says \"Depression!\" with a smile and a cheerleader's fist in the air just before \"Summer Depression.\" \"It's a normal thing to feel like this,\" she sings, offering a much-needed dose of warmth and empathy on what was an otherwise chilly, overcast day in Washington, D.C.\n\nSET LIST\n\"Phantom Pain\"\n\"Summer Depression\"\n\"Too Much\"\n\"I Wanna Be Your Girlfriend\" \n\nMUSICIANS\nMarie Ulven: vocals, guitar\nMartin Dybal: guitar, music director\nHenrik Bakken: bass\nBror Brorson: guitar\nErlend Hisdal: drums\nViljar Dunđerović: keys, piano\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Neil Tevault\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Zayrha Rodriguez\nAudio Engineer: Josh Newell\nProduction Assistant: Ashley Pointer\nPhotographer: Sofia Seidel\nTiny Desk Team: Lars Gotrich, Maia Stern\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #girlinred", "duration" => 1026, "filename" => "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].mp4", "id" => "cXYgdCXkLMc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=cXYgdCXkLMc", "playlist_index" => 9, "timestamp" => 1739268043, "title" => "girl in red: Tiny Desk Concert", "upload_date" => "20250211"} 14:12:50.866 [debug] QUERY OK source="sources" db=0.2ms idle=384.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:50.867 [debug] QUERY OK source="sources" db=0.3ms idle=385.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:50.868 [debug] QUERY OK source="media_items" db=0.6ms idle=385.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-02-11 10:00:43Z], 2] 14:12:50.871 [debug] QUERY OK source="media_items" db=2.5ms idle=386.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | February 11, 2025\nArtists who play the Tiny Desk aren't always sure what they're getting into. \"I wasn't expecting it to be in a big building,\" girl in red's Marie Ulven tells the NPR crowd. \"I thought I was going to go into a little house or something.\"\n\nAny confusion aside, Ulven and her band deliver a set suitable for the kind of cozy space she imagined, one of genuine charm, good humor and unbridled joy — a vibe that girl in red has always cultivated through music. She can find cause for celebration even in life's bleakest moments, like when Ulven and the band deploy rapid-fire handclaps during a song about the emptiness of unrequited love (\"Phantom Pain\") or the way she says \"Depression!\" with a smile and a cheerleader's fist in the air just before \"Summer Depression.\" \"It's a normal thing to feel like this,\" she sings, offering a much-needed dose of warmth and empathy on what was an otherwise chilly, overcast day in Washington, D.C.\n\nSET LIST\n\"Phantom Pain\"\n\"Summer Depression\"\n\"Too Much\"\n\"I Wanna Be Your Girlfriend\" \n\nMUSICIANS\nMarie Ulven: vocals, guitar\nMartin Dybal: guitar, music director\nHenrik Bakken: bass\nBror Brorson: guitar\nErlend Hisdal: drums\nViljar Dunđerović: keys, piano\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Neil Tevault\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Zayrha Rodriguez\nAudio Engineer: Josh Newell\nProduction Assistant: Ashley Pointer\nPhotographer: Sofia Seidel\nTiny Desk Team: Lars Gotrich, Maia Stern\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #girlinred", "girl in red: Tiny Desk Concert", "1cfab0bc-3907-44a8-afeb-e4de20e275de", 1026, false, "cXYgdCXkLMc", "https://www.youtube.com/watch?v=cXYgdCXkLMc", 9, "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].mp4", false, false, false, 2, [], 0, ~U[2025-02-11 10:00:43Z], ~U[2026-07-24 12:12:50Z], ~U[2026-07-24 12:12:50Z], "Robin Hilton | February 11, 2025\nArtists who play the Tiny Desk aren't always sure what they're getting into. \"I wasn't expecting it to be in a big building,\" girl in red's Marie Ulven tells the NPR crowd. \"I thought I was going to go into a little house or something.\"\n\nAny confusion aside, Ulven and her band deliver a set suitable for the kind of cozy space she imagined, one of genuine charm, good humor and unbridled joy — a vibe that girl in red has always cultivated through music. She can find cause for celebration even in life's bleakest moments, like when Ulven and the band deploy rapid-fire handclaps during a song about the emptiness of unrequited love (\"Phantom Pain\") or the way she says \"Depression!\" with a smile and a cheerleader's fist in the air just before \"Summer Depression.\" \"It's a normal thing to feel like this,\" she sings, offering a much-needed dose of warmth and empathy on what was an otherwise chilly, overcast day in Washington, D.C.\n\nSET LIST\n\"Phantom Pain\"\n\"Summer Depression\"\n\"Too Much\"\n\"I Wanna Be Your Girlfriend\" \n\nMUSICIANS\nMarie Ulven: vocals, guitar\nMartin Dybal: guitar, music director\nHenrik Bakken: bass\nBror Brorson: guitar\nErlend Hisdal: drums\nViljar Dunđerović: keys, piano\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Neil Tevault\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Zayrha Rodriguez\nAudio Engineer: Josh Newell\nProduction Assistant: Ashley Pointer\nPhotographer: Sofia Seidel\nTiny Desk Team: Lars Gotrich, Maia Stern\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #girlinred", "girl in red: Tiny Desk Concert", 1026, false, "cXYgdCXkLMc", "https://www.youtube.com/watch?v=cXYgdCXkLMc", "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].mp4", false, 2, ~U[2025-02-11 10:00:43Z]] 14:12:50.872 [debug] QUERY OK source="sources" db=0.9ms idle=92.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:50.873 [debug] QUERY OK source="media_profiles" db=0.8ms 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" = ?) [2] 14:12:50.874 [debug] QUERY OK source="media_items" db=0.7ms 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 [130] 14:12:50.874 [info] Kicking off download for media item #130 (cXYgdCXkLMc) 14:12:50.877 [debug] QUERY OK source="tasks" db=0.1ms idle=4.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [78, 130, ~U[2026-07-24 12:12:50Z], ~U[2026-07-24 12:12:50Z]] 14:12:50.877 [debug] Current batch of media processed. Will check again in 1000ms 14:12:50.904 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LgsQCntqCBAdGUNgIyMBTwcYLDtOIyIwbzVnN5BVov3PYJs7eWjIvTM_", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:12:51.877 [debug] Current batch of media processed. Will check again in 1000ms 14:12:52.561 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:52.878 [debug] Current batch of media processed. Will check again in 1000ms 14:12:53.880 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Imogen Heap play \"Guitar Song\", \"Speeding Cars\" and \"Hide and Seek\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nJune 20, 2019 | Bob Boilen -- In the course of a few songs at the Tiny Desk, Imogen Heap took us through her many musical talents. The concert began with her old Frou Frou musical partner, Guy Sigsworth — and their first new song in 17 years — and ended with an extraordinary demonstration and performance of her high-tech musical gloves.\n\nImogen Heap not only has an enchanting voice but also the talents of a world-class audio engineer. She's completely engrossed in a technology she's helped to develop, one that makes it possible to alter sounds, create loops and compose tunes all with the wave of her glove-wearing hands. The high-tech gloves, now called Mi.Mu Gloves, were first shown at a TEDGlobal conference eight years ago. Her performances, with her sound-altering arm and hand gestures, resemble a summoning of spirits, a far more compelling live experience than what Imogen said used to look like she was standing behind her laptop checking email.\n\nAnd though there's not been a new Imogen Heap album since 2014, this Tiny Desk Concert includes a reworking of \"Hide and Seek,\" the song that made her a household name, and one she reimagined for the Broadway play, Harry Potter and the Cursed Child.\n\nIt's a thoroughly enchanting Tiny Desk Concert.\n\nSET LIST\nGuitar Song\nSpeeding Cars\nHide and Seek\n\nMUSICIANS\nImogen Heap: lead vocals, piano, Mi.Mu gloves; Guy Sigsworth: keys; Steve Jones: guitar; Zoë Keating: cello; Tim Keiper: drums, percussion\n\nCREDITS\nProducers: Bob Boilen, Colin Marshall; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin, Natasha Branch; Videographers: Colin Marshall, Nickolai Hammar, Kara Frame; Associate Producer: Bobby Carter; Photo: NPR", "duration" => 1143, "filename" => "/downloads/Tiny Desk/2019-06-28 Imogen Heap: NPR Music Tiny Desk Concert/Imogen Heap: NPR Music Tiny Desk Concert [3QtklTXbKUQ].mp4", "id" => "3QtklTXbKUQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=3QtklTXbKUQ", "playlist_index" => 10, "timestamp" => 1561712400, "title" => "Imogen Heap: NPR Music Tiny Desk Concert", "upload_date" => "20190628"} 14:12:53.880 [debug] QUERY OK source="sources" db=0.3ms idle=1398.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:12:53.881 [debug] QUERY OK source="sources" db=0.5ms idle=1399.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:53.882 [debug] QUERY OK source="media_items" db=0.7ms idle=1320.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-06-28 09:00:00Z], 2] 14:12:53.885 [debug] QUERY OK source="media_items" db=2.7ms idle=1099.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Imogen Heap play \"Guitar Song\", \"Speeding Cars\" and \"Hide and Seek\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nJune 20, 2019 | Bob Boilen -- In the course of a few songs at the Tiny Desk, Imogen Heap took us through her many musical talents. The concert began with her old Frou Frou musical partner, Guy Sigsworth — and their first new song in 17 years — and ended with an extraordinary demonstration and performance of her high-tech musical gloves.\n\nImogen Heap not only has an enchanting voice but also the talents of a world-class audio engineer. She's completely engrossed in a technology she's helped to develop, one that makes it possible to alter sounds, create loops and compose tunes all with the wave of her glove-wearing hands. The high-tech gloves, now called Mi.Mu Gloves, were first shown at a TEDGlobal conference eight years ago. Her performances, with her sound-altering arm and hand gestures, resemble a summoning of spirits, a far more compelling live experience than what Imogen said used to look like she was standing behind her laptop checking email.\n\nAnd though there's not been a new Imogen Heap album since 2014, this Tiny Desk Concert includes a reworking of \"Hide and Seek,\" the song that made her a household name, and one she reimagined for the Broadway play, Harry Potter and the Cursed Child.\n\nIt's a thoroughly enchanting Tiny Desk Concert.\n\nSET LIST\nGuitar Song\nSpeeding Cars\nHide and Seek\n\nMUSICIANS\nImogen Heap: lead vocals, piano, Mi.Mu gloves; Guy Sigsworth: keys; Steve Jones: guitar; Zoë Keating: cello; Tim Keiper: drums, percussion\n\nCREDITS\nProducers: Bob Boilen, Colin Marshall; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin, Natasha Branch; Videographers: Colin Marshall, Nickolai Hammar, Kara Frame; Associate Producer: Bobby Carter; Photo: NPR", "Imogen Heap: NPR Music Tiny Desk Concert", "7c6fcdcb-82e3-4f1a-9cf1-4ee19a3e8dd0", 1143, false, "3QtklTXbKUQ", "https://www.youtube.com/watch?v=3QtklTXbKUQ", 10, "/downloads/Tiny Desk/2019-06-28 Imogen Heap: NPR Music Tiny Desk Concert/Imogen Heap: NPR Music Tiny Desk Concert [3QtklTXbKUQ].mp4", false, false, false, 2, [], 0, ~U[2019-06-28 09:00:00Z], ~U[2026-07-24 12:12:53Z], ~U[2026-07-24 12:12:53Z], "Watch Imogen Heap play \"Guitar Song\", \"Speeding Cars\" and \"Hide and Seek\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nJune 20, 2019 | Bob Boilen -- In the course of a few songs at the Tiny Desk, Imogen Heap took us through her many musical talents. The concert began with her old Frou Frou musical partner, Guy Sigsworth — and their first new song in 17 years — and ended with an extraordinary demonstration and performance of her high-tech musical gloves.\n\nImogen Heap not only has an enchanting voice but also the talents of a world-class audio engineer. She's completely engrossed in a technology she's helped to develop, one that makes it possible to alter sounds, create loops and compose tunes all with the wave of her glove-wearing hands. The high-tech gloves, now called Mi.Mu Gloves, were first shown at a TEDGlobal conference eight years ago. Her performances, with her sound-altering arm and hand gestures, resemble a summoning of spirits, a far more compelling live experience than what Imogen said used to look like she was standing behind her laptop checking email.\n\nAnd though there's not been a new Imogen Heap album since 2014, this Tiny Desk Concert includes a reworking of \"Hide and Seek,\" the song that made her a household name, and one she reimagined for the Broadway play, Harry Potter and the Cursed Child.\n\nIt's a thoroughly enchanting Tiny Desk Concert.\n\nSET LIST\nGuitar Song\nSpeeding Cars\nHide and Seek\n\nMUSICIANS\nImogen Heap: lead vocals, piano, Mi.Mu gloves; Guy Sigsworth: keys; Steve Jones: guitar; Zoë Keating: cello; Tim Keiper: drums, percussion\n\nCREDITS\nProducers: Bob Boilen, Colin Marshall; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin, Natasha Branch; Videographers: Colin Marshall, Nickolai Hammar, Kara Frame; Associate Producer: Bobby Carter; Photo: NPR", "Imogen Heap: NPR Music Tiny Desk Concert", 1143, false, "3QtklTXbKUQ", "https://www.youtube.com/watch?v=3QtklTXbKUQ", "/downloads/Tiny Desk/2019-06-28 Imogen Heap: NPR Music Tiny Desk Concert/Imogen Heap: NPR Music Tiny Desk Concert [3QtklTXbKUQ].mp4", false, 2, ~U[2019-06-28 09:00:00Z]] 14:12:53.886 [debug] QUERY OK source="sources" db=0.3ms idle=100.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:53.888 [debug] QUERY OK source="media_profiles" db=0.9ms 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" = ?) [2] 14:12:53.889 [debug] QUERY OK source="media_items" db=0.5ms idle=6.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 [131] 14:12:53.889 [info] Kicking off download for media item #131 (3QtklTXbKUQ) 14:12:53.892 [debug] QUERY OK source="tasks" db=0.6ms idle=5.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [79, 131, ~U[2026-07-24 12:12:53Z], ~U[2026-07-24 12:12:53Z]] 14:12:53.892 [debug] Current batch of media processed. Will check again in 1000ms 14:12:54.633 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0_5aOO980uI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6a/08/6a08026078b4a5cceb47bed32290184ecf62f00de0e1db84cb64a4ce7f7bf2d2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:54.653 [debug] Running yt-dlp command for action: download_thumbnail 14:12:54.654 [debug] QUERY OK source="settings" db=0.2ms idle=766.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:54.655 [debug] QUERY OK source="settings" db=0.6ms idle=765.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:54.656 [debug] QUERY OK source="settings" db=0.4ms idle=764.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:54.656 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0_5aOO980uI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/39/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ce/7f/ce7fd1dfdbf0ddf464e0def597ed0bd1966805211ae42dfa1925ec2daea2c835.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:54.895 [debug] Current batch of media processed. Will check again in 1000ms 14:12:55.896 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This performance was recorded on Feb. 12, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nJune 17, 2020 | Abby O'Neill -- On a brisk February morning, Alicia Keys, full of effervescence, entered NPR through the loading dock wearing a canary yellow faux fur coat. During our ride to the fourth floor, she joked about how she hadn't been invited to play at the Tiny Desk. That, of course, wasn't exactly true. We worked on and off for years to make this moment happen, and I can say wholeheartedly that it was worth the wait.\n\nAlicia Keys has an aura that you can sense the second she enters a room, or in my case, an elevator. She radiates compassion and kindness. This spirit is the key to Keys's songwriting, which is rooted in introspection and mindfulness.\n\nAs she approached her piano, a bit surprised at the amount of people in the room, she smiled and remarked over her shoulder, \"Gee, the Tiny Desk is tiny!\" She kicked off the set with an uncanny ode to combat the darkness of this moment in American history: \"Show Me Love,\" a single she released in 2019. No one could have predicted then how much her lyrics and musical healing would be crucial during this emotionally fraught time of unprecedented political and racial unrest, heightened by three months of quarantine due to a global pandemic.\n\nThe stand-out moment during her Tiny Desk was the premiere of \"Gramercy Park\", a song from her upcoming self-titled album, ALICIA, which is set to be released this fall. It's one of those timeless songs that will transcend radio formats and genres, with lyrics that address how utter selflessness and worrying about making everyone happy but yourself can throw your own center askew. The song's spiritual refrain is sure to be a sing-along moment for the rest of Keys's career.\n\nShe told the crowd after \"Gramercy Park\" that she's struggled with appeasing people her whole life, but she's trying harder now to set boundaries. Luckily for the Tiny Desk audience, that resolution didn't pertain to this concert. After wrapping up what was to be a three-song set with her latest single \"Underdog,\" which you may have seen her perform at this year's Grammys, the crowd begged for an encore. After crowdsourcing suggestions, she and her band delivered a riveting rendition of Keys's breakout 2001 single, \"Fallin'.\"\n\nThe world, now more than ever, needs more love, reflection and accountability – a mantra that's woven into every fiber of Alicia Keys's being and every lyric of her songs.\n\nSET LIST\n\"Show Me Love\"\n\"Gramercy Park\"\n\"Underdog\"\n\"Fallin'\"\n\nMUSICIANS\nAlicia Keys: vocals, piano; RAII & Whitney: vocals; Ant Parrish: bass; Curt Chambers: guitar; Mike Reid: drums; Omar Edwards: keys.\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith, Kara Frame; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, Natasha Branch; Videographers: Kara Frame, Maia Stern, Melany Rochester, Shanti Hands; Editor: Maia Stern; Associate Producer: Bobby Carter; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Kisha Ravi/NPR", "duration" => 1667, "filename" => "/downloads/Tiny Desk/2020-06-22 Alicia Keys: NPR Music Tiny Desk Concert/Alicia Keys: NPR Music Tiny Desk Concert [uwUt1fVLb3E].mp4", "id" => "uwUt1fVLb3E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uwUt1fVLb3E", "playlist_index" => 11, "timestamp" => 1592816419, "title" => "Alicia Keys: NPR Music Tiny Desk Concert", "upload_date" => "20200622"} 14:12:55.896 [debug] QUERY OK source="sources" db=0.2ms idle=1240.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:55.896 [debug] QUERY OK source="sources" db=0.1ms idle=1240.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:55.897 [debug] QUERY OK source="media_items" db=0.1ms queue=0.5ms idle=1109.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-06-22 09:00:19Z], 2] 14:12:55.900 [debug] QUERY OK source="media_items" db=1.4ms idle=415.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This performance was recorded on Feb. 12, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nJune 17, 2020 | Abby O'Neill -- On a brisk February morning, Alicia Keys, full of effervescence, entered NPR through the loading dock wearing a canary yellow faux fur coat. During our ride to the fourth floor, she joked about how she hadn't been invited to play at the Tiny Desk. That, of course, wasn't exactly true. We worked on and off for years to make this moment happen, and I can say wholeheartedly that it was worth the wait.\n\nAlicia Keys has an aura that you can sense the second she enters a room, or in my case, an elevator. She radiates compassion and kindness. This spirit is the key to Keys's songwriting, which is rooted in introspection and mindfulness.\n\nAs she approached her piano, a bit surprised at the amount of people in the room, she smiled and remarked over her shoulder, \"Gee, the Tiny Desk is tiny!\" She kicked off the set with an uncanny ode to combat the darkness of this moment in American history: \"Show Me Love,\" a single she released in 2019. No one could have predicted then how much her lyrics and musical healing would be crucial during this emotionally fraught time of unprecedented political and racial unrest, heightened by three months of quarantine due to a global pandemic.\n\nThe stand-out moment during her Tiny Desk was the premiere of \"Gramercy Park\", a song from her upcoming self-titled album, ALICIA, which is set to be released this fall. It's one of those timeless songs that will transcend radio formats and genres, with lyrics that address how utter selflessness and worrying about making everyone happy but yourself can throw your own center askew. The song's spiritual refrain is sure to be a sing-along moment for the rest of Keys's career.\n\nShe told the crowd after \"Gramercy Park\" that she's struggled with appeasing people her whole life, but she's trying harder now to set boundaries. Luckily for the Tiny Desk audience, that resolution didn't pertain to this concert. After wrapping up what was to be a three-song set with her latest single \"Underdog,\" which you may have seen her perform at this year's Grammys, the crowd begged for an encore. After crowdsourcing suggestions, she and her band delivered a riveting rendition of Keys's breakout 2001 single, \"Fallin'.\"\n\nThe world, now more than ever, needs more love, reflection and accountability – a mantra that's woven into every fiber of Alicia Keys's being and every lyric of her songs.\n\nSET LIST\n\"Show Me Love\"\n\"Gramercy Park\"\n\"Underdog\"\n\"Fallin'\"\n\nMUSICIANS\nAlicia Keys: vocals, piano; RAII & Whitney: vocals; Ant Parrish: bass; Curt Chambers: guitar; Mike Reid: drums; Omar Edwards: keys.\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith, Kara Frame; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, Natasha Branch; Videographers: Kara Frame, Maia Stern, Melany Rochester, Shanti Hands; Editor: Maia Stern; Associate Producer: Bobby Carter; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Kisha Ravi/NPR", "Alicia Keys: NPR Music Tiny Desk Concert", "cb25f22d-d7c4-4d19-b8b8-f56d4e38b3d8", 1667, false, "uwUt1fVLb3E", "https://www.youtube.com/watch?v=uwUt1fVLb3E", 11, "/downloads/Tiny Desk/2020-06-22 Alicia Keys: NPR Music Tiny Desk Concert/Alicia Keys: NPR Music Tiny Desk Concert [uwUt1fVLb3E].mp4", false, false, false, 2, [], 0, ~U[2020-06-22 09:00:19Z], ~U[2026-07-24 12:12:55Z], ~U[2026-07-24 12:12:55Z], "This performance was recorded on Feb. 12, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nJune 17, 2020 | Abby O'Neill -- On a brisk February morning, Alicia Keys, full of effervescence, entered NPR through the loading dock wearing a canary yellow faux fur coat. During our ride to the fourth floor, she joked about how she hadn't been invited to play at the Tiny Desk. That, of course, wasn't exactly true. We worked on and off for years to make this moment happen, and I can say wholeheartedly that it was worth the wait.\n\nAlicia Keys has an aura that you can sense the second she enters a room, or in my case, an elevator. She radiates compassion and kindness. This spirit is the key to Keys's songwriting, which is rooted in introspection and mindfulness.\n\nAs she approached her piano, a bit surprised at the amount of people in the room, she smiled and remarked over her shoulder, \"Gee, the Tiny Desk is tiny!\" She kicked off the set with an uncanny ode to combat the darkness of this moment in American history: \"Show Me Love,\" a single she released in 2019. No one could have predicted then how much her lyrics and musical healing would be crucial during this emotionally fraught time of unprecedented political and racial unrest, heightened by three months of quarantine due to a global pandemic.\n\nThe stand-out moment during her Tiny Desk was the premiere of \"Gramercy Park\", a song from her upcoming self-titled album, ALICIA, which is set to be released this fall. It's one of those timeless songs that will transcend radio formats and genres, with lyrics that address how utter selflessness and worrying about making everyone happy but yourself can throw your own center askew. The song's spiritual refrain is sure to be a sing-along moment for the rest of Keys's career.\n\nShe told the crowd after \"Gramercy Park\" that she's struggled with appeasing people her whole life, but she's trying harder now to set boundaries. Luckily for the Tiny Desk audience, that resolution didn't pertain to this concert. After wrapping up what was to be a three-song set with her latest single \"Underdog,\" which you may have seen her perform at this year's Grammys, the crowd begged for an encore. After crowdsourcing suggestions, she and her band delivered a riveting rendition of Keys's breakout 2001 single, \"Fallin'.\"\n\nThe world, now more than ever, needs more love, reflection and accountability – a mantra that's woven into every fiber of Alicia Keys's being and every lyric of her songs.\n\nSET LIST\n\"Show Me Love\"\n\"Gramercy Park\"\n\"Underdog\"\n\"Fallin'\"\n\nMUSICIANS\nAlicia Keys: vocals, piano; RAII & Whitney: vocals; Ant Parrish: bass; Curt Chambers: guitar; Mike Reid: drums; Omar Edwards: keys.\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith, Kara Frame; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, Natasha Branch; Videographers: Kara Frame, Maia Stern, Melany Rochester, Shanti Hands; Editor: Maia Stern; Associate Producer: Bobby Carter; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Kisha Ravi/NPR", "Alicia Keys: NPR Music Tiny Desk Concert", 1667, false, "uwUt1fVLb3E", "https://www.youtube.com/watch?v=uwUt1fVLb3E", (truncated) 14:12:55.900 [debug] QUERY OK source="sources" db=0.2ms idle=111.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:12:55.902 [debug] QUERY OK source="media_profiles" db=1.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" = ?) [2] 14:12:55.904 [debug] QUERY OK source="media_items" db=1.1ms idle=6.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [132] 14:12:55.904 [info] Kicking off download for media item #132 (uwUt1fVLb3E) 14:12:55.906 [debug] QUERY OK source="tasks" db=0.1ms idle=5.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [80, 132, ~U[2026-07-24 12:12:55Z], ~U[2026-07-24 12:12:55Z]] 14:12:55.906 [debug] Current batch of media processed. Will check again in 1000ms 14:12:56.906 [debug] Current batch of media processed. Will check again in 1000ms 14:12:57.908 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 9, 2020 | Lars Gotrich -- \"I've never done this without Paramore,\" Hayley Williams announces during her Tiny Desk (home) concert. For the first time in months, she's joined by a band, including friends and Tiny Desk alumnae Julien Baker and Becca Mancari. And from the moment the camera pans out of a literal tiny desk diorama, a jolt of energy leaps from Williams.\n\nPetals for Armor is a soul-cleansing exhale from years of holding her breath. Originally released in a series of EPs, her solo debut sings through heartache in a tangle of triumph and hard-earned wisdom. It's a pop album that knows sadness can simmer, but also shout over an ever-shifting sonic palette. During the pandemic and protests, Williams has played these songs from her couch with muted restraint, and self-serenaded with acoustic covers — sad songs really can be sympathetic companions during dark days. \n\nBut in her home, surrounded by blank canvases, Williams and friends splash a bottled-up energy. The joy is infectious, as \"Pure Love\" bursts from first bloom, \"Taken\" shows off Baker's jazzy-funk licks and Williams leans into the \"Dead Horse\" kiss-off with gleeful abandon. \n\nSET LIST\n\"Pure Love\"\n\"Taken\"\n\"Dead Horse\"\n\nMUSICIANS\nHayley Williams: vocals, keys, guitar\nAaron Steele: drums\nJoey Howard: bass\nBecca Mancari: synth, vocals\nJulien Baker: guitar\n\nCREDITS\nVideo: Mike Kluge, Jonny Kingsbury, Derec Dunn, Violeta Boix\nAudio: Travis Bing\nMiniature Art Director: Natalie Hosselton\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "duration" => 609, "filename" => "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].mp4", "id" => "ZknTE5DPlAA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZknTE5DPlAA", "playlist_index" => 12, "timestamp" => 1607508009, "title" => "Hayley Williams: Tiny Desk (Home) Concert", "upload_date" => "20201209"} 14:12:57.910 [debug] QUERY OK source="sources" db=1.9ms idle=425.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:12:57.911 [debug] QUERY OK source="sources" db=0.5ms idle=427.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:57.911 [debug] QUERY OK source="media_items" db=0.4ms idle=428.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-12-09 10:00:09Z], 2] 14:12:57.913 [debug] QUERY OK source="media_items" db=1.5ms idle=429.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 9, 2020 | Lars Gotrich -- \"I've never done this without Paramore,\" Hayley Williams announces during her Tiny Desk (home) concert. For the first time in months, she's joined by a band, including friends and Tiny Desk alumnae Julien Baker and Becca Mancari. And from the moment the camera pans out of a literal tiny desk diorama, a jolt of energy leaps from Williams.\n\nPetals for Armor is a soul-cleansing exhale from years of holding her breath. Originally released in a series of EPs, her solo debut sings through heartache in a tangle of triumph and hard-earned wisdom. It's a pop album that knows sadness can simmer, but also shout over an ever-shifting sonic palette. During the pandemic and protests, Williams has played these songs from her couch with muted restraint, and self-serenaded with acoustic covers — sad songs really can be sympathetic companions during dark days. \n\nBut in her home, surrounded by blank canvases, Williams and friends splash a bottled-up energy. The joy is infectious, as \"Pure Love\" bursts from first bloom, \"Taken\" shows off Baker's jazzy-funk licks and Williams leans into the \"Dead Horse\" kiss-off with gleeful abandon. \n\nSET LIST\n\"Pure Love\"\n\"Taken\"\n\"Dead Horse\"\n\nMUSICIANS\nHayley Williams: vocals, keys, guitar\nAaron Steele: drums\nJoey Howard: bass\nBecca Mancari: synth, vocals\nJulien Baker: guitar\n\nCREDITS\nVideo: Mike Kluge, Jonny Kingsbury, Derec Dunn, Violeta Boix\nAudio: Travis Bing\nMiniature Art Director: Natalie Hosselton\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Hayley Williams: Tiny Desk (Home) Concert", "58050a83-b445-4746-9af9-ae41bb515c05", 609, false, "ZknTE5DPlAA", "https://www.youtube.com/watch?v=ZknTE5DPlAA", 12, "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].mp4", false, false, false, 2, [], 0, ~U[2020-12-09 10:00:09Z], ~U[2026-07-24 12:12:57Z], ~U[2026-07-24 12:12:57Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 9, 2020 | Lars Gotrich -- \"I've never done this without Paramore,\" Hayley Williams announces during her Tiny Desk (home) concert. For the first time in months, she's joined by a band, including friends and Tiny Desk alumnae Julien Baker and Becca Mancari. And from the moment the camera pans out of a literal tiny desk diorama, a jolt of energy leaps from Williams.\n\nPetals for Armor is a soul-cleansing exhale from years of holding her breath. Originally released in a series of EPs, her solo debut sings through heartache in a tangle of triumph and hard-earned wisdom. It's a pop album that knows sadness can simmer, but also shout over an ever-shifting sonic palette. During the pandemic and protests, Williams has played these songs from her couch with muted restraint, and self-serenaded with acoustic covers — sad songs really can be sympathetic companions during dark days. \n\nBut in her home, surrounded by blank canvases, Williams and friends splash a bottled-up energy. The joy is infectious, as \"Pure Love\" bursts from first bloom, \"Taken\" shows off Baker's jazzy-funk licks and Williams leans into the \"Dead Horse\" kiss-off with gleeful abandon. \n\nSET LIST\n\"Pure Love\"\n\"Taken\"\n\"Dead Horse\"\n\nMUSICIANS\nHayley Williams: vocals, keys, guitar\nAaron Steele: drums\nJoey Howard: bass\nBecca Mancari: synth, vocals\nJulien Baker: guitar\n\nCREDITS\nVideo: Mike Kluge, Jonny Kingsbury, Derec Dunn, Violeta Boix\nAudio: Travis Bing\nMiniature Art Director: Natalie Hosselton\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Hayley Williams: Tiny Desk (Home) Concert", 609, false, "ZknTE5DPlAA", "https://www.youtube.com/watch?v=ZknTE5DPlAA", "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].mp4", false, 2, ~U[2020-12-09 10:00:09Z]] 14:12:57.914 [debug] QUERY OK source="sources" db=0.2ms idle=120.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:12:57.914 [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" = ?) [2] 14:12:57.915 [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 [133] 14:12:57.915 [info] Kicking off download for media item #133 (ZknTE5DPlAA) 14:12:57.917 [debug] QUERY OK source="tasks" db=0.4ms idle=3.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [81, 133, ~U[2026-07-24 12:12:57Z], ~U[2026-07-24 12:12:57Z]] 14:12:57.918 [debug] Current batch of media processed. Will check again in 1000ms 14:12:58.918 [debug] Current batch of media processed. Will check again in 1000ms 14:12:58.963 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0_5aOO980uI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/39/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ce/7f/ce7fd1dfdbf0ddf464e0def597ed0bd1966805211ae42dfa1925ec2daea2c835.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:12:58.964 [debug] QUERY OK db=0.1ms idle=1049.2ms begin [] 14:12:58.965 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:12:54Z], "/downloads/The Standup/2025-07-28 Software Horror Stories | The Standup/Software Horror Stories | The Standup [0_5aOO980uI].mp4", ~U[2026-07-24 12:12:58Z], 39] 14:12:58.965 [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/39/metadata.json.gz", "/config/metadata/media_items/39/thumbnail.jpg", 39, ~U[2026-07-24 12:12:58Z], ~U[2026-07-24 12:12:58Z]] 14:12:58.966 [debug] QUERY OK db=0.1ms commit [] 14:12:58.968 [debug] QUERY OK source="media_items" db=2.0ms idle=1049.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [485658337, ~U[2026-07-24 12:12:58Z], 39] 14:12:58.968 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:58.969 [info] {"args":{"id":39},"id":43,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":38569207,"event":"job:stop","queue_time":777398853,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:58.975 [info] {"args":{"id":42},"id":46,"meta":{},"system_time":1784895178975481271,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:12:58.977 [debug] QUERY OK source="media_items" db=1.2ms idle=176.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" = ?) [42] 14:12:58.977 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:12:58.977 [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" = ?) [1] 14:12:58.978 [debug] QUERY OK source="media_profiles" db=0.5ms idle=9.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:12:58.979 [debug] QUERY OK source="media_items" db=0.9ms 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 [42] 14:12:58.980 [debug] QUERY OK source="media_metadata" db=0.3ms idle=5.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [42] 14:12:58.982 [debug] QUERY OK source="media_profiles" db=1.0ms 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] 14:12:58.982 [debug] QUERY OK source="settings" db=0.4ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:58.983 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:58.983 [debug] Running yt-dlp command for action: get_downloadable_status 14:12:58.985 [debug] QUERY OK source="settings" db=0.5ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:58.985 [debug] QUERY OK source="settings" db=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:12:58.986 [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:12:58.986 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZBk8oCmfpMg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/75/03/75036ae6328ea3b921a78e1d5bc7966b795b5d63bef651f19abd41099ffe8771.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:12:59.919 [debug] Current batch of media processed. Will check again in 1000ms 14:13:00.526 [info] {"source":"oban","duration":201,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:13:00.921 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Stephen Thompson | May 24, 2024\nNelly Furtado’s career has spanned a quarter-century, not to mention tens of millions of records sold, so it’s tough to fit all the highlights into a single Tiny Desk concert. But damned if Furtado didn’t at least try: Her set featured a bunch of her biggest hits (“Promiscuous,” “Say It Right,” “I’m Like A Bird,” “Maneater”), her remix of Missy Elliott’s “Get Ur Freak On” and, yes, a brand-new single called “Love Bites.” In all, 11 tracks — some of them complete, some of them truncated into medleys — made the cut.\n\nFor this set, Furtado assembled eight of her favorite veteran collaborators, who joined her in organically re-creating her busy, glitchy pop sound without relying on backing tracks. That meant incorporating everything from a violin to cowbell to beatboxing to scratching courtesy of DJ Lil Jaz — Furtado and Lil Jaz have a daughter together, Nevis, who served as the set’s creative director — in a performance that felt like a victory lap, a greatest-hits reel and a homecoming all at once.\n\nSET LIST\n“Say It Right”\n“Explode”\n“Powerless (Say What You Want)”\n“Promiscuous”\n“All Good Things (Come To An End)”\n“I'm Like A Bird”\n“Get Ur Freak On (Remix)”\n“Love Bites”\n“Eat Your Man”\n“Give It To Me”\n“Maneater”\n\nMUSICIANS\nNelly Furtado: lead vocals\nHrag Sanbalian: keys, musical direction\nDaniel Stone: percussion\nWilliam Lamoureux: violin\nBrian West: guitar\nLionel Jarvis: bass\nJim Beanz: vocals\nAnjulie Persaud: vocals\nDJ Lil’ Jaz: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Michael Zamora\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #nellyfurtado", "duration" => 1296, "filename" => "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].mp4", "id" => "y-PLr-BPxKU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=y-PLr-BPxKU", "playlist_index" => 13, "timestamp" => 1716541251, "title" => "Nelly Furtado: Tiny Desk Concert", "upload_date" => "20240524"} 14:13:00.922 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=438.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:00.922 [debug] QUERY OK source="sources" db=0.3ms idle=439.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:00.923 [debug] QUERY OK source="media_items" db=0.3ms idle=439.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-05-24 09:00:51Z], 2] 14:13:00.925 [debug] QUERY OK source="media_items" db=1.9ms idle=397.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | May 24, 2024\nNelly Furtado’s career has spanned a quarter-century, not to mention tens of millions of records sold, so it’s tough to fit all the highlights into a single Tiny Desk concert. But damned if Furtado didn’t at least try: Her set featured a bunch of her biggest hits (“Promiscuous,” “Say It Right,” “I’m Like A Bird,” “Maneater”), her remix of Missy Elliott’s “Get Ur Freak On” and, yes, a brand-new single called “Love Bites.” In all, 11 tracks — some of them complete, some of them truncated into medleys — made the cut.\n\nFor this set, Furtado assembled eight of her favorite veteran collaborators, who joined her in organically re-creating her busy, glitchy pop sound without relying on backing tracks. That meant incorporating everything from a violin to cowbell to beatboxing to scratching courtesy of DJ Lil Jaz — Furtado and Lil Jaz have a daughter together, Nevis, who served as the set’s creative director — in a performance that felt like a victory lap, a greatest-hits reel and a homecoming all at once.\n\nSET LIST\n“Say It Right”\n“Explode”\n“Powerless (Say What You Want)”\n“Promiscuous”\n“All Good Things (Come To An End)”\n“I'm Like A Bird”\n“Get Ur Freak On (Remix)”\n“Love Bites”\n“Eat Your Man”\n“Give It To Me”\n“Maneater”\n\nMUSICIANS\nNelly Furtado: lead vocals\nHrag Sanbalian: keys, musical direction\nDaniel Stone: percussion\nWilliam Lamoureux: violin\nBrian West: guitar\nLionel Jarvis: bass\nJim Beanz: vocals\nAnjulie Persaud: vocals\nDJ Lil’ Jaz: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Michael Zamora\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #nellyfurtado", "Nelly Furtado: Tiny Desk Concert", "6d838998-c982-4e52-80f4-7547e616fa97", 1296, false, "y-PLr-BPxKU", "https://www.youtube.com/watch?v=y-PLr-BPxKU", 13, "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].mp4", false, false, false, 2, [], 0, ~U[2024-05-24 09:00:51Z], ~U[2026-07-24 12:13:00Z], ~U[2026-07-24 12:13:00Z], "Stephen Thompson | May 24, 2024\nNelly Furtado’s career has spanned a quarter-century, not to mention tens of millions of records sold, so it’s tough to fit all the highlights into a single Tiny Desk concert. But damned if Furtado didn’t at least try: Her set featured a bunch of her biggest hits (“Promiscuous,” “Say It Right,” “I’m Like A Bird,” “Maneater”), her remix of Missy Elliott’s “Get Ur Freak On” and, yes, a brand-new single called “Love Bites.” In all, 11 tracks — some of them complete, some of them truncated into medleys — made the cut.\n\nFor this set, Furtado assembled eight of her favorite veteran collaborators, who joined her in organically re-creating her busy, glitchy pop sound without relying on backing tracks. That meant incorporating everything from a violin to cowbell to beatboxing to scratching courtesy of DJ Lil Jaz — Furtado and Lil Jaz have a daughter together, Nevis, who served as the set’s creative director — in a performance that felt like a victory lap, a greatest-hits reel and a homecoming all at once.\n\nSET LIST\n“Say It Right”\n“Explode”\n“Powerless (Say What You Want)”\n“Promiscuous”\n“All Good Things (Come To An End)”\n“I'm Like A Bird”\n“Get Ur Freak On (Remix)”\n“Love Bites”\n“Eat Your Man”\n“Give It To Me”\n“Maneater”\n\nMUSICIANS\nNelly Furtado: lead vocals\nHrag Sanbalian: keys, musical direction\nDaniel Stone: percussion\nWilliam Lamoureux: violin\nBrian West: guitar\nLionel Jarvis: bass\nJim Beanz: vocals\nAnjulie Persaud: vocals\nDJ Lil’ Jaz: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Michael Zamora\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #nellyfurtado", "Nelly Furtado: Tiny Desk Concert", 1296, false, "y-PLr-BPxKU", "https://www.youtube.com/watch?v=y-PLr-BPxKU", "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].mp4", false, 2, ~U[2024-05-24 09:00:51Z]] 14:13:00.926 [debug] QUERY OK source="sources" db=0.6ms idle=122.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:00.928 [debug] QUERY OK source="media_profiles" db=0.5ms queue=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" = ?) [2] 14:13:00.930 [debug] QUERY OK source="media_items" db=0.6ms idle=6.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 [134] 14:13:00.930 [info] Kicking off download for media item #134 (y-PLr-BPxKU) 14:13:00.934 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=7.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [82, 134, ~U[2026-07-24 12:13:00Z], ~U[2026-07-24 12:13:00Z]] 14:13:00.934 [debug] Current batch of media processed. Will check again in 1000ms 14:13:01.920 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZBk8oCmfpMg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/75/03/75036ae6328ea3b921a78e1d5bc7966b795b5d63bef651f19abd41099ffe8771.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:13:01.921 [debug] Running yt-dlp command for action: download 14:13:01.925 [debug] QUERY OK source="settings" db=4.0ms 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 [] 14:13:01.927 [debug] QUERY OK source="settings" db=1.4ms idle=994.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:01.928 [debug] QUERY OK source="settings" db=0.9ms idle=995.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:01.928 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZBk8oCmfpMg --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b9/f2/b9f284544e969d5d3f51b31b7d196c968d95ebb6600a91e2c40cb9bc8dcb6c27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:13:01.936 [debug] Current batch of media processed. Will check again in 1000ms 14:13:02.937 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Stephen Thompson | March 15, 2024\nWalking into the room shortly before Justin Timberlake took our cramped stage, I overheard someone on his team wondering aloud if this was to be the most densely populated Tiny Desk concert in history — which is to say, the most musicians we've ever fit in a single frame. It's not, but we don't often find a way to cram in this many human beings (15 in all) and this much gear.\n\nTimberlake has never been one to give partial effort, but this is a production befitting the occasion: namely, a set timed to drop concurrently with the release of his new album, Everything I Thought It Was. Eschewing the rootsier feel of its predecessor, 2018's Man of the Woods, the new record is a throwback, an epic and a blowout — and so's this lavish set, which scales the Timberlake experience down to 25 minutes of maximalist celebration and, when the moment calls for it, chiller vibes.\n\nBacked by his band The Tennessee Kids, Timberlake's Tiny Desk debut leans heavily on his early solo catalog, as he kicks it off with two songs from 2002's classic Justified and weaves in three more from 2006's magnificent FutureSex/LoveSounds — including a set-closing \"SexyBack,\" which finds the singer trotting out a megaphone in a truly meme-worthy moment.\n\nBy the way, in case you're wondering, the all-time record for musicians behind the Tiny Desk is a whopping 23, a feat pulled off by the fantastic Mucca Pazza in 2015. But Timberlake and company rival that classic performance's energy — in both cases, the real triumph lies not in the Tetris of it all, but in the way that many people still find ways to move, buoyantly and as one mighty organism.\n\nSET LIST\n\"Señorita\"\n\"Rock Your Body\"\n\"Pusher Love Girl\"\n\"Until The End Of Time\"\n\"Selfish\"\n\"What Goes Around\"\n\"SexyBack\"\n\nMUSICIANS\nJustin Timberlake: lead vocals, guitar, keys\nRaVaughn Brown: vocals\nCamry: vocals\nErin Stevenson: vocals\nKenyon Dixon: vocals\nJustin Gilbert: keys\nMike Reid: drums\nElliot Ives: guitar\nDerrick Ray: bass\nLeon Silva: saxophone\nKevin Williams: trombone, flute\nDontae Winslow: trumpet\nSean Erick: trumpet\nAdam Blackstone: keys, percussion, music direction\nAndrew Hypes: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Neil Tevault\nVideographers: Maia Stern, Kara Frame, Joshua Bryant, Alanté Serene, Elizabeth Gillis\nAudio Engineers: Kwesi Lee, Adam Blackstone, Danny Cheung\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#justintimberlake #nprmusic #tinydesk \n\n0:15 Señorita\n2:20 Rock Your Body\n4:40 Pusher Love Girl\n7:30 Until The End Of Time\n12:44 Selfish\n16:40 What Goes Around\n19:56 SexyBack", "duration" => 1540, "filename" => "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].mp4", "id" => "cMIJsoaxRjk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=cMIJsoaxRjk", "playlist_index" => 14, "timestamp" => 1710518406, "title" => "Justin Timberlake: Tiny Desk Concert", "upload_date" => "20240315"} 14:13:02.937 [debug] QUERY OK source="sources" db=0.1ms idle=1011.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:13:02.938 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1010.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:02.938 [debug] QUERY OK source="media_items" db=0.3ms idle=1009.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-03-15 16:00:06Z], 2] 14:13:02.941 [debug] QUERY OK source="media_items" db=1.2ms idle=456.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | March 15, 2024\nWalking into the room shortly before Justin Timberlake took our cramped stage, I overheard someone on his team wondering aloud if this was to be the most densely populated Tiny Desk concert in history — which is to say, the most musicians we've ever fit in a single frame. It's not, but we don't often find a way to cram in this many human beings (15 in all) and this much gear.\n\nTimberlake has never been one to give partial effort, but this is a production befitting the occasion: namely, a set timed to drop concurrently with the release of his new album, Everything I Thought It Was. Eschewing the rootsier feel of its predecessor, 2018's Man of the Woods, the new record is a throwback, an epic and a blowout — and so's this lavish set, which scales the Timberlake experience down to 25 minutes of maximalist celebration and, when the moment calls for it, chiller vibes.\n\nBacked by his band The Tennessee Kids, Timberlake's Tiny Desk debut leans heavily on his early solo catalog, as he kicks it off with two songs from 2002's classic Justified and weaves in three more from 2006's magnificent FutureSex/LoveSounds — including a set-closing \"SexyBack,\" which finds the singer trotting out a megaphone in a truly meme-worthy moment.\n\nBy the way, in case you're wondering, the all-time record for musicians behind the Tiny Desk is a whopping 23, a feat pulled off by the fantastic Mucca Pazza in 2015. But Timberlake and company rival that classic performance's energy — in both cases, the real triumph lies not in the Tetris of it all, but in the way that many people still find ways to move, buoyantly and as one mighty organism.\n\nSET LIST\n\"Señorita\"\n\"Rock Your Body\"\n\"Pusher Love Girl\"\n\"Until The End Of Time\"\n\"Selfish\"\n\"What Goes Around\"\n\"SexyBack\"\n\nMUSICIANS\nJustin Timberlake: lead vocals, guitar, keys\nRaVaughn Brown: vocals\nCamry: vocals\nErin Stevenson: vocals\nKenyon Dixon: vocals\nJustin Gilbert: keys\nMike Reid: drums\nElliot Ives: guitar\nDerrick Ray: bass\nLeon Silva: saxophone\nKevin Williams: trombone, flute\nDontae Winslow: trumpet\nSean Erick: trumpet\nAdam Blackstone: keys, percussion, music direction\nAndrew Hypes: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Neil Tevault\nVideographers: Maia Stern, Kara Frame, Joshua Bryant, Alanté Serene, Elizabeth Gillis\nAudio Engineers: Kwesi Lee, Adam Blackstone, Danny Cheung\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#justintimberlake #nprmusic #tinydesk \n\n0:15 Señorita\n2:20 Rock Your Body\n4:40 Pusher Love Girl\n7:30 Until The End Of Time\n12:44 Selfish\n16:40 What Goes Around\n19:56 SexyBack", "Justin Timberlake: Tiny Desk Concert", "fd0a2f21-cd42-4795-9214-2836ea35322a", 1540, false, "cMIJsoaxRjk", "https://www.youtube.com/watch?v=cMIJsoaxRjk", 14, "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].mp4", false, false, false, 2, [], 0, ~U[2024-03-15 16:00:06Z], ~U[2026-07-24 12:13:02Z], ~U[2026-07-24 12:13:02Z], "Stephen Thompson | March 15, 2024\nWalking into the room shortly before Justin Timberlake took our cramped stage, I overheard someone on his team wondering aloud if this was to be the most densely populated Tiny Desk concert in history — which is to say, the most musicians we've ever fit in a single frame. It's not, but we don't often find a way to cram in this many human beings (15 in all) and this much gear.\n\nTimberlake has never been one to give partial effort, but this is a production befitting the occasion: namely, a set timed to drop concurrently with the release of his new album, Everything I Thought It Was. Eschewing the rootsier feel of its predecessor, 2018's Man of the Woods, the new record is a throwback, an epic and a blowout — and so's this lavish set, which scales the Timberlake experience down to 25 minutes of maximalist celebration and, when the moment calls for it, chiller vibes.\n\nBacked by his band The Tennessee Kids, Timberlake's Tiny Desk debut leans heavily on his early solo catalog, as he kicks it off with two songs from 2002's classic Justified and weaves in three more from 2006's magnificent FutureSex/LoveSounds — including a set-closing \"SexyBack,\" which finds the singer trotting out a megaphone in a truly meme-worthy moment.\n\nBy the way, in case you're wondering, the all-time record for musicians behind the Tiny Desk is a whopping 23, a feat pulled off by the fantastic Mucca Pazza in 2015. But Timberlake and company rival that classic performance's energy — in both cases, the real triumph lies not in the Tetris of it all, but in the way that many people still find ways to move, buoyantly and as one mighty organism.\n\nSET LIST\n\"Señorita\"\n\"Rock Your Body\"\n\"Pusher Love Girl\"\n\"Until The End Of Time\"\n\"Selfish\"\n\"What Goes Around\"\n\"SexyBack\"\n\nMUSICIANS\nJustin Timberlake: lead vocals, guitar, keys\nRaVaughn Brown: vocals\nCamry: vocals\nErin Stevenson: vocals\nKenyon Dixon: vocals\nJustin Gilbert: keys\nMike Reid: drums\nElliot Ives: guitar\nDerrick Ray: bass\nLeon Silva: saxophone\nKevin Williams: trombone, flute\nDontae Winslow: trumpet\nSean Erick: trumpet\nAdam Blackstone: keys, percussion, music direction\nAndrew Hypes: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Neil Tevault\nVideographers: Maia Stern, Kara Frame, Joshua Bryant, Alanté Serene, Elizabeth Gillis\nAudio Engineers: Kwesi Lee, Adam Blackstone, Danny Cheung\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#justintimberlake #nprmusic #tinydesk \n\n0:15 Señorita\n2:20 Rock Your Body\n4:40 Pusher Love Girl\n7:30 Until The End Of Time\n12:44 Selfish\n16:40 What Goes Around\n19:56 SexyBack", "Justin Timberlake: Tiny Desk Concert", 1540, false, "cMIJsoaxRjk", "https://www.youtube.com/watch?v=cMIJsoaxRjk", "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].mp4", false, 2, ~U[2024-03-15 16:00:06Z]] 14:13:02.941 [debug] QUERY OK source="sources" db=0.3ms idle=133.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:02.942 [debug] QUERY OK source="media_profiles" db=0.6ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:02.943 [debug] QUERY OK source="media_items" db=0.6ms 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 [135] 14:13:02.943 [info] Kicking off download for media item #135 (cMIJsoaxRjk) 14:13:02.946 [debug] QUERY OK source="tasks" db=0.1ms idle=4.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [83, 135, ~U[2026-07-24 12:13:02Z], ~U[2026-07-24 12:13:02Z]] 14:13:02.946 [debug] Current batch of media processed. Will check again in 1000ms 14:13:03.947 [debug] Current batch of media processed. Will check again in 1000ms 14:13:04.949 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Mac Miller play \"Small Worlds\", \"What's the Use? (Feat. Thundercat)\" and \"2009\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nAug. 6, 2018 | Bobby Carter -- There was a shift in Mac Miller's boisterous demeanor as he started the third of his three-song Tiny Desk set. It's the first time he's performed tracks from his new album, Swimming, in front of an audience. On \"2009,\" he rubbed his chin with clinched eyes, looking like a young man who's beginning to crack the code. Backed by a piano loop and a string quartet, he reflected on his journey's peaks and valleys thus far.\n\nI ain't asking why no more\nI know I'll take it if it's mine\nI don't stay inside the lines\nIt ain't 2009 no more\nYeah, I know what's behind that door\n\nWith nearly a decade under his belt at 26 years old, these words ring like an artist twice his age.\n\nWe were introduced to Mac Miller via 2011's XXL Freshman Class, which featured a special crop of MCs such as Kendrick Lamar, Meek Mill and YG, all of whom are now considered in the upper echelon of hip-hop. After his big splash, he's been able to find a groove and consistently release quality rap records, ultimately keeping his name in the conversation with the other young greats. His 2011 album, Blue Slide Park, reached No. 1 on the Billboard 200, the first independently distributed debut album to do so since 1995's Dogg Food by Tha Dogg Pound. These consecutive triumphs amassed plenty of fame, fortune and insurmountable obstacles, causing a stumble here and there. Throughout the years, however, Mac has brushed himself off and put it in the music.\n\nFor this performance, Mac Miller invited frequent collaborator Thundercat, who graced the Tiny Desk last year and will join Mac on tour this fall. Thundercat put on a dazzling shaker routine and played the deep centerpiece bass line on \"What's The Use?\" These Swimming iterations don't veer far away from the recorded versions, but here, his lyrics seem easier to interpret under live instrumentation.\n\nSet List\n\"Small Worlds\"\n\"What's the Use? (Feat. Thundercat)\"\n\"2009\"\n\nMusicians\nMac Miller (Vocals), Thundercat (Bass), Justus West (Guitar), Klynik (Keys), Joe Cleveland (Bass), Kendall Lewis (Drums), Robin Fay-Massie (Violin), YaShauna Swan (2nd Violin), Lelia Walker (Viola), Melanie Hsu (Cello)\n\nCredits\nProducers: Bobby Carter, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Beck Harlan, Khun Minn Ohn; Production Assistants: Catherine Zhang, Téa Mottolese; Photo: Eslah Attar/NPR.\n\n0:00 Introduction\n0:16 Mac Miller Small Worlds\n5:44 Mac Miller feat. Thundercat What's the Use?\n11:42 Mac Miller 2009", "duration" => 1029, "filename" => "/downloads/Tiny Desk/2018-08-08 Mac Miller: NPR Music Tiny Desk Concert/Mac Miller: NPR Music Tiny Desk Concert [QrR_gm6RqCo].mp4", "id" => "QrR_gm6RqCo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=QrR_gm6RqCo", "playlist_index" => 15, "timestamp" => 1533718803, "title" => "Mac Miller: NPR Music Tiny Desk Concert", "upload_date" => "20180808"} 14:13:04.949 [debug] QUERY OK source="sources" db=0.5ms idle=466.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:04.951 [debug] QUERY OK source="sources" db=0.6ms queue=0.3ms idle=467.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:04.952 [debug] QUERY OK source="media_items" db=0.5ms idle=468.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2018-08-08 09:00:03Z], 2] 14:13:04.954 [debug] QUERY OK source="media_items" db=1.6ms idle=469.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Mac Miller play \"Small Worlds\", \"What's the Use? (Feat. Thundercat)\" and \"2009\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nAug. 6, 2018 | Bobby Carter -- There was a shift in Mac Miller's boisterous demeanor as he started the third of his three-song Tiny Desk set. It's the first time he's performed tracks from his new album, Swimming, in front of an audience. On \"2009,\" he rubbed his chin with clinched eyes, looking like a young man who's beginning to crack the code. Backed by a piano loop and a string quartet, he reflected on his journey's peaks and valleys thus far.\n\nI ain't asking why no more\nI know I'll take it if it's mine\nI don't stay inside the lines\nIt ain't 2009 no more\nYeah, I know what's behind that door\n\nWith nearly a decade under his belt at 26 years old, these words ring like an artist twice his age.\n\nWe were introduced to Mac Miller via 2011's XXL Freshman Class, which featured a special crop of MCs such as Kendrick Lamar, Meek Mill and YG, all of whom are now considered in the upper echelon of hip-hop. After his big splash, he's been able to find a groove and consistently release quality rap records, ultimately keeping his name in the conversation with the other young greats. His 2011 album, Blue Slide Park, reached No. 1 on the Billboard 200, the first independently distributed debut album to do so since 1995's Dogg Food by Tha Dogg Pound. These consecutive triumphs amassed plenty of fame, fortune and insurmountable obstacles, causing a stumble here and there. Throughout the years, however, Mac has brushed himself off and put it in the music.\n\nFor this performance, Mac Miller invited frequent collaborator Thundercat, who graced the Tiny Desk last year and will join Mac on tour this fall. Thundercat put on a dazzling shaker routine and played the deep centerpiece bass line on \"What's The Use?\" These Swimming iterations don't veer far away from the recorded versions, but here, his lyrics seem easier to interpret under live instrumentation.\n\nSet List\n\"Small Worlds\"\n\"What's the Use? (Feat. Thundercat)\"\n\"2009\"\n\nMusicians\nMac Miller (Vocals), Thundercat (Bass), Justus West (Guitar), Klynik (Keys), Joe Cleveland (Bass), Kendall Lewis (Drums), Robin Fay-Massie (Violin), YaShauna Swan (2nd Violin), Lelia Walker (Viola), Melanie Hsu (Cello)\n\nCredits\nProducers: Bobby Carter, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Beck Harlan, Khun Minn Ohn; Production Assistants: Catherine Zhang, Téa Mottolese; Photo: Eslah Attar/NPR.\n\n0:00 Introduction\n0:16 Mac Miller Small Worlds\n5:44 Mac Miller feat. Thundercat What's the Use?\n11:42 Mac Miller 2009", "Mac Miller: NPR Music Tiny Desk Concert", "051d4384-4e51-486f-899c-267f500e6db3", 1029, false, "QrR_gm6RqCo", "https://www.youtube.com/watch?v=QrR_gm6RqCo", 15, "/downloads/Tiny Desk/2018-08-08 Mac Miller: NPR Music Tiny Desk Concert/Mac Miller: NPR Music Tiny Desk Concert [QrR_gm6RqCo].mp4", false, false, false, 2, [], 0, ~U[2018-08-08 09:00:03Z], ~U[2026-07-24 12:13:04Z], ~U[2026-07-24 12:13:04Z], "Watch Mac Miller play \"Small Worlds\", \"What's the Use? (Feat. Thundercat)\" and \"2009\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nAug. 6, 2018 | Bobby Carter -- There was a shift in Mac Miller's boisterous demeanor as he started the third of his three-song Tiny Desk set. It's the first time he's performed tracks from his new album, Swimming, in front of an audience. On \"2009,\" he rubbed his chin with clinched eyes, looking like a young man who's beginning to crack the code. Backed by a piano loop and a string quartet, he reflected on his journey's peaks and valleys thus far.\n\nI ain't asking why no more\nI know I'll take it if it's mine\nI don't stay inside the lines\nIt ain't 2009 no more\nYeah, I know what's behind that door\n\nWith nearly a decade under his belt at 26 years old, these words ring like an artist twice his age.\n\nWe were introduced to Mac Miller via 2011's XXL Freshman Class, which featured a special crop of MCs such as Kendrick Lamar, Meek Mill and YG, all of whom are now considered in the upper echelon of hip-hop. After his big splash, he's been able to find a groove and consistently release quality rap records, ultimately keeping his name in the conversation with the other young greats. His 2011 album, Blue Slide Park, reached No. 1 on the Billboard 200, the first independently distributed debut album to do so since 1995's Dogg Food by Tha Dogg Pound. These consecutive triumphs amassed plenty of fame, fortune and insurmountable obstacles, causing a stumble here and there. Throughout the years, however, Mac has brushed himself off and put it in the music.\n\nFor this performance, Mac Miller invited frequent collaborator Thundercat, who graced the Tiny Desk last year and will join Mac on tour this fall. Thundercat put on a dazzling shaker routine and played the deep centerpiece bass line on \"What's The Use?\" These Swimming iterations don't veer far away from the recorded versions, but here, his lyrics seem easier to interpret under live instrumentation.\n\nSet List\n\"Small Worlds\"\n\"What's the Use? (Feat. Thundercat)\"\n\"2009\"\n\nMusicians\nMac Miller (Vocals), Thundercat (Bass), Justus West (Guitar), Klynik (Keys), Joe Cleveland (Bass), Kendall Lewis (Drums), Robin Fay-Massie (Violin), YaShauna Swan (2nd Violin), Lelia Walker (Viola), Melanie Hsu (Cello)\n\nCredits\nProducers: Bobby Carter, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Beck Harlan, Khun Minn Ohn; Production Assistants: Catherine Zhang, Téa Mottolese; Photo: Eslah Attar/NPR.\n\n0:00 Introduction\n0:16 Mac Miller Small Worlds\n5:44 Mac Miller feat. Thundercat What's the Use?\n11:42 Mac Miller 2009", "Mac Miller: NPR Music Tiny Desk Concert", 1029, false, "QrR_gm6RqCo", "https://www.youtube.com/watch?v=QrR_gm6RqCo", "/downloads/Tiny Desk/2018-08-08 Mac Miller: NPR Music Tiny Desk Concert/Mac Miller: NPR Music Tiny Desk Concert [QrR_gm6RqCo].mp4", false, 2, ~U[2018-08-08 09:00:03Z]] 14:13:04.955 [debug] QUERY OK source="sources" db=0.5ms idle=140.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:04.955 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:04.956 [debug] QUERY OK source="media_items" db=0.5ms 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 [136] 14:13:04.956 [info] Kicking off download for media item #136 (QrR_gm6RqCo) 14:13:04.959 [debug] QUERY OK source="tasks" db=0.6ms idle=4.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [84, 136, ~U[2026-07-24 12:13:04Z], ~U[2026-07-24 12:13:04Z]] 14:13:04.960 [debug] Current batch of media processed. Will check again in 1000ms 14:13:05.961 [debug] Current batch of media processed. Will check again in 1000ms 14:13:06.962 [debug] Current batch of media processed. Will check again in 1000ms 14:13:07.964 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Sept. 15, 2017 | Lars Gotrich -- Snail Mail's sleepy songs have a way of waking you up. They rumble at a steady pace like a scrappy rock band playing to a small room, but then Lindsey Jordan, who just graduated from high school this past spring, drops a line like, \"So if you look death right in the face, don't thank him / Because there's nothing and there won't ever be.\" You can feel the room nod in solidarity, and you could feel the NPR Music office do the same when Snail Mail performed \"Slug.\"\n\nEncouraged by punks in the Baltimore scene, Jordan started Snail Mail at 15 and released the quietly stunning Habit EP via Priests' in-house label last year. She's quickly found fans in Helium and Ex Hex's Mary Timony (who also happens to be Jordan's guitar teacher) and just went on tour with Waxahatchee and Palehound. Oh, and she once made blueberry pancakes with me on a short-lived NPR cooking show because clearly my kitchen is the path to success.\n\nJordan's joined in this performance by what's become her consistent live band (drummer Ray Brown and bassist Alex Russell), giving weight to both \"Slug\" and the soaring coming-of-age anthem \"Thinning.\" Because we often ask bands to turn down for the office space, she jokes, \"I guess I don't really know what we sound like because we're so loud. Now we're quiet and Ray's using the mallets and my guitar's all the way down — I was like, 'We sound like this?'\"\n\nJordan closes the set solo with a new song, \"Anytime.\" It is, perhaps typically for Snail Mail, slow and sad, but the alternate guitar tuning and Jordan's drawled vocal performance gives this song about a crush an aerial motion, like acrobats sliding down a long sheet of fabric.\n\nHabit is out now via Sister Polygon. Snail Mail goes on tour with Beach Fossils in October.\n\nSet List\n\n\"Slug\"\n\"Thinning\"\n\"Anytime\"\n\nMUSICIANS\n\nLindsey Jordan (electric guitar, vocals); Raymond Brown (drums); Alex Russell (bass)\n\nCREDITS\n\nProducers: Bob Boilen, Niki Walker, Morgan Noelle Smith; Audio Engineers: James Willetts, Josh Rogosin; Videographers: Niki Walker, Tsering Bista; Production Assistant: Marissa Lorusso; Photo: Claire Harbage/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "duration" => 899, "filename" => "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].mp4", "id" => "21ix1OwPoY8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=21ix1OwPoY8", "playlist_index" => 16, "timestamp" => 1506085200, "title" => "Snail Mail: NPR Music Tiny Desk Concert", "upload_date" => "20170922"} 14:13:07.965 [debug] QUERY OK source="sources" db=0.3ms queue=0.6ms idle=1481.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:07.966 [debug] QUERY OK source="sources" db=0.6ms idle=1482.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:07.967 [debug] QUERY OK source="media_items" db=0.5ms idle=1483.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-09-22 13:00:00Z], 2] 14:13:07.971 [debug] QUERY OK source="media_items" db=3.3ms idle=1146.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sept. 15, 2017 | Lars Gotrich -- Snail Mail's sleepy songs have a way of waking you up. They rumble at a steady pace like a scrappy rock band playing to a small room, but then Lindsey Jordan, who just graduated from high school this past spring, drops a line like, \"So if you look death right in the face, don't thank him / Because there's nothing and there won't ever be.\" You can feel the room nod in solidarity, and you could feel the NPR Music office do the same when Snail Mail performed \"Slug.\"\n\nEncouraged by punks in the Baltimore scene, Jordan started Snail Mail at 15 and released the quietly stunning Habit EP via Priests' in-house label last year. She's quickly found fans in Helium and Ex Hex's Mary Timony (who also happens to be Jordan's guitar teacher) and just went on tour with Waxahatchee and Palehound. Oh, and she once made blueberry pancakes with me on a short-lived NPR cooking show because clearly my kitchen is the path to success.\n\nJordan's joined in this performance by what's become her consistent live band (drummer Ray Brown and bassist Alex Russell), giving weight to both \"Slug\" and the soaring coming-of-age anthem \"Thinning.\" Because we often ask bands to turn down for the office space, she jokes, \"I guess I don't really know what we sound like because we're so loud. Now we're quiet and Ray's using the mallets and my guitar's all the way down — I was like, 'We sound like this?'\"\n\nJordan closes the set solo with a new song, \"Anytime.\" It is, perhaps typically for Snail Mail, slow and sad, but the alternate guitar tuning and Jordan's drawled vocal performance gives this song about a crush an aerial motion, like acrobats sliding down a long sheet of fabric.\n\nHabit is out now via Sister Polygon. Snail Mail goes on tour with Beach Fossils in October.\n\nSet List\n\n\"Slug\"\n\"Thinning\"\n\"Anytime\"\n\nMUSICIANS\n\nLindsey Jordan (electric guitar, vocals); Raymond Brown (drums); Alex Russell (bass)\n\nCREDITS\n\nProducers: Bob Boilen, Niki Walker, Morgan Noelle Smith; Audio Engineers: James Willetts, Josh Rogosin; Videographers: Niki Walker, Tsering Bista; Production Assistant: Marissa Lorusso; Photo: Claire Harbage/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Snail Mail: NPR Music Tiny Desk Concert", "b6248ca0-8afe-4975-9b7d-22dac8406ea1", 899, false, "21ix1OwPoY8", "https://www.youtube.com/watch?v=21ix1OwPoY8", 16, "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].mp4", false, false, false, 2, [], 0, ~U[2017-09-22 13:00:00Z], ~U[2026-07-24 12:13:07Z], ~U[2026-07-24 12:13:07Z], "Sept. 15, 2017 | Lars Gotrich -- Snail Mail's sleepy songs have a way of waking you up. They rumble at a steady pace like a scrappy rock band playing to a small room, but then Lindsey Jordan, who just graduated from high school this past spring, drops a line like, \"So if you look death right in the face, don't thank him / Because there's nothing and there won't ever be.\" You can feel the room nod in solidarity, and you could feel the NPR Music office do the same when Snail Mail performed \"Slug.\"\n\nEncouraged by punks in the Baltimore scene, Jordan started Snail Mail at 15 and released the quietly stunning Habit EP via Priests' in-house label last year. She's quickly found fans in Helium and Ex Hex's Mary Timony (who also happens to be Jordan's guitar teacher) and just went on tour with Waxahatchee and Palehound. Oh, and she once made blueberry pancakes with me on a short-lived NPR cooking show because clearly my kitchen is the path to success.\n\nJordan's joined in this performance by what's become her consistent live band (drummer Ray Brown and bassist Alex Russell), giving weight to both \"Slug\" and the soaring coming-of-age anthem \"Thinning.\" Because we often ask bands to turn down for the office space, she jokes, \"I guess I don't really know what we sound like because we're so loud. Now we're quiet and Ray's using the mallets and my guitar's all the way down — I was like, 'We sound like this?'\"\n\nJordan closes the set solo with a new song, \"Anytime.\" It is, perhaps typically for Snail Mail, slow and sad, but the alternate guitar tuning and Jordan's drawled vocal performance gives this song about a crush an aerial motion, like acrobats sliding down a long sheet of fabric.\n\nHabit is out now via Sister Polygon. Snail Mail goes on tour with Beach Fossils in October.\n\nSet List\n\n\"Slug\"\n\"Thinning\"\n\"Anytime\"\n\nMUSICIANS\n\nLindsey Jordan (electric guitar, vocals); Raymond Brown (drums); Alex Russell (bass)\n\nCREDITS\n\nProducers: Bob Boilen, Niki Walker, Morgan Noelle Smith; Audio Engineers: James Willetts, Josh Rogosin; Videographers: Niki Walker, Tsering Bista; Production Assistant: Marissa Lorusso; Photo: Claire Harbage/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Snail Mail: NPR Music Tiny Desk Concert", 899, false, "21ix1OwPoY8", "https://www.youtube.com/watch?v=21ix1OwPoY8", "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].mp4", false, 2, ~U[2017-09-22 13:00:00Z]] 14:13:07.973 [debug] QUERY OK source="sources" db=1.5ms idle=149.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:07.974 [debug] QUERY OK source="media_profiles" db=1.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" = ?) [2] 14:13:07.975 [debug] QUERY OK source="media_items" db=1.0ms 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 [137] 14:13:07.975 [info] Kicking off download for media item #137 (21ix1OwPoY8) 14:13:07.987 [debug] QUERY OK source="tasks" db=8.8ms idle=5.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [85, 137, ~U[2026-07-24 12:13:07Z], ~U[2026-07-24 12:13:07Z]] 14:13:07.987 [debug] Current batch of media processed. Will check again in 1000ms 14:13:08.988 [debug] Current batch of media processed. Will check again in 1000ms 14:13:09.990 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Lars | June 19, 2017 — The new album from Tigers Jaw, spin, revels in quiet pleasures, even as its rich production pulls power from the band's open wounds. It's the major-label debut from a band that, at one point, made yelping and earnest pop-punk before finding its way to intricate, and melancholy, pop.\n\nAfter the lineup shake-up three years ago, Ben Walsh and Brianna Collins both step into larger roles as the primary songwriters and singers, here playing songs from spin stripped down to an acoustic guitar and keyboard. It's a strikingly intimate format that illuminates their close harmonies that tangle like garlands, and spare arrangements that open gingerly.\n\nSpin is available now:\niTunes: https://itunes.apple.com/us/album/spin/id1216756437\nAmazon: https://www.amazon.com/spin-Tigers-Jaw/dp/B06XTVJBTY\n\nSet List\n\"Guardian\"\n\"June\"\n\"Window\"\n\nMusicians\nBen Walsh (guitar, vocals); Brianna Collins (keyboard, vocals)\n\nCredits\nProducers: Lars Gotrich, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Beck Harlan; PA: CJ Riculan; Photo: Raquel Zaldivar/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "duration" => 662, "filename" => "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].mp4", "id" => "OX-gMWH9qTQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OX-gMWH9qTQ", "playlist_index" => 17, "timestamp" => 1498482003, "title" => "Tigers Jaw: NPR Music Tiny Desk Concert", "upload_date" => "20170626"} 14:13:09.990 [debug] QUERY OK source="sources" db=0.2ms idle=507.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:09.991 [debug] QUERY OK source="sources" db=0.4ms idle=508.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:09.991 [debug] QUERY OK source="media_items" db=0.2ms idle=508.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-06-26 13:00:03Z], 2] 14:13:09.994 [debug] QUERY OK source="media_items" db=1.7ms idle=509.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Lars | June 19, 2017 — The new album from Tigers Jaw, spin, revels in quiet pleasures, even as its rich production pulls power from the band's open wounds. It's the major-label debut from a band that, at one point, made yelping and earnest pop-punk before finding its way to intricate, and melancholy, pop.\n\nAfter the lineup shake-up three years ago, Ben Walsh and Brianna Collins both step into larger roles as the primary songwriters and singers, here playing songs from spin stripped down to an acoustic guitar and keyboard. It's a strikingly intimate format that illuminates their close harmonies that tangle like garlands, and spare arrangements that open gingerly.\n\nSpin is available now:\niTunes: https://itunes.apple.com/us/album/spin/id1216756437\nAmazon: https://www.amazon.com/spin-Tigers-Jaw/dp/B06XTVJBTY\n\nSet List\n\"Guardian\"\n\"June\"\n\"Window\"\n\nMusicians\nBen Walsh (guitar, vocals); Brianna Collins (keyboard, vocals)\n\nCredits\nProducers: Lars Gotrich, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Beck Harlan; PA: CJ Riculan; Photo: Raquel Zaldivar/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Tigers Jaw: NPR Music Tiny Desk Concert", "86499a31-7027-423a-9791-863b4ff6401b", 662, false, "OX-gMWH9qTQ", "https://www.youtube.com/watch?v=OX-gMWH9qTQ", 17, "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].mp4", false, false, false, 2, [], 0, ~U[2017-06-26 13:00:03Z], ~U[2026-07-24 12:13:09Z], ~U[2026-07-24 12:13:09Z], "Lars | June 19, 2017 — The new album from Tigers Jaw, spin, revels in quiet pleasures, even as its rich production pulls power from the band's open wounds. It's the major-label debut from a band that, at one point, made yelping and earnest pop-punk before finding its way to intricate, and melancholy, pop.\n\nAfter the lineup shake-up three years ago, Ben Walsh and Brianna Collins both step into larger roles as the primary songwriters and singers, here playing songs from spin stripped down to an acoustic guitar and keyboard. It's a strikingly intimate format that illuminates their close harmonies that tangle like garlands, and spare arrangements that open gingerly.\n\nSpin is available now:\niTunes: https://itunes.apple.com/us/album/spin/id1216756437\nAmazon: https://www.amazon.com/spin-Tigers-Jaw/dp/B06XTVJBTY\n\nSet List\n\"Guardian\"\n\"June\"\n\"Window\"\n\nMusicians\nBen Walsh (guitar, vocals); Brianna Collins (keyboard, vocals)\n\nCredits\nProducers: Lars Gotrich, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Beck Harlan; PA: CJ Riculan; Photo: Raquel Zaldivar/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Tigers Jaw: NPR Music Tiny Desk Concert", 662, false, "OX-gMWH9qTQ", "https://www.youtube.com/watch?v=OX-gMWH9qTQ", "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].mp4", false, 2, ~U[2017-06-26 13:00:03Z]] 14:13:09.994 [debug] QUERY OK source="sources" db=0.1ms idle=170.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:09.994 [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" = ?) [2] 14:13:09.995 [debug] QUERY OK source="media_items" db=0.1ms idle=3.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [138] 14:13:09.995 [info] Kicking off download for media item #138 (OX-gMWH9qTQ) 14:13:09.996 [debug] QUERY OK source="tasks" db=0.1ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [86, 138, ~U[2026-07-24 12:13:09Z], ~U[2026-07-24 12:13:09Z]] 14:13:09.996 [debug] Current batch of media processed. Will check again in 1000ms 14:13:10.997 [debug] Current batch of media processed. Will check again in 1000ms 14:13:11.999 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Bob Boilen | April 24, 2017 — As the primary booker of the Tiny Desk Concerts, I have this self-imposed rule: No artist can come back for a second visit unless there's something wholly different about what they're doing. The first time alt-J played the Tiny Desk, in 2012, they came as a four-piece; electric guitar, bass, keyboards and drums. They were a pretty new band, their album had been out a few months and they were playing in clubs for a couple hundred people, not much more.\n\nIn the five years since the band visited it has found quite a few new fans. When I heard cuts from the newest album Relaxer a few months ago I flipped and tried to think of a way to bring them back. So I wrote them, saying I'd love to have them again but that it would have to be wholly, out-of-the-box different. I told them I'd hire a brass band, an African kora player if need be, a string section... They took up the challenge. They told me to find a cellist and two violinists.\n\nI wrote to my friend Carol Anne Bosco, a cellist, who turned out to be a huge fan of the band and helped find two violinists for the performance. About four days before the performance the band sent the string parts, written by their friend Will Gardner.\n\nOn Monday morning, the English band met the American string players and they all gathered behind my desk. As they worked their way through a first pass at \"Three Worn Words,\" I noticed them and relieved — alt-J had actually never heard the string arrangements, this was the first time. They sounded beautiful. By noon, NPR employees and friends gathered around my desk to witness this astonishing concert from alt-J, including two new songs and two old favorites. Magic.\n\nRelaxer is available for pre-order now:\niTunes: https://itunes.apple.com/us/album/relaxer/id1209198388\nAmazon: https://www.amazon.com/Relaxer-Alt-J/dp/B06XH2QX1D\n\nSet List\n\"3WW\"\n\"In Cold Blood\"\n\"Warm Foothills\"\n\"Taro\"\n\nMusicians\nJoe Newman (guitar, vocals); Thom Green (drums); Gus Unger-Hamilton (keys, vocals)\n\nString Arrangements\nWill Gardner\n\nGuest Musicians\nCarol Anne Bosco (cello); Kristin Bakkegard (violin); Paul Bagley (violin)\n\nCredits\nProducers: Bob Boilen, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Morgan Noelle Smith, Bronson Arcuri; Production Assistant: A Noah Harrison; Photo: Marian Carrasquero/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "duration" => 1025, "filename" => "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].mp4", "id" => "8zHdLF3-coA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8zHdLF3-coA", "playlist_index" => 18, "timestamp" => 1493643602, "title" => "alt-J: Tiny Desk Concert", "upload_date" => "20170501"} 14:13:11.999 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=516.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:12.000 [debug] QUERY OK source="sources" db=0.1ms idle=517.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:12.000 [debug] QUERY OK source="media_items" db=0.3ms idle=517.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-05-01 13:00:02Z], 2] 14:13:12.003 [debug] QUERY OK source="media_items" db=2.0ms idle=518.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Bob Boilen | April 24, 2017 — As the primary booker of the Tiny Desk Concerts, I have this self-imposed rule: No artist can come back for a second visit unless there's something wholly different about what they're doing. The first time alt-J played the Tiny Desk, in 2012, they came as a four-piece; electric guitar, bass, keyboards and drums. They were a pretty new band, their album had been out a few months and they were playing in clubs for a couple hundred people, not much more.\n\nIn the five years since the band visited it has found quite a few new fans. When I heard cuts from the newest album Relaxer a few months ago I flipped and tried to think of a way to bring them back. So I wrote them, saying I'd love to have them again but that it would have to be wholly, out-of-the-box different. I told them I'd hire a brass band, an African kora player if need be, a string section... They took up the challenge. They told me to find a cellist and two violinists.\n\nI wrote to my friend Carol Anne Bosco, a cellist, who turned out to be a huge fan of the band and helped find two violinists for the performance. About four days before the performance the band sent the string parts, written by their friend Will Gardner.\n\nOn Monday morning, the English band met the American string players and they all gathered behind my desk. As they worked their way through a first pass at \"Three Worn Words,\" I noticed them and relieved — alt-J had actually never heard the string arrangements, this was the first time. They sounded beautiful. By noon, NPR employees and friends gathered around my desk to witness this astonishing concert from alt-J, including two new songs and two old favorites. Magic.\n\nRelaxer is available for pre-order now:\niTunes: https://itunes.apple.com/us/album/relaxer/id1209198388\nAmazon: https://www.amazon.com/Relaxer-Alt-J/dp/B06XH2QX1D\n\nSet List\n\"3WW\"\n\"In Cold Blood\"\n\"Warm Foothills\"\n\"Taro\"\n\nMusicians\nJoe Newman (guitar, vocals); Thom Green (drums); Gus Unger-Hamilton (keys, vocals)\n\nString Arrangements\nWill Gardner\n\nGuest Musicians\nCarol Anne Bosco (cello); Kristin Bakkegard (violin); Paul Bagley (violin)\n\nCredits\nProducers: Bob Boilen, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Morgan Noelle Smith, Bronson Arcuri; Production Assistant: A Noah Harrison; Photo: Marian Carrasquero/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "alt-J: Tiny Desk Concert", "b2e120a7-7736-458e-8e9b-4fdece0d6e07", 1025, false, "8zHdLF3-coA", "https://www.youtube.com/watch?v=8zHdLF3-coA", 18, "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].mp4", false, false, false, 2, [], 0, ~U[2017-05-01 13:00:02Z], ~U[2026-07-24 12:13:12Z], ~U[2026-07-24 12:13:12Z], "Bob Boilen | April 24, 2017 — As the primary booker of the Tiny Desk Concerts, I have this self-imposed rule: No artist can come back for a second visit unless there's something wholly different about what they're doing. The first time alt-J played the Tiny Desk, in 2012, they came as a four-piece; electric guitar, bass, keyboards and drums. They were a pretty new band, their album had been out a few months and they were playing in clubs for a couple hundred people, not much more.\n\nIn the five years since the band visited it has found quite a few new fans. When I heard cuts from the newest album Relaxer a few months ago I flipped and tried to think of a way to bring them back. So I wrote them, saying I'd love to have them again but that it would have to be wholly, out-of-the-box different. I told them I'd hire a brass band, an African kora player if need be, a string section... They took up the challenge. They told me to find a cellist and two violinists.\n\nI wrote to my friend Carol Anne Bosco, a cellist, who turned out to be a huge fan of the band and helped find two violinists for the performance. About four days before the performance the band sent the string parts, written by their friend Will Gardner.\n\nOn Monday morning, the English band met the American string players and they all gathered behind my desk. As they worked their way through a first pass at \"Three Worn Words,\" I noticed them and relieved — alt-J had actually never heard the string arrangements, this was the first time. They sounded beautiful. By noon, NPR employees and friends gathered around my desk to witness this astonishing concert from alt-J, including two new songs and two old favorites. Magic.\n\nRelaxer is available for pre-order now:\niTunes: https://itunes.apple.com/us/album/relaxer/id1209198388\nAmazon: https://www.amazon.com/Relaxer-Alt-J/dp/B06XH2QX1D\n\nSet List\n\"3WW\"\n\"In Cold Blood\"\n\"Warm Foothills\"\n\"Taro\"\n\nMusicians\nJoe Newman (guitar, vocals); Thom Green (drums); Gus Unger-Hamilton (keys, vocals)\n\nString Arrangements\nWill Gardner\n\nGuest Musicians\nCarol Anne Bosco (cello); Kristin Bakkegard (violin); Paul Bagley (violin)\n\nCredits\nProducers: Bob Boilen, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Morgan Noelle Smith, Bronson Arcuri; Production Assistant: A Noah Harrison; Photo: Marian Carrasquero/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "alt-J: Tiny Desk Concert", 1025, false, "8zHdLF3-coA", "https://www.youtube.com/watch?v=8zHdLF3-coA", "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].mp4", false, 2, ~U[2017-05-01 13:00:02Z]] 14:13:12.003 [debug] QUERY OK source="sources" db=0.1ms idle=165.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:12.004 [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" = ?) [2] 14:13:12.004 [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 [139] 14:13:12.004 [info] Kicking off download for media item #139 (8zHdLF3-coA) 14:13:12.008 [debug] QUERY OK source="tasks" db=0.1ms idle=4.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [87, 139, ~U[2026-07-24 12:13:12Z], ~U[2026-07-24 12:13:12Z]] 14:13:12.008 [debug] Current batch of media processed. Will check again in 1000ms 14:13:13.010 [debug] Current batch of media processed. Will check again in 1000ms 14:13:14.011 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Tyler, The Creator play \"Boredom\", \"See You Again\" and \"Glitter\"at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nContent advisory: The video above may contain language that is offensive to some.\n\nDec. 11, 2017 | Sidney Madden -- Tyler, The Creator's Tiny Desk performance was a first for many reasons. It was the Los Angeles rapper's first time performing at our offices, but moreover, it was the Tiny Desk's first nighttime performance, a special request from Tyler and his team in order to professionally light the \"stage\" themselves. Members of Tyler's lighting crew came to the office a day before to set it up, eventually bathing him and his band in shades of fuchsia, orange and blue — one for each song — during the early evening show.\n\nFlower Boy, Tyler's latest album, is much like this Tiny Desk performance; a surprising departure from the expected. Four albums in, he has matured as a producer, rapper and human being. Often equated to hip-hop's class clown, the 26-year-old peels back his own mask of immaturity to reveal a young adult grappling with anxiety, fear and uncertainty of self.\n\nAfter he was done, Tyler did something of a modified mic-drop, throwing his tambourine in celebration of what he and his band had accomplished. Always one to stay casually connected with his fans, Tyler made time — nearly an hour after the performance was done —- to pose for photos, sign merch and crack jokes with (and on) everyone around him.\n\nSet List\n\"Boredom\"\n\"See You Again\"\n\"Glitter\"\n\nMUSICIANS\nTyler Okonma (vocals, keys), Jaret Landon (MD/Keys) Dré Pinckney (Bass), Dalton Hodo (Drums), Kaye Fox (background vocals), Kiandra Richardson (background vocals)\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Lighting: Max McDougall; Videographers: Morgan Noelle Smith, Maia Stern, Beck Harlan, Alyse Young; Production Assistants: Paul Wichmann, Salvatore Maicki; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "duration" => 1484, "filename" => "/downloads/Tiny Desk/2017-12-14 Tyler, The Creator: NPR Music Tiny Desk Concert/Tyler, The Creator: NPR Music Tiny Desk Concert [N1w-hDiJ4dM].mp4", "id" => "N1w-hDiJ4dM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=N1w-hDiJ4dM", "playlist_index" => 19, "timestamp" => 1513260001, "title" => "Tyler, The Creator: NPR Music Tiny Desk Concert", "upload_date" => "20171214"} 14:13:14.012 [debug] QUERY OK source="sources" db=0.7ms idle=528.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:14.012 [debug] QUERY OK source="sources" db=0.4ms idle=529.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:14.013 [debug] QUERY OK source="media_items" db=0.3ms idle=529.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-12-14 14:00:01Z], 2] 14:13:14.015 [debug] QUERY OK source="media_items" db=1.9ms idle=530.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Tyler, The Creator play \"Boredom\", \"See You Again\" and \"Glitter\"at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nContent advisory: The video above may contain language that is offensive to some.\n\nDec. 11, 2017 | Sidney Madden -- Tyler, The Creator's Tiny Desk performance was a first for many reasons. It was the Los Angeles rapper's first time performing at our offices, but moreover, it was the Tiny Desk's first nighttime performance, a special request from Tyler and his team in order to professionally light the \"stage\" themselves. Members of Tyler's lighting crew came to the office a day before to set it up, eventually bathing him and his band in shades of fuchsia, orange and blue — one for each song — during the early evening show.\n\nFlower Boy, Tyler's latest album, is much like this Tiny Desk performance; a surprising departure from the expected. Four albums in, he has matured as a producer, rapper and human being. Often equated to hip-hop's class clown, the 26-year-old peels back his own mask of immaturity to reveal a young adult grappling with anxiety, fear and uncertainty of self.\n\nAfter he was done, Tyler did something of a modified mic-drop, throwing his tambourine in celebration of what he and his band had accomplished. Always one to stay casually connected with his fans, Tyler made time — nearly an hour after the performance was done —- to pose for photos, sign merch and crack jokes with (and on) everyone around him.\n\nSet List\n\"Boredom\"\n\"See You Again\"\n\"Glitter\"\n\nMUSICIANS\nTyler Okonma (vocals, keys), Jaret Landon (MD/Keys) Dré Pinckney (Bass), Dalton Hodo (Drums), Kaye Fox (background vocals), Kiandra Richardson (background vocals)\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Lighting: Max McDougall; Videographers: Morgan Noelle Smith, Maia Stern, Beck Harlan, Alyse Young; Production Assistants: Paul Wichmann, Salvatore Maicki; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Tyler, The Creator: NPR Music Tiny Desk Concert", "9a5dd74a-a900-4c2f-82cc-65495edabde3", 1484, false, "N1w-hDiJ4dM", "https://www.youtube.com/watch?v=N1w-hDiJ4dM", 19, "/downloads/Tiny Desk/2017-12-14 Tyler, The Creator: NPR Music Tiny Desk Concert/Tyler, The Creator: NPR Music Tiny Desk Concert [N1w-hDiJ4dM].mp4", false, false, false, 2, [], 0, ~U[2017-12-14 14:00:01Z], ~U[2026-07-24 12:13:14Z], ~U[2026-07-24 12:13:14Z], "Watch Tyler, The Creator play \"Boredom\", \"See You Again\" and \"Glitter\"at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nContent advisory: The video above may contain language that is offensive to some.\n\nDec. 11, 2017 | Sidney Madden -- Tyler, The Creator's Tiny Desk performance was a first for many reasons. It was the Los Angeles rapper's first time performing at our offices, but moreover, it was the Tiny Desk's first nighttime performance, a special request from Tyler and his team in order to professionally light the \"stage\" themselves. Members of Tyler's lighting crew came to the office a day before to set it up, eventually bathing him and his band in shades of fuchsia, orange and blue — one for each song — during the early evening show.\n\nFlower Boy, Tyler's latest album, is much like this Tiny Desk performance; a surprising departure from the expected. Four albums in, he has matured as a producer, rapper and human being. Often equated to hip-hop's class clown, the 26-year-old peels back his own mask of immaturity to reveal a young adult grappling with anxiety, fear and uncertainty of self.\n\nAfter he was done, Tyler did something of a modified mic-drop, throwing his tambourine in celebration of what he and his band had accomplished. Always one to stay casually connected with his fans, Tyler made time — nearly an hour after the performance was done —- to pose for photos, sign merch and crack jokes with (and on) everyone around him.\n\nSet List\n\"Boredom\"\n\"See You Again\"\n\"Glitter\"\n\nMUSICIANS\nTyler Okonma (vocals, keys), Jaret Landon (MD/Keys) Dré Pinckney (Bass), Dalton Hodo (Drums), Kaye Fox (background vocals), Kiandra Richardson (background vocals)\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Lighting: Max McDougall; Videographers: Morgan Noelle Smith, Maia Stern, Beck Harlan, Alyse Young; Production Assistants: Paul Wichmann, Salvatore Maicki; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Tyler, The Creator: NPR Music Tiny Desk Concert", 1484, false, "N1w-hDiJ4dM", "https://www.youtube.com/watch?v=N1w-hDiJ4dM", "/downloads/Tiny Desk/2017-12-14 Tyler, The Creator: NPR Music Tiny Desk Concert/Tyler, The Creator: NPR Music Tiny Desk Concert [N1w-hDiJ4dM].mp4", false, 2, ~U[2017-12-14 14:00:01Z]] 14:13:14.016 [debug] QUERY OK source="sources" db=0.4ms idle=175.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:14.016 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:14.017 [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 [140] 14:13:14.017 [info] Kicking off download for media item #140 (N1w-hDiJ4dM) 14:13:14.020 [debug] QUERY OK source="tasks" db=0.7ms idle=2.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [88, 140, ~U[2026-07-24 12:13:14Z], ~U[2026-07-24 12:13:14Z]] 14:13:14.020 [debug] Current batch of media processed. Will check again in 1000ms 14:13:15.020 [debug] Current batch of media processed. Will check again in 1000ms 14:13:16.021 [debug] Current batch of media processed. Will check again in 1000ms 14:13:17.023 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Nov. 27, 2017 | Stephen Thompson --Phoebe Bridgers' songs come laden with sly, finely detailed observations about unsuccessful flirtations with hypnotherapy, unsettling conversations about Jeffrey Dahmer, and everything in between. Her phrasing is impeccable — warm, cool, conversational, gently slurred — but her songs also swim in the self-aware obsessions and messy meanderings of an unquiet mind.\n\nJoined by Ethan Gruska and Rob Moose, Bridgers popped up at the Tiny Desk a couple weeks after the release of her full-length debut, Stranger In The Alps. Together, they celebrated the occasion with languid renditions of three of the album's best songs: the sad and seductive \"Demi Moore,\" a drastically muted \"Motion Sickness\" and a piano-driven take on Bridgers' first-ever single, \"Killer.\"\n\nSet List\n\n\"Demi Moore\"\n\n\"Motion Sickness\"\n\n\"Killer\"\n\nMUSICIANS\n\nPhoebe Bridgers (vocals and guitar); Ethan Gruska (piano); Rob Moose (violin)\n\nCREDITS\n\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, Alyse Young; Editor: Bronson Arcuri; Production Assistant: Niki Walker; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "duration" => 750, "filename" => "/downloads/Tiny Desk/2017-12-04 Phoebe Bridgers: NPR Music Tiny Desk Concert/Phoebe Bridgers: NPR Music Tiny Desk Concert [-hLJNZSIwP8].mp4", "id" => "-hLJNZSIwP8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-hLJNZSIwP8", "playlist_index" => 20, "timestamp" => 1512396000, "title" => "Phoebe Bridgers: NPR Music Tiny Desk Concert", "upload_date" => "20171204"} 14:13:17.024 [debug] QUERY OK source="sources" db=0.8ms idle=1540.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:17.025 [debug] QUERY OK source="sources" db=1.0ms queue=0.2ms idle=1541.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:17.027 [debug] QUERY OK source="media_items" db=1.9ms idle=1542.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-12-04 14:00:00Z], 2] 14:13:17.029 [debug] QUERY OK source="media_items" db=1.3ms idle=1182.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Nov. 27, 2017 | Stephen Thompson --Phoebe Bridgers' songs come laden with sly, finely detailed observations about unsuccessful flirtations with hypnotherapy, unsettling conversations about Jeffrey Dahmer, and everything in between. Her phrasing is impeccable — warm, cool, conversational, gently slurred — but her songs also swim in the self-aware obsessions and messy meanderings of an unquiet mind.\n\nJoined by Ethan Gruska and Rob Moose, Bridgers popped up at the Tiny Desk a couple weeks after the release of her full-length debut, Stranger In The Alps. Together, they celebrated the occasion with languid renditions of three of the album's best songs: the sad and seductive \"Demi Moore,\" a drastically muted \"Motion Sickness\" and a piano-driven take on Bridgers' first-ever single, \"Killer.\"\n\nSet List\n\n\"Demi Moore\"\n\n\"Motion Sickness\"\n\n\"Killer\"\n\nMUSICIANS\n\nPhoebe Bridgers (vocals and guitar); Ethan Gruska (piano); Rob Moose (violin)\n\nCREDITS\n\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, Alyse Young; Editor: Bronson Arcuri; Production Assistant: Niki Walker; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Phoebe Bridgers: NPR Music Tiny Desk Concert", "8dab70d2-c171-4de0-bad7-1f3f3cb81676", 750, false, "-hLJNZSIwP8", "https://www.youtube.com/watch?v=-hLJNZSIwP8", 20, "/downloads/Tiny Desk/2017-12-04 Phoebe Bridgers: NPR Music Tiny Desk Concert/Phoebe Bridgers: NPR Music Tiny Desk Concert [-hLJNZSIwP8].mp4", false, false, false, 2, [], 0, ~U[2017-12-04 14:00:00Z], ~U[2026-07-24 12:13:17Z], ~U[2026-07-24 12:13:17Z], "Nov. 27, 2017 | Stephen Thompson --Phoebe Bridgers' songs come laden with sly, finely detailed observations about unsuccessful flirtations with hypnotherapy, unsettling conversations about Jeffrey Dahmer, and everything in between. Her phrasing is impeccable — warm, cool, conversational, gently slurred — but her songs also swim in the self-aware obsessions and messy meanderings of an unquiet mind.\n\nJoined by Ethan Gruska and Rob Moose, Bridgers popped up at the Tiny Desk a couple weeks after the release of her full-length debut, Stranger In The Alps. Together, they celebrated the occasion with languid renditions of three of the album's best songs: the sad and seductive \"Demi Moore,\" a drastically muted \"Motion Sickness\" and a piano-driven take on Bridgers' first-ever single, \"Killer.\"\n\nSet List\n\n\"Demi Moore\"\n\n\"Motion Sickness\"\n\n\"Killer\"\n\nMUSICIANS\n\nPhoebe Bridgers (vocals and guitar); Ethan Gruska (piano); Rob Moose (violin)\n\nCREDITS\n\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, Alyse Young; Editor: Bronson Arcuri; Production Assistant: Niki Walker; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Phoebe Bridgers: NPR Music Tiny Desk Concert", 750, false, "-hLJNZSIwP8", "https://www.youtube.com/watch?v=-hLJNZSIwP8", "/downloads/Tiny Desk/2017-12-04 Phoebe Bridgers: NPR Music Tiny Desk Concert/Phoebe Bridgers: NPR Music Tiny Desk Concert [-hLJNZSIwP8].mp4", false, 2, ~U[2017-12-04 14:00:00Z]] 14:13:17.030 [debug] QUERY OK source="sources" db=0.2ms idle=182.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:17.030 [debug] QUERY OK source="media_profiles" db=0.3ms idle=6.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:17.031 [debug] QUERY OK source="media_items" db=0.3ms 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 [141] 14:13:17.031 [info] Kicking off download for media item #141 (-hLJNZSIwP8) 14:13:17.035 [debug] QUERY OK source="tasks" db=0.5ms idle=4.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [89, 141, ~U[2026-07-24 12:13:17Z], ~U[2026-07-24 12:13:17Z]] 14:13:17.035 [debug] Current batch of media processed. Will check again in 1000ms 14:13:18.035 [debug] Current batch of media processed. Will check again in 1000ms 14:13:19.037 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Stephen Thompson | August 15, 2023\nThe Tiny Desk has hosted plenty of major pop, rock and hip-hop stars in its 15-plus years, but you'd be hard-pressed to find one more agreeable or self-effacing than Austin Richard Post. Whether lamenting the state of his singing voice, joking about his nerves or sitting slack-jawed in awe of the fantastic band his people had assembled for this show, Post had the bearing of a lottery winner who wouldn't even give himself credit for buying a ticket.\n\nBefore, during and after the show, Post Malone was a joy to have around. But he also just happened to bring a few of the biggest pop hits of the 21st century: Set-opener \"Sunflower,\" for example, has been certified eighteen-times platinum by the RIAA since its release in 2018 — that's an all-time record — while the 2017 single \"I Fall Apart\" and 2019's \"Circles\" lag behind at a mere ten-times platinum apiece. \"Enough Is Enough,\" which closes this set, enjoys no such designation, but give it time: A track from Post Malone's new album Austin, it's only been out for a few weeks.\n\nSo enjoy this set for what it is: one of the world's biggest stars, performing a few of the world's biggest songs, each set to a luminous arrangement. Post Malone himself seems surprised by how great this Tiny Desk concert sounds, and that's not just the humility talking.\n\nSET LIST\n\"Sunflower\"\n\"I Fall Apart\"\n\"Circles\"\n\"Enough Is Enough\"\n\nMUSICIANS\nAustin Post: lead vocalist, guitar \nHannah Juliano: vocalist\nElliot Aguilar: vocalist\nChauncey Matthews: vocalist\nKola Rail: vocalist\nDestin Johnson: drums\nEmily Rosenfield: guitar \nBobby Wooten: bass \nLouis Bell: piano\nKevin Kuh: strings \nFrancesca Dardani: strings \nKiku Enomoto: strings\nKirin McElwain: strings\n\nTINY DESK TEAM\nProducers: Bobby Carter, Suraya Mohamed\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Zayrha Rodriguez, Sofia Seidel\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Catie Dull\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #postmalone", "duration" => 1088, "filename" => "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].mp4", "id" => "oCcks-fwq2c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=oCcks-fwq2c", "playlist_index" => 21, "timestamp" => 1692115208, "title" => "Post Malone: Tiny Desk Concert", "upload_date" => "20230815"} 14:13:19.037 [debug] QUERY OK source="sources" db=0.3ms idle=554.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:19.038 [debug] QUERY OK source="sources" db=0.4ms idle=554.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:19.039 [debug] QUERY OK source="media_items" db=0.6ms idle=555.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-08-15 16:00:08Z], 2] 14:13:19.041 [debug] QUERY OK source="media_items" db=1.4ms idle=556.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | August 15, 2023\nThe Tiny Desk has hosted plenty of major pop, rock and hip-hop stars in its 15-plus years, but you'd be hard-pressed to find one more agreeable or self-effacing than Austin Richard Post. Whether lamenting the state of his singing voice, joking about his nerves or sitting slack-jawed in awe of the fantastic band his people had assembled for this show, Post had the bearing of a lottery winner who wouldn't even give himself credit for buying a ticket.\n\nBefore, during and after the show, Post Malone was a joy to have around. But he also just happened to bring a few of the biggest pop hits of the 21st century: Set-opener \"Sunflower,\" for example, has been certified eighteen-times platinum by the RIAA since its release in 2018 — that's an all-time record — while the 2017 single \"I Fall Apart\" and 2019's \"Circles\" lag behind at a mere ten-times platinum apiece. \"Enough Is Enough,\" which closes this set, enjoys no such designation, but give it time: A track from Post Malone's new album Austin, it's only been out for a few weeks.\n\nSo enjoy this set for what it is: one of the world's biggest stars, performing a few of the world's biggest songs, each set to a luminous arrangement. Post Malone himself seems surprised by how great this Tiny Desk concert sounds, and that's not just the humility talking.\n\nSET LIST\n\"Sunflower\"\n\"I Fall Apart\"\n\"Circles\"\n\"Enough Is Enough\"\n\nMUSICIANS\nAustin Post: lead vocalist, guitar \nHannah Juliano: vocalist\nElliot Aguilar: vocalist\nChauncey Matthews: vocalist\nKola Rail: vocalist\nDestin Johnson: drums\nEmily Rosenfield: guitar \nBobby Wooten: bass \nLouis Bell: piano\nKevin Kuh: strings \nFrancesca Dardani: strings \nKiku Enomoto: strings\nKirin McElwain: strings\n\nTINY DESK TEAM\nProducers: Bobby Carter, Suraya Mohamed\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Zayrha Rodriguez, Sofia Seidel\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Catie Dull\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #postmalone", "Post Malone: Tiny Desk Concert", "9d735218-aa8a-4275-a011-27caf9431024", 1088, false, "oCcks-fwq2c", "https://www.youtube.com/watch?v=oCcks-fwq2c", 21, "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].mp4", false, false, false, 2, [], 0, ~U[2023-08-15 16:00:08Z], ~U[2026-07-24 12:13:19Z], ~U[2026-07-24 12:13:19Z], "Stephen Thompson | August 15, 2023\nThe Tiny Desk has hosted plenty of major pop, rock and hip-hop stars in its 15-plus years, but you'd be hard-pressed to find one more agreeable or self-effacing than Austin Richard Post. Whether lamenting the state of his singing voice, joking about his nerves or sitting slack-jawed in awe of the fantastic band his people had assembled for this show, Post had the bearing of a lottery winner who wouldn't even give himself credit for buying a ticket.\n\nBefore, during and after the show, Post Malone was a joy to have around. But he also just happened to bring a few of the biggest pop hits of the 21st century: Set-opener \"Sunflower,\" for example, has been certified eighteen-times platinum by the RIAA since its release in 2018 — that's an all-time record — while the 2017 single \"I Fall Apart\" and 2019's \"Circles\" lag behind at a mere ten-times platinum apiece. \"Enough Is Enough,\" which closes this set, enjoys no such designation, but give it time: A track from Post Malone's new album Austin, it's only been out for a few weeks.\n\nSo enjoy this set for what it is: one of the world's biggest stars, performing a few of the world's biggest songs, each set to a luminous arrangement. Post Malone himself seems surprised by how great this Tiny Desk concert sounds, and that's not just the humility talking.\n\nSET LIST\n\"Sunflower\"\n\"I Fall Apart\"\n\"Circles\"\n\"Enough Is Enough\"\n\nMUSICIANS\nAustin Post: lead vocalist, guitar \nHannah Juliano: vocalist\nElliot Aguilar: vocalist\nChauncey Matthews: vocalist\nKola Rail: vocalist\nDestin Johnson: drums\nEmily Rosenfield: guitar \nBobby Wooten: bass \nLouis Bell: piano\nKevin Kuh: strings \nFrancesca Dardani: strings \nKiku Enomoto: strings\nKirin McElwain: strings\n\nTINY DESK TEAM\nProducers: Bobby Carter, Suraya Mohamed\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Zayrha Rodriguez, Sofia Seidel\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Catie Dull\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #postmalone", "Post Malone: Tiny Desk Concert", 1088, false, "oCcks-fwq2c", "https://www.youtube.com/watch?v=oCcks-fwq2c", "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].mp4", false, 2, ~U[2023-08-15 16:00:08Z]] 14:13:19.042 [debug] QUERY OK source="sources" db=0.5ms idle=190.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:19.042 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 14:13:19.043 [debug] QUERY OK source="media_items" db=0.4ms idle=4.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [142] 14:13:19.043 [info] Kicking off download for media item #142 (oCcks-fwq2c) 14:13:19.045 [debug] QUERY OK source="tasks" db=0.1ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [90, 142, ~U[2026-07-24 12:13:19Z], ~U[2026-07-24 12:13:19Z]] 14:13:19.045 [debug] Current batch of media processed. Will check again in 1000ms 14:13:20.046 [debug] Current batch of media processed. Will check again in 1000ms 14:13:20.704 [info] GET / 14:13:20.704 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:13:20.706 [debug] QUERY OK source="settings" db=1.4ms idle=851.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:20.708 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.8ms idle=223.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:13:20.709 [debug] QUERY OK source="sources" db=0.9ms idle=225.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:13:20.710 [debug] QUERY OK source="media_items" db=1.1ms queue=0.3ms idle=226.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:13:20.711 [debug] QUERY OK source="media_items" db=1.0ms idle=227.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:13:20.713 [debug] QUERY OK source="settings" db=1.2ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:20.714 [debug] QUERY OK source="settings" db=0.9ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:20.716 [debug] QUERY OK source="settings" db=1.5ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:13:20.719 [debug] QUERY OK source="tasks" db=1.4ms idle=7.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:13:20.722 [debug] QUERY OK source="media_items" db=2.2ms idle=8.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [41, 42] 14:13:20.722 [debug] QUERY OK source="sources" db=2.3ms idle=7.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:20.725 [debug] QUERY OK source="media_items" db=0.3ms idle=10.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:13:20.726 [debug] QUERY OK source="media_items" db=1.3ms idle=9.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:13:20.727 [debug] QUERY OK source="sources" db=0.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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:13:20.730 [debug] QUERY OK source="media_items" db=1.0ms idle=7.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:13:20.733 [debug] QUERY OK source="media_items" db=3.0ms idle=8.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:13:20.735 [debug] QUERY OK source="sources" db=1.5ms idle=9.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:20.738 [info] Sent 200 in 33ms 14:13:21.049 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Teresa Xie | April 10, 2023\nWhen Fred again.. first proposed a Tiny Desk concert, it wasn't immediately clear how he was going to make it work — not because he lacked creativity, but because translating purely electronic music at the Desk is a daunting task for anyone. How would an artist, whose performances take the form of DJ sets in front of massive audiences, curate an intimate and unique experience? But what the British songwriter and producer came up with is a reminder of what a Tiny Desk is at its best: an opportunity for artists to challenge themselves in such a way that it almost feels like they're making new music, all while sticking to what feels true to them. For Fred again.. that meant re-learning the marimba, playing the vibraphone, singing at the piano and looping sounds and beats — all at the same time. He began his set with \"Kyle (i found you),\" recreating the song's melody on the marimba while clips of featured poet Kyle \"Guante\" Tran Myhre reciting the work \"Love In The Time of Undeath\" appeared on-screen. Sitting at the piano, he faded the remnants of \"Kyle (i found you)\" into \"Roze (forgive),\" which features Fred again.. triggering vocals sampled from the artist I am Roze, whose powerful facial expressions were magnified on a screen.In a surprising pivot, the primary vocals on the following track, \"Me (heavy),\" came from Fred again.. himself, with no manipulation, creating a vulnerable sense of intimacy in the space. A flurry of looped piano keys marked the transition to \"Delilah (pull me out of this),\" with guest vocals pulled from pop singer Delilah Montagu's 2021 track \"Lost Keys.\" By his set's end, concluding with \"Faisal (envelops me),\" Fred again.. was back at the piano finally resting after moving seamlessly through a jam-packed Tiny Desk.\n\nSET LIST\n\"Kyle (i found you)\"\n\"Roze (forgive)\"\n\"Adam (interlude)\"\n\"Me (heavy)\"\n\"Berwyn (interlude)\"\n\"Delilah (pull me out of this)\"\n\"Faisal (envelops me)\"\n\nMUSICIANS\nFred again..: vocals, piano, vibraphone, marimba, electronics\nSpecial thanks to: Guante, I Am Roze (they/them), Aminé, Delilah Montagu, Berwyn, Faisal, Lucy Hickling, Gareth Nunns, Jamie Tinsley, Tony Friend, Tobias Miorin\u00A0\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Sofia Seidel\u00A0\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Sofia Seidel, Kara Frame, Joshua Bryant\u00A0\nAudio Assistant: Kwesi Lee\nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Maia Stern, Marissa Lorusso, Hazel Cills, Ashley Pointer, Pilar Galván, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #fredagain", "duration" => 1604, "filename" => "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].mp4", "id" => "4iQmPv_dTI0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4iQmPv_dTI0", "playlist_index" => 22, "timestamp" => 1681142410, "title" => "Fred again..: Tiny Desk Concert", "upload_date" => "20230410"} 14:13:21.050 [debug] QUERY OK source="sources" db=1.0ms idle=321.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:21.053 [debug] QUERY OK source="sources" db=2.5ms idle=319.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:21.054 [debug] QUERY OK source="media_items" db=0.6ms idle=319.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-04-10 16:00:10Z], 2] 14:13:21.060 [debug] QUERY OK source="media_items" db=6.2ms idle=318.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Teresa Xie | April 10, 2023\nWhen Fred again.. first proposed a Tiny Desk concert, it wasn't immediately clear how he was going to make it work — not because he lacked creativity, but because translating purely electronic music at the Desk is a daunting task for anyone. How would an artist, whose performances take the form of DJ sets in front of massive audiences, curate an intimate and unique experience? But what the British songwriter and producer came up with is a reminder of what a Tiny Desk is at its best: an opportunity for artists to challenge themselves in such a way that it almost feels like they're making new music, all while sticking to what feels true to them. For Fred again.. that meant re-learning the marimba, playing the vibraphone, singing at the piano and looping sounds and beats — all at the same time. He began his set with \"Kyle (i found you),\" recreating the song's melody on the marimba while clips of featured poet Kyle \"Guante\" Tran Myhre reciting the work \"Love In The Time of Undeath\" appeared on-screen. Sitting at the piano, he faded the remnants of \"Kyle (i found you)\" into \"Roze (forgive),\" which features Fred again.. triggering vocals sampled from the artist I am Roze, whose powerful facial expressions were magnified on a screen.In a surprising pivot, the primary vocals on the following track, \"Me (heavy),\" came from Fred again.. himself, with no manipulation, creating a vulnerable sense of intimacy in the space. A flurry of looped piano keys marked the transition to \"Delilah (pull me out of this),\" with guest vocals pulled from pop singer Delilah Montagu's 2021 track \"Lost Keys.\" By his set's end, concluding with \"Faisal (envelops me),\" Fred again.. was back at the piano finally resting after moving seamlessly through a jam-packed Tiny Desk.\n\nSET LIST\n\"Kyle (i found you)\"\n\"Roze (forgive)\"\n\"Adam (interlude)\"\n\"Me (heavy)\"\n\"Berwyn (interlude)\"\n\"Delilah (pull me out of this)\"\n\"Faisal (envelops me)\"\n\nMUSICIANS\nFred again..: vocals, piano, vibraphone, marimba, electronics\nSpecial thanks to: Guante, I Am Roze (they/them), Aminé, Delilah Montagu, Berwyn, Faisal, Lucy Hickling, Gareth Nunns, Jamie Tinsley, Tony Friend, Tobias Miorin\u00A0\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Sofia Seidel\u00A0\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Sofia Seidel, Kara Frame, Joshua Bryant\u00A0\nAudio Assistant: Kwesi Lee\nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Maia Stern, Marissa Lorusso, Hazel Cills, Ashley Pointer, Pilar Galván, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #fredagain", "Fred again..: Tiny Desk Concert", "3db83224-e066-487a-9c0d-b60730bc2473", 1604, false, "4iQmPv_dTI0", "https://www.youtube.com/watch?v=4iQmPv_dTI0", 22, "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].mp4", false, false, false, 2, [], 0, ~U[2023-04-10 16:00:10Z], ~U[2026-07-24 12:13:21Z], ~U[2026-07-24 12:13:21Z], "Teresa Xie | April 10, 2023\nWhen Fred again.. first proposed a Tiny Desk concert, it wasn't immediately clear how he was going to make it work — not because he lacked creativity, but because translating purely electronic music at the Desk is a daunting task for anyone. How would an artist, whose performances take the form of DJ sets in front of massive audiences, curate an intimate and unique experience? But what the British songwriter and producer came up with is a reminder of what a Tiny Desk is at its best: an opportunity for artists to challenge themselves in such a way that it almost feels like they're making new music, all while sticking to what feels true to them. For Fred again.. that meant re-learning the marimba, playing the vibraphone, singing at the piano and looping sounds and beats — all at the same time. He began his set with \"Kyle (i found you),\" recreating the song's melody on the marimba while clips of featured poet Kyle \"Guante\" Tran Myhre reciting the work \"Love In The Time of Undeath\" appeared on-screen. Sitting at the piano, he faded the remnants of \"Kyle (i found you)\" into \"Roze (forgive),\" which features Fred again.. triggering vocals sampled from the artist I am Roze, whose powerful facial expressions were magnified on a screen.In a surprising pivot, the primary vocals on the following track, \"Me (heavy),\" came from Fred again.. himself, with no manipulation, creating a vulnerable sense of intimacy in the space. A flurry of looped piano keys marked the transition to \"Delilah (pull me out of this),\" with guest vocals pulled from pop singer Delilah Montagu's 2021 track \"Lost Keys.\" By his set's end, concluding with \"Faisal (envelops me),\" Fred again.. was back at the piano finally resting after moving seamlessly through a jam-packed Tiny Desk.\n\nSET LIST\n\"Kyle (i found you)\"\n\"Roze (forgive)\"\n\"Adam (interlude)\"\n\"Me (heavy)\"\n\"Berwyn (interlude)\"\n\"Delilah (pull me out of this)\"\n\"Faisal (envelops me)\"\n\nMUSICIANS\nFred again..: vocals, piano, vibraphone, marimba, electronics\nSpecial thanks to: Guante, I Am Roze (they/them), Aminé, Delilah Montagu, Berwyn, Faisal, Lucy Hickling, Gareth Nunns, Jamie Tinsley, Tony Friend, Tobias Miorin\u00A0\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Sofia Seidel\u00A0\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Sofia Seidel, Kara Frame, Joshua Bryant\u00A0\nAudio Assistant: Kwesi Lee\nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Maia Stern, Marissa Lorusso, Hazel Cills, Ashley Pointer, Pilar Galván, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #fredagain", "Fred again..: Tiny Desk Concert", 1604, false, "4iQmPv_dTI0", "https://www.youtube.com/watch?v=4iQmPv_dTI0", "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].mp4", false, 2, ~U[2023-04-10 16:00:10Z]] 14:13:21.062 [debug] QUERY OK source="sources" db=1.5ms queue=0.1ms idle=203.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:21.064 [debug] QUERY OK source="media_profiles" db=1.0ms queue=0.4ms idle=12.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:21.065 [debug] QUERY OK source="media_items" db=1.0ms idle=11.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [143] 14:13:21.065 [info] Kicking off download for media item #143 (4iQmPv_dTI0) 14:13:21.071 [debug] QUERY OK source="tasks" db=0.7ms idle=7.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [91, 143, ~U[2026-07-24 12:13:21Z], ~U[2026-07-24 12:13:21Z]] 14:13:21.072 [debug] Current batch of media processed. Will check again in 1000ms 14:13:22.073 [debug] Current batch of media processed. Will check again in 1000ms 14:13:22.562 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:23.075 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Bobby Carter | February 13, 2023\n“I know producers don’t always get to do stuff like this,” Kenny Beats said as he wrapped up his Tiny Desk concert. “I’m very lucky I get to do a lot of stuff people with my job title don’t get to do.” His keen sense of gratitude was palpable and radiated throughout the space. Before the music started, he rushed over to explore the shelves behind the Desk, then added some of his trinkets. He then insisted the music had to be perfect as his dad would be listening. Kenny’s debut solo album, LOUIE, dedicated to his father, takes us on a journey through often inexplicable emotions regarding our parents. Kenny enlisted familiar voices to convey the feelings, sparingly incorporating their vocals over soulful beats. \n\nHe invited some of those vocalists, along with top-tier musicians including Nick Movshon and Leon Michels, to play something tailor-made for the Tiny Desk. For “Still,” rapper JPEGMAFIA finishes his thought through bars that we don’t hear on the album. His rambunctious energy juxtaposed with the band’s laid-back melodies is a bizarre sight, but it just works. When Remi Wolf sings, her powerful voice naturally cuts above everything else, and she stole the show on “Last Words.” Newcomer Nami’s falsetto brightened all of the harmonies, and he stepped up to close out with “Rotten.” \n\nKenny Beats is one of the most sought after producers in music and is most certainly the go-to for marrying different genres. Producer-hosted albums are famously frowned upon in hip-hop due to their lack of direction, but LOUIE is clearly saying something. This Tiny Desk feels like a part of that statement.\n\nSET LIST\n“Still”\n“Last Words” \n“Rotten” \n\nMUSICIANS\nKenny Beats: artist, drummer \nLeon Michels: keys, saxophone \nNick Movshon: bass \nNick Lee: horns \nAlexander Benjamin Goldblatt: guitar \nJacob Reske: effects, vocals\nJPEGMAFIA: vocals \nNami: vocals \nRemi Wolf: vocals \n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector: Kara Frame \nAudio Engineer: Josh Rogosin \nCreative Producer: Bob Boilen \nVideographers: Kara Frame, Joshua Bryant, Maia Stern, Sofia Seidel\nEditor: Sofia Seidel\nAudio Assistant: Josephine Nyounai \nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Ashley Pointer\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#kennybeats #nprmusic #tinydesk", "duration" => 663, "filename" => "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].mp4", "id" => "BPRVzA67Dbs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=BPRVzA67Dbs", "playlist_index" => 23, "timestamp" => 1676282406, "title" => "Kenny Beats: Tiny Desk Concert", "upload_date" => "20230213"} 14:13:23.075 [debug] QUERY OK source="sources" db=0.4ms idle=592.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:23.076 [debug] QUERY OK source="sources" db=0.4ms idle=593.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:23.077 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=593.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-02-13 10:00:06Z], 2] 14:13:23.080 [debug] QUERY OK source="media_items" db=1.9ms idle=515.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Bobby Carter | February 13, 2023\n“I know producers don’t always get to do stuff like this,” Kenny Beats said as he wrapped up his Tiny Desk concert. “I’m very lucky I get to do a lot of stuff people with my job title don’t get to do.” His keen sense of gratitude was palpable and radiated throughout the space. Before the music started, he rushed over to explore the shelves behind the Desk, then added some of his trinkets. He then insisted the music had to be perfect as his dad would be listening. Kenny’s debut solo album, LOUIE, dedicated to his father, takes us on a journey through often inexplicable emotions regarding our parents. Kenny enlisted familiar voices to convey the feelings, sparingly incorporating their vocals over soulful beats. \n\nHe invited some of those vocalists, along with top-tier musicians including Nick Movshon and Leon Michels, to play something tailor-made for the Tiny Desk. For “Still,” rapper JPEGMAFIA finishes his thought through bars that we don’t hear on the album. His rambunctious energy juxtaposed with the band’s laid-back melodies is a bizarre sight, but it just works. When Remi Wolf sings, her powerful voice naturally cuts above everything else, and she stole the show on “Last Words.” Newcomer Nami’s falsetto brightened all of the harmonies, and he stepped up to close out with “Rotten.” \n\nKenny Beats is one of the most sought after producers in music and is most certainly the go-to for marrying different genres. Producer-hosted albums are famously frowned upon in hip-hop due to their lack of direction, but LOUIE is clearly saying something. This Tiny Desk feels like a part of that statement.\n\nSET LIST\n“Still”\n“Last Words” \n“Rotten” \n\nMUSICIANS\nKenny Beats: artist, drummer \nLeon Michels: keys, saxophone \nNick Movshon: bass \nNick Lee: horns \nAlexander Benjamin Goldblatt: guitar \nJacob Reske: effects, vocals\nJPEGMAFIA: vocals \nNami: vocals \nRemi Wolf: vocals \n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector: Kara Frame \nAudio Engineer: Josh Rogosin \nCreative Producer: Bob Boilen \nVideographers: Kara Frame, Joshua Bryant, Maia Stern, Sofia Seidel\nEditor: Sofia Seidel\nAudio Assistant: Josephine Nyounai \nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Ashley Pointer\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#kennybeats #nprmusic #tinydesk", "Kenny Beats: Tiny Desk Concert", "9fe17353-552b-4266-9f43-01bffb86179b", 663, false, "BPRVzA67Dbs", "https://www.youtube.com/watch?v=BPRVzA67Dbs", 23, "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].mp4", false, false, false, 2, [], 0, ~U[2023-02-13 10:00:06Z], ~U[2026-07-24 12:13:23Z], ~U[2026-07-24 12:13:23Z], "Bobby Carter | February 13, 2023\n“I know producers don’t always get to do stuff like this,” Kenny Beats said as he wrapped up his Tiny Desk concert. “I’m very lucky I get to do a lot of stuff people with my job title don’t get to do.” His keen sense of gratitude was palpable and radiated throughout the space. Before the music started, he rushed over to explore the shelves behind the Desk, then added some of his trinkets. He then insisted the music had to be perfect as his dad would be listening. Kenny’s debut solo album, LOUIE, dedicated to his father, takes us on a journey through often inexplicable emotions regarding our parents. Kenny enlisted familiar voices to convey the feelings, sparingly incorporating their vocals over soulful beats. \n\nHe invited some of those vocalists, along with top-tier musicians including Nick Movshon and Leon Michels, to play something tailor-made for the Tiny Desk. For “Still,” rapper JPEGMAFIA finishes his thought through bars that we don’t hear on the album. His rambunctious energy juxtaposed with the band’s laid-back melodies is a bizarre sight, but it just works. When Remi Wolf sings, her powerful voice naturally cuts above everything else, and she stole the show on “Last Words.” Newcomer Nami’s falsetto brightened all of the harmonies, and he stepped up to close out with “Rotten.” \n\nKenny Beats is one of the most sought after producers in music and is most certainly the go-to for marrying different genres. Producer-hosted albums are famously frowned upon in hip-hop due to their lack of direction, but LOUIE is clearly saying something. This Tiny Desk feels like a part of that statement.\n\nSET LIST\n“Still”\n“Last Words” \n“Rotten” \n\nMUSICIANS\nKenny Beats: artist, drummer \nLeon Michels: keys, saxophone \nNick Movshon: bass \nNick Lee: horns \nAlexander Benjamin Goldblatt: guitar \nJacob Reske: effects, vocals\nJPEGMAFIA: vocals \nNami: vocals \nRemi Wolf: vocals \n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector: Kara Frame \nAudio Engineer: Josh Rogosin \nCreative Producer: Bob Boilen \nVideographers: Kara Frame, Joshua Bryant, Maia Stern, Sofia Seidel\nEditor: Sofia Seidel\nAudio Assistant: Josephine Nyounai \nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Ashley Pointer\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#kennybeats #nprmusic #tinydesk", "Kenny Beats: Tiny Desk Concert", 663, false, "BPRVzA67Dbs", "https://www.youtube.com/watch?v=BPRVzA67Dbs", "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].mp4", false, 2, ~U[2023-02-13 10:00:06Z]] 14:13:23.081 [debug] QUERY OK source="sources" db=0.7ms idle=219.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:23.082 [debug] QUERY OK source="media_profiles" db=0.7ms 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" = ?) [2] 14:13:23.083 [debug] QUERY OK source="media_items" db=0.8ms 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 [144] 14:13:23.083 [info] Kicking off download for media item #144 (BPRVzA67Dbs) 14:13:23.087 [debug] QUERY OK source="tasks" db=0.2ms idle=6.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [92, 144, ~U[2026-07-24 12:13:23Z], ~U[2026-07-24 12:13:23Z]] 14:13:23.087 [debug] Current batch of media processed. Will check again in 1000ms 14:13:24.087 [debug] Current batch of media processed. Will check again in 1000ms 14:13:25.088 [debug] Current batch of media processed. Will check again in 1000ms 14:13:26.090 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Stephen Thompson | December 5, 2022\nBelgian dance-pop superstar Stromae puts on one of the best live shows in the world — here’s a two-song set from 2015, presented as evidence — but his stage presentation is tough to strip down. To say nothing of the light show, Stromae’s throbbingly impeccable arrangements involve the extensive use of pre-recorded tracks, all of which are frowned upon at the Tiny Desk. So, given a simple three-word assignment (“no preset sounds”), his team set about re-creating Stromae’s music so that it could be performed in real time.\n\nThis involved more gleaming tech than we could have ever imagined when we launched Tiny Desk concerts nearly 15 years ago — veritable banks of laptops, mixers and synthesizers, with multiple producers working out of frame — but damned if every sound in this set wasn’t crafted and played live on the spot. Stromae and his team had to come a day early for hours of setup and rehearsals, and even the band’s clothing was handpicked from the singer’s fashion line, but what they produced felt loose-limbed and organic in the spirit of the series.\n\nIt helps that, as heard on this year’s outstanding Multitude, Stromae’s songs draw from a deep well of lived emotion. Backed by three members of the Bulgarian women’s choir Yasna Voices, Stromae kicked off his set with “L’enfer,” a wrenching acknowledgement of suicidal thoughts. The song’s chorus, translated to English, reads, “Sometimes I’ve had suicidal thoughts and I’m not proud of it / Sometimes you feel it’d be the only way to silence them / All these thoughts putting me through hell.”\n\nFrom there, Stromae’s song selections conveyed lighter moods, but even his most danceable tracks contain undercurrents of darkness and conflict: “Santé” is a toast to those who can’t celebrate, “Alors on danse” (from 2009’s Cheese) embraces dancing as a way to drown out life’s hardships and “Mon amour” attempts to reassure a lover against a backdrop of infidelity and dysfunction. On its own, each track is a heady cocktail of painstaking craft and hard-won joy. Taken together, they form a portrait of a world-class showman at the height of his powers.\n\nSET LIST\n“L’enfer”\n“Santé”\n“Alors on danse”\n“Mon amour”\n\nMUSICIANS\nStromae: vocals\nManoli Avgoustinatos: keyboards, charango, vocals\nYoshi Masuda: keyboard, vocals\nSimon LeSaint: drums, vocals\nFlorian Rossi: keyboard, vocals\n\nYasna Voices NY Bulgarian Women’s Choir, directed by Vlada Tomova\nMimi Berkova\nLarkin Grimm\nVlada Tomova\n\nTINY DESK TEAM\nProducer: Bob Boilen\nDirector/Editor: Maia Stern\nAudio Engineer: Josh Rogosin \nSeries Producer: Bobby Carter\nVideographers: Joshua Bryant, Maia Stern, Pierre Kattar, Sofia Seidel\nProduction Assistants: Jill Britton, Alanté Serene\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Kara Frame, Ashley Pointer, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#stromae #tinydesk #nprmusic", "duration" => 975, "filename" => "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].mp4", "id" => "6dkDepLX0rk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6dkDepLX0rk", "playlist_index" => 24, "timestamp" => 1670234402, "title" => "Stromae: Tiny Desk Concert", "upload_date" => "20221205"} 14:13:26.092 [debug] QUERY OK source="sources" db=1.2ms queue=0.4ms idle=1608.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:26.094 [debug] QUERY OK source="sources" db=0.4ms idle=1610.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:26.095 [debug] QUERY OK source="media_items" db=0.8ms idle=1611.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2022-12-05 10:00:02Z], 2] 14:13:26.100 [debug] QUERY OK source="media_items" db=4.5ms idle=1230.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | December 5, 2022\nBelgian dance-pop superstar Stromae puts on one of the best live shows in the world — here’s a two-song set from 2015, presented as evidence — but his stage presentation is tough to strip down. To say nothing of the light show, Stromae’s throbbingly impeccable arrangements involve the extensive use of pre-recorded tracks, all of which are frowned upon at the Tiny Desk. So, given a simple three-word assignment (“no preset sounds”), his team set about re-creating Stromae’s music so that it could be performed in real time.\n\nThis involved more gleaming tech than we could have ever imagined when we launched Tiny Desk concerts nearly 15 years ago — veritable banks of laptops, mixers and synthesizers, with multiple producers working out of frame — but damned if every sound in this set wasn’t crafted and played live on the spot. Stromae and his team had to come a day early for hours of setup and rehearsals, and even the band’s clothing was handpicked from the singer’s fashion line, but what they produced felt loose-limbed and organic in the spirit of the series.\n\nIt helps that, as heard on this year’s outstanding Multitude, Stromae’s songs draw from a deep well of lived emotion. Backed by three members of the Bulgarian women’s choir Yasna Voices, Stromae kicked off his set with “L’enfer,” a wrenching acknowledgement of suicidal thoughts. The song’s chorus, translated to English, reads, “Sometimes I’ve had suicidal thoughts and I’m not proud of it / Sometimes you feel it’d be the only way to silence them / All these thoughts putting me through hell.”\n\nFrom there, Stromae’s song selections conveyed lighter moods, but even his most danceable tracks contain undercurrents of darkness and conflict: “Santé” is a toast to those who can’t celebrate, “Alors on danse” (from 2009’s Cheese) embraces dancing as a way to drown out life’s hardships and “Mon amour” attempts to reassure a lover against a backdrop of infidelity and dysfunction. On its own, each track is a heady cocktail of painstaking craft and hard-won joy. Taken together, they form a portrait of a world-class showman at the height of his powers.\n\nSET LIST\n“L’enfer”\n“Santé”\n“Alors on danse”\n“Mon amour”\n\nMUSICIANS\nStromae: vocals\nManoli Avgoustinatos: keyboards, charango, vocals\nYoshi Masuda: keyboard, vocals\nSimon LeSaint: drums, vocals\nFlorian Rossi: keyboard, vocals\n\nYasna Voices NY Bulgarian Women’s Choir, directed by Vlada Tomova\nMimi Berkova\nLarkin Grimm\nVlada Tomova\n\nTINY DESK TEAM\nProducer: Bob Boilen\nDirector/Editor: Maia Stern\nAudio Engineer: Josh Rogosin \nSeries Producer: Bobby Carter\nVideographers: Joshua Bryant, Maia Stern, Pierre Kattar, Sofia Seidel\nProduction Assistants: Jill Britton, Alanté Serene\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Kara Frame, Ashley Pointer, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#stromae #tinydesk #nprmusic", "Stromae: Tiny Desk Concert", "cdd3ec2b-a7fc-452c-b50b-fb812e496237", 975, false, "6dkDepLX0rk", "https://www.youtube.com/watch?v=6dkDepLX0rk", 24, "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].mp4", false, false, false, 2, [], 0, ~U[2022-12-05 10:00:02Z], ~U[2026-07-24 12:13:26Z], ~U[2026-07-24 12:13:26Z], "Stephen Thompson | December 5, 2022\nBelgian dance-pop superstar Stromae puts on one of the best live shows in the world — here’s a two-song set from 2015, presented as evidence — but his stage presentation is tough to strip down. To say nothing of the light show, Stromae’s throbbingly impeccable arrangements involve the extensive use of pre-recorded tracks, all of which are frowned upon at the Tiny Desk. So, given a simple three-word assignment (“no preset sounds”), his team set about re-creating Stromae’s music so that it could be performed in real time.\n\nThis involved more gleaming tech than we could have ever imagined when we launched Tiny Desk concerts nearly 15 years ago — veritable banks of laptops, mixers and synthesizers, with multiple producers working out of frame — but damned if every sound in this set wasn’t crafted and played live on the spot. Stromae and his team had to come a day early for hours of setup and rehearsals, and even the band’s clothing was handpicked from the singer’s fashion line, but what they produced felt loose-limbed and organic in the spirit of the series.\n\nIt helps that, as heard on this year’s outstanding Multitude, Stromae’s songs draw from a deep well of lived emotion. Backed by three members of the Bulgarian women’s choir Yasna Voices, Stromae kicked off his set with “L’enfer,” a wrenching acknowledgement of suicidal thoughts. The song’s chorus, translated to English, reads, “Sometimes I’ve had suicidal thoughts and I’m not proud of it / Sometimes you feel it’d be the only way to silence them / All these thoughts putting me through hell.”\n\nFrom there, Stromae’s song selections conveyed lighter moods, but even his most danceable tracks contain undercurrents of darkness and conflict: “Santé” is a toast to those who can’t celebrate, “Alors on danse” (from 2009’s Cheese) embraces dancing as a way to drown out life’s hardships and “Mon amour” attempts to reassure a lover against a backdrop of infidelity and dysfunction. On its own, each track is a heady cocktail of painstaking craft and hard-won joy. Taken together, they form a portrait of a world-class showman at the height of his powers.\n\nSET LIST\n“L’enfer”\n“Santé”\n“Alors on danse”\n“Mon amour”\n\nMUSICIANS\nStromae: vocals\nManoli Avgoustinatos: keyboards, charango, vocals\nYoshi Masuda: keyboard, vocals\nSimon LeSaint: drums, vocals\nFlorian Rossi: keyboard, vocals\n\nYasna Voices NY Bulgarian Women’s Choir, directed by Vlada Tomova\nMimi Berkova\nLarkin Grimm\nVlada Tomova\n\nTINY DESK TEAM\nProducer: Bob Boilen\nDirector/Editor: Maia Stern\nAudio Engineer: Josh Rogosin \nSeries Producer: Bobby Carter\nVideographers: Joshua Bryant, Maia Stern, Pierre Kattar, Sofia Seidel\nProduction Assistants: Jill Britton, Alanté Serene\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Kara Frame, Ashley Pointer, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#stromae #tinydesk #nprmusic", "Stromae: Tiny Desk Concert", 975, false, "6dkDepLX0rk", "https://www.youtube.com/watch?v=6dkDepLX0rk", "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].mp4", false, 2, ~U[2022-12-05 10:00:02Z]] 14:13:26.101 [debug] QUERY OK source="sources" db=0.4ms idle=234.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:26.101 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:26.103 [debug] QUERY OK source="media_items" db=1.0ms 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 [145] 14:13:26.103 [info] Kicking off download for media item #145 (6dkDepLX0rk) 14:13:26.109 [debug] QUERY OK source="tasks" db=0.5ms queue=0.1ms idle=7.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [93, 145, ~U[2026-07-24 12:13:26Z], ~U[2026-07-24 12:13:26Z]] 14:13:26.109 [debug] Current batch of media processed. Will check again in 1000ms 14:13:27.112 [debug] Current batch of media processed. Will check again in 1000ms 14:13:28.113 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This year, NPR Music is celebrating Black Music Month with an array of brand new Tiny Desk concerts — both from home and from behind our beloved Desk. Together, these artists represent the past, present and future of Black music. This month of carefully curated shows is a celebration of Black artists expressing themselves in ways we've never seen before, and of the Tiny Desk's unique way of showcasing that talent.\n\nAshley Pointer | June 29, 2022\nAfter taking a sip of his tea towards the end of his six-song set, Denzel Curry turns to his band and exclaims: “We lowkey breezed through this b****! That’s great for two rehearsals!” \n\nFrom the moment Curry and his people stepped foot into NPR headquarters to record their Tiny Desk concert, the vibes were right. With a 10-piece configuration — consisting of drums, bass, keys, guitar, horns and percussion — the rapper put on a flawless and inspired live performance of songs off his latest LP as well as some of his biggest hits, all freshly arranged for the Tiny Desk. \n\nOver the course of a decade, Curry has released a number of albums and EPs, becoming one of the most versatile emcees in hip-hop today. His sixth studio album, Melt My Eyez See Your Future, marked a new artistic beginning for him: infusing neo-soul, jazz and traditional hip-hop influences into the album, with less “rah” and more mature introspection. Throughout this concert, you get a little bit of both. \n\nCurry and the Cold-Blooded Soul Band open their set with “Melt Session #1,” a feel-good neo-soul groove where Curry’s introspective lyrics flow beautifully, taking center stage. Then kicking it up a notch, Curry performs “Walkin” and “Troubles” with an assist from DJ POSHtronaut, employing some serious bounce complimented by catchy horn lines. In the second half of his set, Curry takes us back with “DIET_.” Evoking instant head-bops as bass and drums smoothly lock in, Curry charms our audience with his improvised rhymes and exuberant personality. \n\nAs Curry and the band closed out the concert going absolutely bonkers with “RICKY,” I could feel how light the room had gotten as everyone in the audience fed off Curry’s infectious energy fueled by distorted guitar and bass and punchy horns. “You know I killed that s***. You know I murked that s***!” Yes, Denzel Curry. Yes you did. \n\nSET LIST\n“Melt Session #1”\n“Walkin”\n“Troubles”\n“DIET_”\n“CLOUT COBAIN | CLOUT CO13A1N”\n“RICKY”\n\nMUSICIANS\nDenzel Curry: vocals\nDJ POSHtronaut: vocals\nMarcus Paul: trumpet \nBrandyn Phillips: trumpet\nTim McKay: saxophone/flute\nAlex Csillag: trombone\nBrian Gazo: percussion\nBrian Patterson: drums\nJay Winfield: keys\nJack Siegel: guitar\nDavid McKinzie: bass\n\n\nTINY DESK TEAM\nProducer: Bobby Carter\nAudio Recording & Mix Engineer: Josh Rogosin\nDirector: Joshua Bryant\nEditor: Kara Frame\nSeries Creator: Bob Boilen\nVideographers: Kara Frame, Joshua Bryant, Michael Zamora, Pierre Kattar, Alanté Serene\nProduction Assistant: Ashley Pointer\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Jill Britton, Maia Stern\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #BMM #denzelcurry", "duration" => 1184, "filename" => "/downloads/Tiny Desk/2022-06-29 Denzel Curry: Tiny Desk Concert/Denzel Curry: Tiny Desk Concert [glHqWvkpRqo].mp4", "id" => "glHqWvkpRqo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=glHqWvkpRqo", "playlist_index" => 25, "timestamp" => 1656500426, "title" => "Denzel Curry: Tiny Desk Concert", "upload_date" => "20220629"} 14:13:28.113 [debug] QUERY OK source="sources" db=0.2ms idle=630.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:13:28.113 [debug] QUERY OK source="sources" db=0.1ms idle=630.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:28.114 [debug] QUERY OK source="media_items" db=0.3ms idle=631.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2022-06-29 11:00:26Z], 2] 14:13:28.116 [debug] QUERY OK source="media_items" db=1.5ms idle=631.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This year, NPR Music is celebrating Black Music Month with an array of brand new Tiny Desk concerts — both from home and from behind our beloved Desk. Together, these artists represent the past, present and future of Black music. This month of carefully curated shows is a celebration of Black artists expressing themselves in ways we've never seen before, and of the Tiny Desk's unique way of showcasing that talent.\n\nAshley Pointer | June 29, 2022\nAfter taking a sip of his tea towards the end of his six-song set, Denzel Curry turns to his band and exclaims: “We lowkey breezed through this b****! That’s great for two rehearsals!” \n\nFrom the moment Curry and his people stepped foot into NPR headquarters to record their Tiny Desk concert, the vibes were right. With a 10-piece configuration — consisting of drums, bass, keys, guitar, horns and percussion — the rapper put on a flawless and inspired live performance of songs off his latest LP as well as some of his biggest hits, all freshly arranged for the Tiny Desk. \n\nOver the course of a decade, Curry has released a number of albums and EPs, becoming one of the most versatile emcees in hip-hop today. His sixth studio album, Melt My Eyez See Your Future, marked a new artistic beginning for him: infusing neo-soul, jazz and traditional hip-hop influences into the album, with less “rah” and more mature introspection. Throughout this concert, you get a little bit of both. \n\nCurry and the Cold-Blooded Soul Band open their set with “Melt Session #1,” a feel-good neo-soul groove where Curry’s introspective lyrics flow beautifully, taking center stage. Then kicking it up a notch, Curry performs “Walkin” and “Troubles” with an assist from DJ POSHtronaut, employing some serious bounce complimented by catchy horn lines. In the second half of his set, Curry takes us back with “DIET_.” Evoking instant head-bops as bass and drums smoothly lock in, Curry charms our audience with his improvised rhymes and exuberant personality. \n\nAs Curry and the band closed out the concert going absolutely bonkers with “RICKY,” I could feel how light the room had gotten as everyone in the audience fed off Curry’s infectious energy fueled by distorted guitar and bass and punchy horns. “You know I killed that s***. You know I murked that s***!” Yes, Denzel Curry. Yes you did. \n\nSET LIST\n“Melt Session #1”\n“Walkin”\n“Troubles”\n“DIET_”\n“CLOUT COBAIN | CLOUT CO13A1N”\n“RICKY”\n\nMUSICIANS\nDenzel Curry: vocals\nDJ POSHtronaut: vocals\nMarcus Paul: trumpet \nBrandyn Phillips: trumpet\nTim McKay: saxophone/flute\nAlex Csillag: trombone\nBrian Gazo: percussion\nBrian Patterson: drums\nJay Winfield: keys\nJack Siegel: guitar\nDavid McKinzie: bass\n\n\nTINY DESK TEAM\nProducer: Bobby Carter\nAudio Recording & Mix Engineer: Josh Rogosin\nDirector: Joshua Bryant\nEditor: Kara Frame\nSeries Creator: Bob Boilen\nVideographers: Kara Frame, Joshua Bryant, Michael Zamora, Pierre Kattar, Alanté Serene\nProduction Assistant: Ashley Pointer\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Jill Britton, Maia Stern\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #BMM #denzelcurry", "Denzel Curry: Tiny Desk Concert", "d5942fbf-7e3f-455c-8804-677652c8e9d1", 1184, false, "glHqWvkpRqo", "https://www.youtube.com/watch?v=glHqWvkpRqo", 25, "/downloads/Tiny Desk/2022-06-29 Denzel Curry: Tiny Desk Concert/Denzel Curry: Tiny Desk Concert [glHqWvkpRqo].mp4", false, false, false, 2, [], 0, ~U[2022-06-29 11:00:26Z], ~U[2026-07-24 12:13:28Z], ~U[2026-07-24 12:13:28Z], "This year, NPR Music is celebrating Black Music Month with an array of brand new Tiny Desk concerts — both from home and from behind our beloved Desk. Together, these artists represent the past, present and future of Black music. This month of carefully curated shows is a celebration of Black artists expressing themselves in ways we've never seen before, and of the Tiny Desk's unique way of showcasing that talent.\n\nAshley Pointer | June 29, 2022\nAfter taking a sip of his tea towards the end of his six-song set, Denzel Curry turns to his band and exclaims: “We lowkey breezed through this b****! That’s great for two rehearsals!” \n\nFrom the moment Curry and his people stepped foot into NPR headquarters to record their Tiny Desk concert, the vibes were right. With a 10-piece configuration — consisting of drums, bass, keys, guitar, horns and percussion — the rapper put on a flawless and inspired live performance of songs off his latest LP as well as some of his biggest hits, all freshly arranged for the Tiny Desk. \n\nOver the course of a decade, Curry has released a number of albums and EPs, becoming one of the most versatile emcees in hip-hop today. His sixth studio album, Melt My Eyez See Your Future, marked a new artistic beginning for him: infusing neo-soul, jazz and traditional hip-hop influences into the album, with less “rah” and more mature introspection. Throughout this concert, you get a little bit of both. \n\nCurry and the Cold-Blooded Soul Band open their set with “Melt Session #1,” a feel-good neo-soul groove where Curry’s introspective lyrics flow beautifully, taking center stage. Then kicking it up a notch, Curry performs “Walkin” and “Troubles” with an assist from DJ POSHtronaut, employing some serious bounce complimented by catchy horn lines. In the second half of his set, Curry takes us back with “DIET_.” Evoking instant head-bops as bass and drums smoothly lock in, Curry charms our audience with his improvised rhymes and exuberant personality. \n\nAs Curry and the band closed out the concert going absolutely bonkers with “RICKY,” I could feel how light the room had gotten as everyone in the audience fed off Curry’s infectious energy fueled by distorted guitar and bass and punchy horns. “You know I killed that s***. You know I murked that s***!” Yes, Denzel Curry. Yes you did. \n\nSET LIST\n“Melt Session #1”\n“Walkin”\n“Troubles”\n“DIET_”\n“CLOUT COBAIN | CLOUT CO13A1N”\n“RICKY”\n\nMUSICIANS\nDenzel Curry: vocals\nDJ POSHtronaut: vocals\nMarcus Paul: trumpet \nBrandyn Phillips: trumpet\nTim McKay: saxophone/flute\nAlex Csillag: trombone\nBrian Gazo: percussion\nBrian Patterson: drums\nJay Winfield: keys\nJack Siegel: guitar\nDavid McKinzie: bass\n\n\nTINY DESK TEAM\nProducer: Bobby Carter\nAudio Recording & Mix Engineer: Josh Rogosin\nDirector: Joshua Bryant\nEditor: Kara Frame\nSeries Creator: Bob Boilen\nVideographers: Kara Frame, Joshua Bryant, Michael Zamora, Pierre Kattar, Alanté Serene\nProduction Assistant: Ashley Pointer\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Jill Britton, Maia Stern\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #BMM #denzelcurry", "Denzel Curry: Tiny Desk Concert", 1184, false, "glHqWvkpRqo", "https://www.youtube.com/watch?v=glHqWvkpRqo", "/downloads/Tiny Desk/2022-06-29 Denzel Curry: Tiny Desk Concert/Denzel Curry: Tiny Desk Concert [glHqWvkpRqo].mp4", false, 2, ~U[2022-06-29 11:00:26Z]] 14:13:28.117 [debug] QUERY OK source="sources" db=0.4ms queue=0.4ms idle=247.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:28.118 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:28.119 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=4.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 [146] 14:13:28.119 [info] Kicking off download for media item #146 (glHqWvkpRqo) 14:13:28.121 [debug] QUERY OK source="tasks" db=0.1ms idle=3.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [94, 146, ~U[2026-07-24 12:13:28Z], ~U[2026-07-24 12:13:28Z]] 14:13:28.121 [debug] Current batch of media processed. Will check again in 1000ms 14:13:29.122 [debug] Current batch of media processed. Will check again in 1000ms 14:13:30.124 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This performance was recorded on January 23, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nWatch Coldplay play \"Cry Cry Cry\", \"Viva La Vida\", \"Broken\", \"1999\" (Prince cover) and \"Champion Of The World\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nMarch 12, 2020 | Robin Hilton -- Shortly into Coldplay's soundcheck, singer Chris Martin cut off the opening song, \"Cry Cry Cry,\" right in the middle. His band had brought along a nine-piece choir, and he asked them to take \"Cry Cry Cry\" one more time. When one of the singers asked if there was a problem, Martin replied, \"No, I'm just in f****** heaven right now!\"\n\nThat feeling was obvious throughout the performance. Watching Martin at the keys, with the For Love Choir behind him and Coldplay guitarist Jonny Buckland at his side, you'd be forgiven for thinking it was the happiest day of his life. Laughing, bouncing to the music and playing off the crowd, Martin and company gave one of the most jubilant, uplifting and memorable performances we've ever had at the Tiny Desk.\n\nWatching their gospel-infused take on \"Viva La Vida,\" it was hard not to beam with joy; hearing their stirring cover of Prince's \"1999\" brought on a mass urge to leap up and dance. The entire set was a perfectly executed showcase of the band's creative spirit and love of community through music.\n\n\"Viva La Vida\" was the only older track Coldplay performed, in addition to the surprise Prince cover. (The band had just performed at a Prince tribute show in January.) The other three songs — \"Cry Cry Cry,\" \"Broken\" and \"Champion of the World\" — are all from the band's stellar new album, Everyday Life, which was recorded with some of the singers on hand for the Tiny Desk. Martin joked that, \"In a very real way, they've Photoshopped our songs to be much better than they actually are.\" Whether or not that's true, for at least this one sunny afternoon at the NPR Music offices, the choir — and Coldplay's inspired reworking of its own music — felt transcendent.\n\nSET LIST\n\"Cry Cry Cry\"\n\"Viva La Vida\"\n\"Broken\"\n\"1999\" (Prince cover)\n\"Champion Of The World\"\n\nMUSICIANS\nChris Martin: vocals, keys; Jonny Buckland: guitar; Denise Green: vocals; Shaneka Hamilton: vocals; Dorian Holley: vocals; Stephen Mackey: vocals; Lamarcus Eldridge: vocals; Lawrence Young: vocals; Surrenity Xyz: vocals; Tiffany Smith: vocals; Mabvuto Carpenter: vocals\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith, Maia Stern; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, James Willetts; Editor: Maia Stern; Videographers: Maia Stern, Morgan Noelle Smith, CJ Riculan, Jack Corbett, Melany Rochester; Associate Producer: Bobby Carter; Production Assistant: Shanti Hands; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Emily Bogle/NPR", "duration" => 1093, "filename" => "/downloads/Tiny Desk/2020-03-16 Coldplay: NPR Music Tiny Desk Concert/Coldplay: NPR Music Tiny Desk Concert [j82L3pLjb_0].mp4", "id" => "j82L3pLjb_0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=j82L3pLjb_0", "playlist_index" => 26, "timestamp" => 1584349230, "title" => "Coldplay: NPR Music Tiny Desk Concert", "upload_date" => "20200316"} 14:13:30.124 [debug] QUERY OK source="sources" db=0.3ms idle=641.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:30.125 [debug] QUERY OK source="sources" db=0.1ms idle=642.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:30.125 [debug] QUERY OK source="media_items" db=0.2ms idle=642.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-03-16 09:00:30Z], 2] 14:13:30.127 [debug] QUERY OK source="media_items" db=1.3ms idle=642.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This performance was recorded on January 23, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nWatch Coldplay play \"Cry Cry Cry\", \"Viva La Vida\", \"Broken\", \"1999\" (Prince cover) and \"Champion Of The World\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nMarch 12, 2020 | Robin Hilton -- Shortly into Coldplay's soundcheck, singer Chris Martin cut off the opening song, \"Cry Cry Cry,\" right in the middle. His band had brought along a nine-piece choir, and he asked them to take \"Cry Cry Cry\" one more time. When one of the singers asked if there was a problem, Martin replied, \"No, I'm just in f****** heaven right now!\"\n\nThat feeling was obvious throughout the performance. Watching Martin at the keys, with the For Love Choir behind him and Coldplay guitarist Jonny Buckland at his side, you'd be forgiven for thinking it was the happiest day of his life. Laughing, bouncing to the music and playing off the crowd, Martin and company gave one of the most jubilant, uplifting and memorable performances we've ever had at the Tiny Desk.\n\nWatching their gospel-infused take on \"Viva La Vida,\" it was hard not to beam with joy; hearing their stirring cover of Prince's \"1999\" brought on a mass urge to leap up and dance. The entire set was a perfectly executed showcase of the band's creative spirit and love of community through music.\n\n\"Viva La Vida\" was the only older track Coldplay performed, in addition to the surprise Prince cover. (The band had just performed at a Prince tribute show in January.) The other three songs — \"Cry Cry Cry,\" \"Broken\" and \"Champion of the World\" — are all from the band's stellar new album, Everyday Life, which was recorded with some of the singers on hand for the Tiny Desk. Martin joked that, \"In a very real way, they've Photoshopped our songs to be much better than they actually are.\" Whether or not that's true, for at least this one sunny afternoon at the NPR Music offices, the choir — and Coldplay's inspired reworking of its own music — felt transcendent.\n\nSET LIST\n\"Cry Cry Cry\"\n\"Viva La Vida\"\n\"Broken\"\n\"1999\" (Prince cover)\n\"Champion Of The World\"\n\nMUSICIANS\nChris Martin: vocals, keys; Jonny Buckland: guitar; Denise Green: vocals; Shaneka Hamilton: vocals; Dorian Holley: vocals; Stephen Mackey: vocals; Lamarcus Eldridge: vocals; Lawrence Young: vocals; Surrenity Xyz: vocals; Tiffany Smith: vocals; Mabvuto Carpenter: vocals\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith, Maia Stern; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, James Willetts; Editor: Maia Stern; Videographers: Maia Stern, Morgan Noelle Smith, CJ Riculan, Jack Corbett, Melany Rochester; Associate Producer: Bobby Carter; Production Assistant: Shanti Hands; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Emily Bogle/NPR", "Coldplay: NPR Music Tiny Desk Concert", "64d84bd7-b675-4621-a98c-71b0f3aa796c", 1093, false, "j82L3pLjb_0", "https://www.youtube.com/watch?v=j82L3pLjb_0", 26, "/downloads/Tiny Desk/2020-03-16 Coldplay: NPR Music Tiny Desk Concert/Coldplay: NPR Music Tiny Desk Concert [j82L3pLjb_0].mp4", false, false, false, 2, [], 0, ~U[2020-03-16 09:00:30Z], ~U[2026-07-24 12:13:30Z], ~U[2026-07-24 12:13:30Z], "This performance was recorded on January 23, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nWatch Coldplay play \"Cry Cry Cry\", \"Viva La Vida\", \"Broken\", \"1999\" (Prince cover) and \"Champion Of The World\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nMarch 12, 2020 | Robin Hilton -- Shortly into Coldplay's soundcheck, singer Chris Martin cut off the opening song, \"Cry Cry Cry,\" right in the middle. His band had brought along a nine-piece choir, and he asked them to take \"Cry Cry Cry\" one more time. When one of the singers asked if there was a problem, Martin replied, \"No, I'm just in f****** heaven right now!\"\n\nThat feeling was obvious throughout the performance. Watching Martin at the keys, with the For Love Choir behind him and Coldplay guitarist Jonny Buckland at his side, you'd be forgiven for thinking it was the happiest day of his life. Laughing, bouncing to the music and playing off the crowd, Martin and company gave one of the most jubilant, uplifting and memorable performances we've ever had at the Tiny Desk.\n\nWatching their gospel-infused take on \"Viva La Vida,\" it was hard not to beam with joy; hearing their stirring cover of Prince's \"1999\" brought on a mass urge to leap up and dance. The entire set was a perfectly executed showcase of the band's creative spirit and love of community through music.\n\n\"Viva La Vida\" was the only older track Coldplay performed, in addition to the surprise Prince cover. (The band had just performed at a Prince tribute show in January.) The other three songs — \"Cry Cry Cry,\" \"Broken\" and \"Champion of the World\" — are all from the band's stellar new album, Everyday Life, which was recorded with some of the singers on hand for the Tiny Desk. Martin joked that, \"In a very real way, they've Photoshopped our songs to be much better than they actually are.\" Whether or not that's true, for at least this one sunny afternoon at the NPR Music offices, the choir — and Coldplay's inspired reworking of its own music — felt transcendent.\n\nSET LIST\n\"Cry Cry Cry\"\n\"Viva La Vida\"\n\"Broken\"\n\"1999\" (Prince cover)\n\"Champion Of The World\"\n\nMUSICIANS\nChris Martin: vocals, keys; Jonny Buckland: guitar; Denise Green: vocals; Shaneka Hamilton: vocals; Dorian Holley: vocals; Stephen Mackey: vocals; Lamarcus Eldridge: vocals; Lawrence Young: vocals; Surrenity Xyz: vocals; Tiffany Smith: vocals; Mabvuto Carpenter: vocals\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith, Maia Stern; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, James Willetts; Editor: Maia Stern; Videographers: Maia Stern, Morgan Noelle Smith, CJ Riculan, Jack Corbett, Melany Rochester; Associate Producer: Bobby Carter; Production Assistant: Shanti Hands; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Emily Bogle/NPR", "Coldplay: NPR Music Tiny Desk Concert", 1093, false, "j82L3pLjb_0", "https://www.youtube.com/watch?v=j82L3pLjb_0", "/downloads/Tiny Desk/2020-03-16 Coldplay: (truncated) 14:13:30.127 [debug] QUERY OK source="sources" db=0.1ms idle=255.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:30.128 [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" = ?) [2] 14:13:30.128 [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 [147] 14:13:30.128 [info] Kicking off download for media item #147 (j82L3pLjb_0) 14:13:30.129 [debug] QUERY OK source="tasks" db=0.2ms idle=1.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [95, 147, ~U[2026-07-24 12:13:30Z], ~U[2026-07-24 12:13:30Z]] 14:13:30.130 [debug] Current batch of media processed. Will check again in 1000ms 14:13:31.130 [debug] Current batch of media processed. Will check again in 1000ms 14:13:32.132 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Megan Thee Stallion play at the Tiny Desk Fest.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nThis Tiny Desk concert was part of Tiny Desk Fest, a four-night series of extended concerts performed in front of a live audience and streamed live on YouTube, Twitter and Facebook.\n\nDec. 2, 2019 | Sidney Madden -- \"I'm gonna get real comfortable with y'all, so I'm need y'all to get real comfortable with me,\" Megan Thee Stallion told the excited Tiny Desk Fest crowd as soon as she assumed her position behind the desk. After promptly switching out her patent leather heels for some fuzzy Louis Vuitton slippers, she let the room know, \"Now, don't be scared to get ratchet.\"\n\nFrom there, the Houston rapper wasted no time demonstrating why she's a superstar in the making. Megan exuded irresistible charisma, cracking jokes with the crowd and rattling off explicit bars from her award-winning mixtape, Fever, for the live audience watching on YouTube and social media.\n\nFrom \"Hot Girl Summer\" to the platinum-selling \"Cash S***,\" Hot Girl Meg's raunchy hits took on new life thanks to a live backing band, Brooklyn's Phony Ppl, who seamlessly blend jazz, R&B and hip-hop. Midway through the spirited set, Megan and Phony Ppl surprised the audience by premiering an unreleased collaboration, a bouncy banger titled \"F***** Around.\" After the first verse/chorus, the adoring crowd was singing along as if they'd known the song for years.\n\nIt was the first time Megan performed with a live band in public, but then again, there's been a lot of firsts over the past year. This time last fall, Megan was rapping her heart out at local shows, balancing classes at Texas Southern University and occasionally dropping a fire freestyle video from a suburban cul-de-sac driveway. Since then, the brilliant and bodacious rapper ascended to major festival stages, became one of the most sought-after features on other stars' songs, and electrified late-night television audiences.\n\nThough she's dubbed herself a stallion because of her tall and voluptuous frame (Meg stands 5 feet 10 inches without heels,) the 24-year-old rapper has proven herself to be a workhorse when it comes to consistency. Her viral 2019 freestyles shot her online exposure through the roof and whichever alter ego she chooses in the moment — Tina Snow, Hot Girl Meg, Stalli — she's maintained the spotlight all year thanks to a steady stream of new music, an engaging personality and her own viral social media campaign, Hot Girl Summer.\n\nThough she's usually known for extensive twerking during her stage performances, at the Tiny Desk, Meg played up a different skill set: impeccable timing and lung capacity. \"Yall talk about Meg's knees but sis breath control is pretty impressive too,\" one viewer tweeted out during the live video stream.\n\nMegan's lyrical content lies in subverting established sexual dynamics and no matter the level of raunch she deploys, empowering women remains the artist's manifesto. Co-signs from all across hip-hop, from Q-Tip to Nicki Minaj to Chance the Rapper, have only bolstered her appeal and validated her bars in the eyes of the genre's cultural gatekeepers.\n\nSET LIST\n\"Realer\"\n\"Freak Nasty\"\n\"Cash S***\"\n\"Big Ole Freak\"\n\"Hot Girl Summer\"\n\"F****** Around\"\n\"Money Good\"\n\nMUSICIANS\nMegan Thee Stallion: vocals; Elbee Thrie: vocal, percussion; Elijah Rawk: guitar; Maffyuu: drums; Aja Grant: keys; Bari Bass: bass; Ebony Joi: vocals\n\nCREDITS\nProducers: Sidney Madden, Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts; Videographers: Morgan Noelle Smith, Maia Stern, Kara Frame, CJ Riculan, Jack Corbett; Associate Producer: Bobby Carter; Production Assistant: Tsering Bista; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Laura Beltran Villamizar/NPR\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.co" <> ..., "duration" => 1559, "filename" => "/downloads/Tiny Desk/2019-12-09 Megan Thee Stallion: NPR Music Tiny Desk Concert/Megan Thee Stallion: NPR Music Tiny Desk Concert [GYJ03MIPoIk].mp4", "id" => "GYJ03MIPoIk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=GYJ03MIPoIk", "playlist_index" => 27, "timestamp" => 1575885604, "title" => "Megan Thee Stallion: NPR Music Tiny Desk Concert", "upload_date" => "20191209"} 14:13:32.132 [debug] QUERY OK source="sources" db=0.3ms idle=649.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:32.133 [debug] QUERY OK source="sources" db=0.2ms queue=0.3ms idle=650.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:32.134 [debug] QUERY OK source="media_items" db=0.6ms idle=650.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-12-09 10:00:04Z], 2] 14:13:32.137 [debug] QUERY OK source="media_items" db=1.9ms idle=651.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Megan Thee Stallion play at the Tiny Desk Fest.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nThis Tiny Desk concert was part of Tiny Desk Fest, a four-night series of extended concerts performed in front of a live audience and streamed live on YouTube, Twitter and Facebook.\n\nDec. 2, 2019 | Sidney Madden -- \"I'm gonna get real comfortable with y'all, so I'm need y'all to get real comfortable with me,\" Megan Thee Stallion told the excited Tiny Desk Fest crowd as soon as she assumed her position behind the desk. After promptly switching out her patent leather heels for some fuzzy Louis Vuitton slippers, she let the room know, \"Now, don't be scared to get ratchet.\"\n\nFrom there, the Houston rapper wasted no time demonstrating why she's a superstar in the making. Megan exuded irresistible charisma, cracking jokes with the crowd and rattling off explicit bars from her award-winning mixtape, Fever, for the live audience watching on YouTube and social media.\n\nFrom \"Hot Girl Summer\" to the platinum-selling \"Cash S***,\" Hot Girl Meg's raunchy hits took on new life thanks to a live backing band, Brooklyn's Phony Ppl, who seamlessly blend jazz, R&B and hip-hop. Midway through the spirited set, Megan and Phony Ppl surprised the audience by premiering an unreleased collaboration, a bouncy banger titled \"F***** Around.\" After the first verse/chorus, the adoring crowd was singing along as if they'd known the song for years.\n\nIt was the first time Megan performed with a live band in public, but then again, there's been a lot of firsts over the past year. This time last fall, Megan was rapping her heart out at local shows, balancing classes at Texas Southern University and occasionally dropping a fire freestyle video from a suburban cul-de-sac driveway. Since then, the brilliant and bodacious rapper ascended to major festival stages, became one of the most sought-after features on other stars' songs, and electrified late-night television audiences.\n\nThough she's dubbed herself a stallion because of her tall and voluptuous frame (Meg stands 5 feet 10 inches without heels,) the 24-year-old rapper has proven herself to be a workhorse when it comes to consistency. Her viral 2019 freestyles shot her online exposure through the roof and whichever alter ego she chooses in the moment — Tina Snow, Hot Girl Meg, Stalli — she's maintained the spotlight all year thanks to a steady stream of new music, an engaging personality and her own viral social media campaign, Hot Girl Summer.\n\nThough she's usually known for extensive twerking during her stage performances, at the Tiny Desk, Meg played up a different skill set: impeccable timing and lung capacity. \"Yall talk about Meg's knees but sis breath control is pretty impressive too,\" one viewer tweeted out during the live video stream.\n\nMegan's lyrical content lies in subverting established sexual dynamics and no matter the level of raunch she deploys, empowering women remains the artist's manifesto. Co-signs from all across hip-hop, from Q-Tip to Nicki Minaj to Chance the Rapper, have only bolstered her appeal and validated her bars in the eyes of the genre's cultural gatekeepers.\n\nSET LIST\n\"Realer\"\n\"Freak Nasty\"\n\"Cash S***\"\n\"Big Ole Freak\"\n\"Hot Girl Summer\"\n\"F****** Around\"\n\"Money Good\"\n\nMUSICIANS\nMegan Thee Stallion: vocals; Elbee Thrie: vocal, percussion; Elijah Rawk: guitar; Maffyuu: drums; Aja Grant: keys; Bari Bass: bass; Ebony Joi: vocals\n\nCREDITS\nProducers: Sidney Madden, Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts; Videographers: Morgan Noelle Smith, Maia Stern, Kara Frame, CJ Riculan, Jack Corbett; Associate Producer: Bobby Carter; Production Assistant: Tsering Bista; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Laura Beltran Villamizar/NPR\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.co" <> ..., "Megan Thee Stallion: NPR Music Tiny Desk Concert", "23c96bf3-857e-44b5-beb4-301fb1ef16e1", 1559, false, "GYJ03MIPoIk", "https://www.youtube.com/watch?v=GYJ03MIPoIk", 27, "/downloads/Tiny Desk/2019-12-09 Megan Thee Stallion: NPR Music Tiny Desk Concert/Megan Thee Stallion: NPR Music Tiny Desk Concert [GYJ03MIPoIk].mp4", false, false, false, 2, [], 0, ~U[2019-12-09 10:00:04Z], ~U[2026-07-24 12:13:32Z], ~U[2026-07-24 12:13:32Z], "Watch Megan Thee Stallion play at the Tiny Desk Fest.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nThis Tiny Desk concert was part of Tiny Desk Fest, a four-night series of extended concerts performed in front of a live audience and streamed live on YouTube, Twitter and Facebook.\n\nDec. 2, 2019 | Sidney Madden -- \"I'm gonna get real comfortable with y'all, so I'm need y'all to get real comfortable with me,\" Megan Thee Stallion told the excited Tiny Desk Fest crowd as soon as she assumed her position behind the desk. After promptly switching out her patent leather heels for some fuzzy Louis Vuitton slippers, she let the room know, \"Now, don't be scared to get ratchet.\"\n\nFrom there, the Houston rapper wasted no time demonstrating why she's a superstar in the making. Megan exuded irresistible charisma, cracking jokes with the crowd and rattling off explicit bars from her award-winning mixtape, Fever, for the live audience watching on YouTube and social media.\n\nFrom \"Hot Girl Summer\" to the platinum-selling \"Cash S***,\" Hot Girl Meg's raunchy hits took on new life thanks to a live backing band, Brooklyn's Phony Ppl, who seamlessly blend jazz, R&B and hip-hop. Midway through the spirited set, Megan and Phony Ppl surprised the audience by premiering an unreleased collaboration, a bouncy banger titled \"F***** Around.\" After the first verse/chorus, the adoring crowd was singing along as if they'd known the song for years.\n\nIt was the first time Megan performed with a live band in public, but then again, there's been a lot of firsts over the past year. This time last fall, Megan was rapping her heart out at local shows, balancing classes at Texas Southern University and occasionally dropping a fire freestyle video from a suburban cul-de-sac driveway. Since then, the brilliant and bodacious rapper ascended to major festival stages, became one of the most sought-after features on other stars' songs, and electrified late-night television audiences.\n\nThough she's dubbed herself a stallion because of her tall and voluptuous frame (Meg stands 5 feet 10 inches without heels,) the 24-year-old rapper has proven herself to be a workhorse when it comes to consistency. Her viral 2019 freestyles shot her online exposure through the roof and whichever alter ego she chooses in the moment — Tina Snow, Hot Girl Meg, Stalli — she's maintained the spotlight all year thanks to a steady stream of new music, an engaging personality and her own viral social media campaign, Hot Girl Summer.\n\nThough she's usually known for extensive twerking during her stage performances, at the Tiny Desk, Meg played up a differen (truncated) 14:13:32.137 [debug] QUERY OK source="sources" db=0.2ms idle=260.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:32.138 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:32.138 [debug] QUERY OK source="media_items" db=0.4ms 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 [148] 14:13:32.138 [info] Kicking off download for media item #148 (GYJ03MIPoIk) 14:13:32.140 [debug] QUERY OK source="tasks" db=0.1ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [96, 148, ~U[2026-07-24 12:13:32Z], ~U[2026-07-24 12:13:32Z]] 14:13:32.141 [debug] Current batch of media processed. Will check again in 1000ms 14:13:33.141 [debug] Current batch of media processed. Will check again in 1000ms 14:13:34.142 [debug] Current batch of media processed. Will check again in 1000ms 14:13:35.144 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Carly Rae Jepsen play \"Now That I Found You\", \"Want You In My Room\" and \"The Sound\" at the Tiny Desk.\n\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nNov. 25, 2019 | Lyndsey McKenna and Marissa Lorusso -- From the moment Carly Rae Jepsen arrived at NPR HQ for her Tiny Desk concert, she brought an obvious sense of joy. Take, for example, her sound check: Working with her band of longtime collaborators, she seemed downright delighted, beaming at the musicians as she gave notes after each meticulous run-through. It's that attention to detail that's helped build her a devoted fanbase ready to make memes of her every move.\n\nHer performance was a long time coming: In 2012, Jepsen's No. 1 hit \"Call Me Maybe\" was inescapable, and her 2015 album E-MO-TION made her a critical darling. An extremely high proportion of NPR employees also happen to be fans of the left-of-center pop star; despite the nonstop impeachment hearing coverage happening just down the hall, Jepsen commanded a considerable and captivated crowd at the Tiny Desk.\n\nFor the performance, Jepsen and her band played three songs from her latest album, Dedicated, modulating the album's sparkling pop-disco vibe to fit our sun-filled office. From the smiling swagger of \"Want You In My Room\" to the head-rush of a new crush on \"Now That I Found You,\" to \"The Sound,\" Jepsen and her band even shared a few laughs during the set — and the whole crowd left smiling a little bit bigger.\n\nSET LIST\n\"Now That I Found You\"\n\"Want You In My Room\"\n\"The Sound\"\n\nMUSICIANS\nCarly Rae Jepsen: vocals; Tavish Crowe: guitar; Nik Pešut\u200F: drums; Jared Manierka: keys; Adam Siska: bass; Sophi Bairley: vocals\n\nCREDITS\nProducers: Bob Boilen, Marissa Lorusso, Lyndsey McKenna, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts, Patrick Boyd; Videographers: Morgan Noelle Smith, Jack Corbett, Maia Stern, Kara Frame ; Associate Producer: Bobby Carter; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Mhari Shaw/NPR", "duration" => 607, "filename" => "/downloads/Tiny Desk/2019-12-02 Carly Rae Jepsen: NPR Music Tiny Desk Concert/Carly Rae Jepsen: NPR Music Tiny Desk Concert [NGsgb8m0Yns].mp4", "id" => "NGsgb8m0Yns", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NGsgb8m0Yns", "playlist_index" => 28, "timestamp" => 1575280802, "title" => "Carly Rae Jepsen: NPR Music Tiny Desk Concert", "upload_date" => "20191202"} 14:13:35.145 [debug] QUERY OK source="sources" db=0.7ms idle=1661.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:35.145 [debug] QUERY OK source="sources" db=0.4ms idle=1662.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:35.146 [debug] QUERY OK source="media_items" db=0.4ms idle=1663.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-12-02 10:00:02Z], 2] 14:13:35.148 [debug] QUERY OK source="media_items" db=1.9ms idle=1267.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Carly Rae Jepsen play \"Now That I Found You\", \"Want You In My Room\" and \"The Sound\" at the Tiny Desk.\n\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nNov. 25, 2019 | Lyndsey McKenna and Marissa Lorusso -- From the moment Carly Rae Jepsen arrived at NPR HQ for her Tiny Desk concert, she brought an obvious sense of joy. Take, for example, her sound check: Working with her band of longtime collaborators, she seemed downright delighted, beaming at the musicians as she gave notes after each meticulous run-through. It's that attention to detail that's helped build her a devoted fanbase ready to make memes of her every move.\n\nHer performance was a long time coming: In 2012, Jepsen's No. 1 hit \"Call Me Maybe\" was inescapable, and her 2015 album E-MO-TION made her a critical darling. An extremely high proportion of NPR employees also happen to be fans of the left-of-center pop star; despite the nonstop impeachment hearing coverage happening just down the hall, Jepsen commanded a considerable and captivated crowd at the Tiny Desk.\n\nFor the performance, Jepsen and her band played three songs from her latest album, Dedicated, modulating the album's sparkling pop-disco vibe to fit our sun-filled office. From the smiling swagger of \"Want You In My Room\" to the head-rush of a new crush on \"Now That I Found You,\" to \"The Sound,\" Jepsen and her band even shared a few laughs during the set — and the whole crowd left smiling a little bit bigger.\n\nSET LIST\n\"Now That I Found You\"\n\"Want You In My Room\"\n\"The Sound\"\n\nMUSICIANS\nCarly Rae Jepsen: vocals; Tavish Crowe: guitar; Nik Pešut\u200F: drums; Jared Manierka: keys; Adam Siska: bass; Sophi Bairley: vocals\n\nCREDITS\nProducers: Bob Boilen, Marissa Lorusso, Lyndsey McKenna, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts, Patrick Boyd; Videographers: Morgan Noelle Smith, Jack Corbett, Maia Stern, Kara Frame ; Associate Producer: Bobby Carter; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Mhari Shaw/NPR", "Carly Rae Jepsen: NPR Music Tiny Desk Concert", "c3ab1113-facd-4e38-b404-bdfcc2905673", 607, false, "NGsgb8m0Yns", "https://www.youtube.com/watch?v=NGsgb8m0Yns", 28, "/downloads/Tiny Desk/2019-12-02 Carly Rae Jepsen: NPR Music Tiny Desk Concert/Carly Rae Jepsen: NPR Music Tiny Desk Concert [NGsgb8m0Yns].mp4", false, false, false, 2, [], 0, ~U[2019-12-02 10:00:02Z], ~U[2026-07-24 12:13:35Z], ~U[2026-07-24 12:13:35Z], "Watch Carly Rae Jepsen play \"Now That I Found You\", \"Want You In My Room\" and \"The Sound\" at the Tiny Desk.\n\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nNov. 25, 2019 | Lyndsey McKenna and Marissa Lorusso -- From the moment Carly Rae Jepsen arrived at NPR HQ for her Tiny Desk concert, she brought an obvious sense of joy. Take, for example, her sound check: Working with her band of longtime collaborators, she seemed downright delighted, beaming at the musicians as she gave notes after each meticulous run-through. It's that attention to detail that's helped build her a devoted fanbase ready to make memes of her every move.\n\nHer performance was a long time coming: In 2012, Jepsen's No. 1 hit \"Call Me Maybe\" was inescapable, and her 2015 album E-MO-TION made her a critical darling. An extremely high proportion of NPR employees also happen to be fans of the left-of-center pop star; despite the nonstop impeachment hearing coverage happening just down the hall, Jepsen commanded a considerable and captivated crowd at the Tiny Desk.\n\nFor the performance, Jepsen and her band played three songs from her latest album, Dedicated, modulating the album's sparkling pop-disco vibe to fit our sun-filled office. From the smiling swagger of \"Want You In My Room\" to the head-rush of a new crush on \"Now That I Found You,\" to \"The Sound,\" Jepsen and her band even shared a few laughs during the set — and the whole crowd left smiling a little bit bigger.\n\nSET LIST\n\"Now That I Found You\"\n\"Want You In My Room\"\n\"The Sound\"\n\nMUSICIANS\nCarly Rae Jepsen: vocals; Tavish Crowe: guitar; Nik Pešut\u200F: drums; Jared Manierka: keys; Adam Siska: bass; Sophi Bairley: vocals\n\nCREDITS\nProducers: Bob Boilen, Marissa Lorusso, Lyndsey McKenna, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts, Patrick Boyd; Videographers: Morgan Noelle Smith, Jack Corbett, Maia Stern, Kara Frame ; Associate Producer: Bobby Carter; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Mhari Shaw/NPR", "Carly Rae Jepsen: NPR Music Tiny Desk Concert", 607, false, "NGsgb8m0Yns", "https://www.youtube.com/watch?v=NGsgb8m0Yns", "/downloads/Tiny Desk/2019-12-02 Carly Rae Jepsen: NPR Music Tiny Desk Concert/Carly Rae Jepsen: NPR Music Tiny Desk Concert [NGsgb8m0Yns].mp4", false, 2, ~U[2019-12-02 10:00:02Z]] 14:13:35.149 [debug] QUERY OK source="sources" db=0.1ms idle=268.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:35.149 [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" = ?) [2] 14:13:35.150 [debug] QUERY OK source="media_items" db=0.3ms 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 [149] 14:13:35.150 [info] Kicking off download for media item #149 (NGsgb8m0Yns) 14:13:35.153 [debug] QUERY OK source="tasks" db=0.3ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [97, 149, ~U[2026-07-24 12:13:35Z], ~U[2026-07-24 12:13:35Z]] 14:13:35.153 [debug] Current batch of media processed. Will check again in 1000ms 14:13:36.153 [debug] Current batch of media processed. Will check again in 1000ms 14:13:37.155 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Taylor Swift play \"The Man\", \"Lover\", \"Death by a Thousand Cuts\" and \"All Too Well\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nOct. 15, 2019 | Lyndsey McKenna -- As Taylor Swift settled in for her Tiny Desk, she looked out at the 300-plus NPR employees and guests. \"Wow! This is a lot of people in a tiny office!\" she said. \"I love it!\" Then, after introducing herself, she explained her objective: \"I just decided to take this as an opportunity to show you guys how the songs sounded when I first wrote them.\"\n\nIt should come as no surprise that someone who commands stadium stages could hold court in NPR Music's corner of our Washington, D.C., office — specifically, behind Bob Boilen's desk — but Swift was truly at home in stripped-down, solo-session mode. (\"It's just me. There's no dancers, unfortunately,\" she quipped.)\n\nOpening with an acoustic rendition of \"The Man,\" from her 2019 album, Lover, Swift delivered a critique of gender double standards with a sense of humor (and a perfectly deployed hair toss), Leonardo DiCaprio name check and all. Turning to the piano with a smile for Lover's title track, she explained the guitar-string scars of the song's bridge. Picking up the guitar again for \"Death by a Thousand Cuts,\" Swift confronted a question that she says has haunted her career: What will you ever do if you get happy? Across the song's run-on thoughts and relentless searching, Swift offered an answer: She'll continue to excel at crafting superb story-songs.\n\nThough most Tiny Desk concerts stop at three songs, we couldn't turn down the chance to hear \"All Too Well\" from Swift's 2012 album, Red. Routinely cited by critics and fans alike as a favorite, the beloved track has become the stuff of Swiftie legends, striking in its specificity (that scarf!) and relatable in a way that anyone who has loved and lost can understand.\n\nThat sense of connection is at the heart of it all. Some 800 Tiny Desk concerts since we published our very first back in April 2008, the aim remains the same: In the midst of meetings and conference calls, Tiny Desk concerts offer respite from the workday and opportunities to see artists reimagine their work in a strange setting. It's always special, but on some days, it feels downright magical. Watching Taylor Swift perform — and then interact with co-workers and guests who have grown up with her — was simply enchanting.\n\nSET LIST\n\"The Man\"\n\"Lover\"\n\"Death by a Thousand Cuts\"\n\"All Too Well\"\n\nMUSICIAN\nTaylor Swift: vocals, guitar, piano\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, Natasha Branch; Videographers: Morgan Noelle Smith, Kara Frame, Maia Stern; Associate Producer: Bobby Carter; Production Assistants: Jack Corbett, Mito Habe-Evans; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann; Photo: Bob Boilen/NPR", "duration" => 1739, "filename" => "/downloads/Tiny Desk/2019-10-28 Taylor Swift: NPR Music Tiny Desk Concert/Taylor Swift: NPR Music Tiny Desk Concert [FvVnP8G6ITs].mp4", "id" => "FvVnP8G6ITs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=FvVnP8G6ITs", "playlist_index" => 29, "timestamp" => 1572253202, "title" => "Taylor Swift: NPR Music Tiny Desk Concert", "upload_date" => "20191028"} 14:13:37.155 [debug] QUERY OK source="sources" db=0.2ms idle=672.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:37.156 [debug] QUERY OK source="sources" db=0.2ms idle=673.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:37.157 [debug] QUERY OK source="media_items" db=0.4ms idle=673.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-10-28 09:00:02Z], 2] 14:13:37.159 [debug] QUERY OK source="media_items" db=1.3ms idle=674.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Taylor Swift play \"The Man\", \"Lover\", \"Death by a Thousand Cuts\" and \"All Too Well\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nOct. 15, 2019 | Lyndsey McKenna -- As Taylor Swift settled in for her Tiny Desk, she looked out at the 300-plus NPR employees and guests. \"Wow! This is a lot of people in a tiny office!\" she said. \"I love it!\" Then, after introducing herself, she explained her objective: \"I just decided to take this as an opportunity to show you guys how the songs sounded when I first wrote them.\"\n\nIt should come as no surprise that someone who commands stadium stages could hold court in NPR Music's corner of our Washington, D.C., office — specifically, behind Bob Boilen's desk — but Swift was truly at home in stripped-down, solo-session mode. (\"It's just me. There's no dancers, unfortunately,\" she quipped.)\n\nOpening with an acoustic rendition of \"The Man,\" from her 2019 album, Lover, Swift delivered a critique of gender double standards with a sense of humor (and a perfectly deployed hair toss), Leonardo DiCaprio name check and all. Turning to the piano with a smile for Lover's title track, she explained the guitar-string scars of the song's bridge. Picking up the guitar again for \"Death by a Thousand Cuts,\" Swift confronted a question that she says has haunted her career: What will you ever do if you get happy? Across the song's run-on thoughts and relentless searching, Swift offered an answer: She'll continue to excel at crafting superb story-songs.\n\nThough most Tiny Desk concerts stop at three songs, we couldn't turn down the chance to hear \"All Too Well\" from Swift's 2012 album, Red. Routinely cited by critics and fans alike as a favorite, the beloved track has become the stuff of Swiftie legends, striking in its specificity (that scarf!) and relatable in a way that anyone who has loved and lost can understand.\n\nThat sense of connection is at the heart of it all. Some 800 Tiny Desk concerts since we published our very first back in April 2008, the aim remains the same: In the midst of meetings and conference calls, Tiny Desk concerts offer respite from the workday and opportunities to see artists reimagine their work in a strange setting. It's always special, but on some days, it feels downright magical. Watching Taylor Swift perform — and then interact with co-workers and guests who have grown up with her — was simply enchanting.\n\nSET LIST\n\"The Man\"\n\"Lover\"\n\"Death by a Thousand Cuts\"\n\"All Too Well\"\n\nMUSICIAN\nTaylor Swift: vocals, guitar, piano\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, Natasha Branch; Videographers: Morgan Noelle Smith, Kara Frame, Maia Stern; Associate Producer: Bobby Carter; Production Assistants: Jack Corbett, Mito Habe-Evans; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann; Photo: Bob Boilen/NPR", "Taylor Swift: NPR Music Tiny Desk Concert", "1c788ca6-26cf-4bdc-b9df-23d6293dd684", 1739, false, "FvVnP8G6ITs", "https://www.youtube.com/watch?v=FvVnP8G6ITs", 29, "/downloads/Tiny Desk/2019-10-28 Taylor Swift: NPR Music Tiny Desk Concert/Taylor Swift: NPR Music Tiny Desk Concert [FvVnP8G6ITs].mp4", false, false, false, 2, [], 0, ~U[2019-10-28 09:00:02Z], ~U[2026-07-24 12:13:37Z], ~U[2026-07-24 12:13:37Z], "Watch Taylor Swift play \"The Man\", \"Lover\", \"Death by a Thousand Cuts\" and \"All Too Well\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nOct. 15, 2019 | Lyndsey McKenna -- As Taylor Swift settled in for her Tiny Desk, she looked out at the 300-plus NPR employees and guests. \"Wow! This is a lot of people in a tiny office!\" she said. \"I love it!\" Then, after introducing herself, she explained her objective: \"I just decided to take this as an opportunity to show you guys how the songs sounded when I first wrote them.\"\n\nIt should come as no surprise that someone who commands stadium stages could hold court in NPR Music's corner of our Washington, D.C., office — specifically, behind Bob Boilen's desk — but Swift was truly at home in stripped-down, solo-session mode. (\"It's just me. There's no dancers, unfortunately,\" she quipped.)\n\nOpening with an acoustic rendition of \"The Man,\" from her 2019 album, Lover, Swift delivered a critique of gender double standards with a sense of humor (and a perfectly deployed hair toss), Leonardo DiCaprio name check and all. Turning to the piano with a smile for Lover's title track, she explained the guitar-string scars of the song's bridge. Picking up the guitar again for \"Death by a Thousand Cuts,\" Swift confronted a question that she says has haunted her career: What will you ever do if you get happy? Across the song's run-on thoughts and relentless searching, Swift offered an answer: She'll continue to excel at crafting superb story-songs.\n\nThough most Tiny Desk concerts stop at three songs, we couldn't turn down the chance to hear \"All Too Well\" from Swift's 2012 album, Red. Routinely cited by critics and fans alike as a favorite, the beloved track has become the stuff of Swiftie legends, striking in its specificity (that scarf!) and relatable in a way that anyone who has loved and lost can understand.\n\nThat sense of connection is at the heart of it all. Some 800 Tiny Desk concerts since we published our very first back in April 2008, the aim remains the same: In the midst of meetings and conference calls, Tiny Desk concerts offer respite from the workday and opportunities to see artists reimagine their work in a strange setting. It's always special, but on some days, it feels downright magical. Watching Taylor Swift perform — and then interact with co-workers and guests who have grown up with her — was simply enchanting.\n\nSET LIST\n\"The Man\"\n\"Lover\"\n\"Death by a Thousand Cuts\"\n\"All Too Well\"\n\nMUSICIAN\nTaylor Swift: vocals, guitar, piano\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, Natasha Branch; Videographers: Morgan Noelle Smith, Kara Frame, Maia Stern; Associate Producer: Bobby Carter; Production Assistants: Jack Corbett, Mito Habe-Evans; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann; Photo: Bob Boilen/NPR", "Taylor Swift: NPR Music Tiny Desk Concert", 1739, false, "FvVnP8G6ITs", "https://www.youtube.com/watch?v=FvVnP8G6ITs", "/downloads/Tiny Desk/2019-10-28 Taylor Swift: NPR Music Tiny Desk Concert/Taylor Swift: NPR Music Tiny Desk Concert [FvVnP8G6ITs].mp4", false, 2, ~U[2019-10-28 09:00:02Z]] 14:13:37.159 [debug] QUERY OK source="sources" db=0.2ms idle=275.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:37.160 [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" = ?) [2] 14:13:37.160 [debug] QUERY OK source="media_items" db=0.4ms 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 [150] 14:13:37.160 [info] Kicking off download for media item #150 (FvVnP8G6ITs) 14:13:37.163 [debug] QUERY OK source="tasks" db=0.2ms idle=3.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [98, 150, ~U[2026-07-24 12:13:37Z], ~U[2026-07-24 12:13:37Z]] 14:13:37.163 [debug] Current batch of media processed. Will check again in 1000ms 14:13:38.163 [debug] Current batch of media processed. Will check again in 1000ms 14:13:39.165 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch Sting And Shaggy play \"Englishman in New York\", \"Don't Make Me Wait\" and \"Shape of My Heart/Lucid Dreams\" at the Tiny Desk.\n\nWatch Tiny Desk Concerts ONE WEEK before they go on YouTube at https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\n\nJuly 10, 2019 | Josh Rogosin -- Sting and Shaggy might not be the most likely musical pairing. But one thing is certain, they love playing each other's music. On a bright autumn morning, the legends arrived at the NPR Music office bleary-eyed yet excited to play for the diverse staff of Shaggy and Sting fans. What surprised many of my NPR colleagues is just how well the collaboration works.\n\nTheir success as a duo shouldn't come as a total shock. After all, pulsing through many Police songs (Sting's famed band of the '70s and '80s) is a Reggae backbeat. It's impossible not to hear the influence in classics like \"Walking On The Moon\" and \"So Lonely.\"\n\nShaggy (zoinks! - his nom de guerre comes from the Scooby-Doo cartoon character) was born in Kingston, Jamaica. He moved to New York when he was 18 and his music evokes only good vibes. The positive energy he brought to their opening song, \"Englishman [and Jamaican] In New York,\" had everyone in the room grinning ear to ear, \"early morning Reggae style,\" as he put it. After the tune, Sting announced \"I never sang that song before 8 PM... Ever!\"\n\nSting's familiar, raspy voice was accompanied by his battered 1957 Fender Precision bass he's plucked for over 25 years. His long-time guitarist and collaborator, Dominic Miller, strummed Reggae offbeats on acoustic guitar and co-wrote the hauntingly beautiful \"Shape Of My Heart.\" That song is mashed-up with Juice Wrld's \"Lucid Dream,\" sung by Gene Noble, offering a refreshing counter to Sting's nuanced melody.\n\nShaggy affectionately refers to his collaborator as \"Stingy,\" putting his arm around him mid-performance. It's easy to see the comradery that being on the road together affords these veteran musicians, to say nothing of the breath of fresh air they bring to each other's music.\n\nSET LIST\n\"Englishman in New York\"\n\"Don't Make Me Wait\"\n\"Shape of My Heart/Lucid Dreams\"\n\nMUSICIANS\nSting: vocals, bass, guitar; Shaggy: vocals; Dominic Miller: guitar; Gene Noble: vocals; Melissa Musique: vocals\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Beck Harlan; Editor: Kaylee Domzalski; Associate Producer: Bobby Carter; Photo: Cameron Pollack/NPR", "duration" => 875, "filename" => "/downloads/Tiny Desk/2019-07-17 Sting And Shaggy: NPR Music Tiny Desk Concert/Sting And Shaggy: NPR Music Tiny Desk Concert [bdneye4pzMw].mp4", "id" => "bdneye4pzMw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=bdneye4pzMw", "playlist_index" => 30, "timestamp" => 1563354004, "title" => "Sting And Shaggy: NPR Music Tiny Desk Concert", "upload_date" => "20190717"} 14:13:39.165 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=682.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:39.166 [debug] QUERY OK source="sources" db=0.4ms idle=682.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:39.167 [debug] QUERY OK source="media_items" db=0.4ms idle=683.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-07-17 09:00:04Z], 2] 14:13:39.168 [debug] QUERY OK source="media_items" db=1.2ms idle=684.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Sting And Shaggy play \"Englishman in New York\", \"Don't Make Me Wait\" and \"Shape of My Heart/Lucid Dreams\" at the Tiny Desk.\n\nWatch Tiny Desk Concerts ONE WEEK before they go on YouTube at https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\n\nJuly 10, 2019 | Josh Rogosin -- Sting and Shaggy might not be the most likely musical pairing. But one thing is certain, they love playing each other's music. On a bright autumn morning, the legends arrived at the NPR Music office bleary-eyed yet excited to play for the diverse staff of Shaggy and Sting fans. What surprised many of my NPR colleagues is just how well the collaboration works.\n\nTheir success as a duo shouldn't come as a total shock. After all, pulsing through many Police songs (Sting's famed band of the '70s and '80s) is a Reggae backbeat. It's impossible not to hear the influence in classics like \"Walking On The Moon\" and \"So Lonely.\"\n\nShaggy (zoinks! - his nom de guerre comes from the Scooby-Doo cartoon character) was born in Kingston, Jamaica. He moved to New York when he was 18 and his music evokes only good vibes. The positive energy he brought to their opening song, \"Englishman [and Jamaican] In New York,\" had everyone in the room grinning ear to ear, \"early morning Reggae style,\" as he put it. After the tune, Sting announced \"I never sang that song before 8 PM... Ever!\"\n\nSting's familiar, raspy voice was accompanied by his battered 1957 Fender Precision bass he's plucked for over 25 years. His long-time guitarist and collaborator, Dominic Miller, strummed Reggae offbeats on acoustic guitar and co-wrote the hauntingly beautiful \"Shape Of My Heart.\" That song is mashed-up with Juice Wrld's \"Lucid Dream,\" sung by Gene Noble, offering a refreshing counter to Sting's nuanced melody.\n\nShaggy affectionately refers to his collaborator as \"Stingy,\" putting his arm around him mid-performance. It's easy to see the comradery that being on the road together affords these veteran musicians, to say nothing of the breath of fresh air they bring to each other's music.\n\nSET LIST\n\"Englishman in New York\"\n\"Don't Make Me Wait\"\n\"Shape of My Heart/Lucid Dreams\"\n\nMUSICIANS\nSting: vocals, bass, guitar; Shaggy: vocals; Dominic Miller: guitar; Gene Noble: vocals; Melissa Musique: vocals\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Beck Harlan; Editor: Kaylee Domzalski; Associate Producer: Bobby Carter; Photo: Cameron Pollack/NPR", "Sting And Shaggy: NPR Music Tiny Desk Concert", "c4e3b19b-5eff-4c0a-9a39-c78487f883bf", 875, false, "bdneye4pzMw", "https://www.youtube.com/watch?v=bdneye4pzMw", 30, "/downloads/Tiny Desk/2019-07-17 Sting And Shaggy: NPR Music Tiny Desk Concert/Sting And Shaggy: NPR Music Tiny Desk Concert [bdneye4pzMw].mp4", false, false, false, 2, [], 0, ~U[2019-07-17 09:00:04Z], ~U[2026-07-24 12:13:39Z], ~U[2026-07-24 12:13:39Z], "Watch Sting And Shaggy play \"Englishman in New York\", \"Don't Make Me Wait\" and \"Shape of My Heart/Lucid Dreams\" at the Tiny Desk.\n\nWatch Tiny Desk Concerts ONE WEEK before they go on YouTube at https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\n\nJuly 10, 2019 | Josh Rogosin -- Sting and Shaggy might not be the most likely musical pairing. But one thing is certain, they love playing each other's music. On a bright autumn morning, the legends arrived at the NPR Music office bleary-eyed yet excited to play for the diverse staff of Shaggy and Sting fans. What surprised many of my NPR colleagues is just how well the collaboration works.\n\nTheir success as a duo shouldn't come as a total shock. After all, pulsing through many Police songs (Sting's famed band of the '70s and '80s) is a Reggae backbeat. It's impossible not to hear the influence in classics like \"Walking On The Moon\" and \"So Lonely.\"\n\nShaggy (zoinks! - his nom de guerre comes from the Scooby-Doo cartoon character) was born in Kingston, Jamaica. He moved to New York when he was 18 and his music evokes only good vibes. The positive energy he brought to their opening song, \"Englishman [and Jamaican] In New York,\" had everyone in the room grinning ear to ear, \"early morning Reggae style,\" as he put it. After the tune, Sting announced \"I never sang that song before 8 PM... Ever!\"\n\nSting's familiar, raspy voice was accompanied by his battered 1957 Fender Precision bass he's plucked for over 25 years. His long-time guitarist and collaborator, Dominic Miller, strummed Reggae offbeats on acoustic guitar and co-wrote the hauntingly beautiful \"Shape Of My Heart.\" That song is mashed-up with Juice Wrld's \"Lucid Dream,\" sung by Gene Noble, offering a refreshing counter to Sting's nuanced melody.\n\nShaggy affectionately refers to his collaborator as \"Stingy,\" putting his arm around him mid-performance. It's easy to see the comradery that being on the road together affords these veteran musicians, to say nothing of the breath of fresh air they bring to each other's music.\n\nSET LIST\n\"Englishman in New York\"\n\"Don't Make Me Wait\"\n\"Shape of My Heart/Lucid Dreams\"\n\nMUSICIANS\nSting: vocals, bass, guitar; Shaggy: vocals; Dominic Miller: guitar; Gene Noble: vocals; Melissa Musique: vocals\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Beck Harlan; Editor: Kaylee Domzalski; Associate Producer: Bobby Carter; Photo: Cameron Pollack/NPR", "Sting And Shaggy: NPR Music Tiny Desk Concert", 875, false, "bdneye4pzMw", "https://www.youtube.com/watch?v=bdneye4pzMw", "/downloads/Tiny Desk/2019-07-17 Sting And Shaggy: NPR Music Tiny Desk Concert/Sting And Shaggy: NPR Music Tiny Desk Concert [bdneye4pzMw].mp4", false, 2, ~U[2019-07-17 09:00:04Z]] 14:13:39.169 [debug] QUERY OK source="sources" db=0.6ms idle=283.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:39.170 [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" = ?) [2] 14:13:39.170 [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 [151] 14:13:39.170 [info] Kicking off download for media item #151 (bdneye4pzMw) 14:13:39.172 [debug] QUERY OK source="tasks" db=0.1ms idle=2.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [99, 151, ~U[2026-07-24 12:13:39Z], ~U[2026-07-24 12:13:39Z]] 14:13:39.172 [debug] Current batch of media processed. Will check again in 1000ms 14:13:40.173 [debug] Current batch of media processed. Will check again in 1000ms 14:13:41.175 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "April 1, 2019 | Robin Hilton -- This is probably the loosest you'll ever see Weezer. Known for meticulously produced — and electric — live shows, frontman Rivers Cuomo and the rest of the band settled in behind the Tiny Desk for an entirely acoustic set without the in-ear monitors, click track or vocal separation they usually employ to stay locked-in and tight for bigger performances. The result is surprisingly intimate, with songs that feel lived-in and rumpled, like an old flannel shirt from the '90s.\n\nWeezer opened with one of the band's rarer songs: \"Longtime Sunshine,\" a 1994 track that's only appeared as a Rivers Cuomo home recording on bootlegs and compilations, and on the deluxe edition of Pinkerton. Then the band performed a stripped-down version of its electro-pop song \"Living in L.A.,\" from Weezer's new self-titled \"Black Album,\" followed by another deep cut, \"Across the Sea.\" It's a song Cuomo originally wrote in his early 20s, inspired by a fan letter he'd received from a young woman in Japan. While beloved by many Gen-Xers who'd first heard it on 1996's Pinkerton, the song's lyrics haven't aged terribly well.\n\nWeezer returned to its newest material to close the set with \"High as a Kite,\" from the new album. A song of innocence and escapism, Cuomo sings about daydreaming and how he wants to disappear — which is exactly what the band did once the song was over, but not before Cuomo told the crowd, \"We are Weezer, from the planet Earth. Have a nice life!\"\n\nSET LIST\n\"Long Time Sunshine\"\n\"Living in L.A.\"\n\"Across the Sea\"\n\"High as a Kite\"\n\nMUSICIANS\nRivers Cuomo: lead vocals, guitar; Brian Bell: guitar, vocals, keys; Scott Shriner: bass guitar; Patrick Wilson: drums\n\nCREDITS\nProducers: Robin Hilton, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Beck Harlan, Kimani Oletu; Associate Producer: Bobby Carter; Production Assistant: Adelaide Sandstrom; Photo: Amr Alfiky/NPR", "duration" => 952, "filename" => "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].mp4", "id" => "t8UKQJZsv4o", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=t8UKQJZsv4o", "playlist_index" => 31, "timestamp" => 1554800407, "title" => "Weezer: NPR Music Tiny Desk Concert", "upload_date" => "20190409"} 14:13:41.176 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=692.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:41.177 [debug] QUERY OK source="sources" db=0.4ms idle=693.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:41.177 [debug] QUERY OK source="media_items" db=0.4ms idle=694.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-04-09 09:00:07Z], 2] 14:13:41.179 [debug] QUERY OK source="media_items" db=1.5ms idle=695.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["April 1, 2019 | Robin Hilton -- This is probably the loosest you'll ever see Weezer. Known for meticulously produced — and electric — live shows, frontman Rivers Cuomo and the rest of the band settled in behind the Tiny Desk for an entirely acoustic set without the in-ear monitors, click track or vocal separation they usually employ to stay locked-in and tight for bigger performances. The result is surprisingly intimate, with songs that feel lived-in and rumpled, like an old flannel shirt from the '90s.\n\nWeezer opened with one of the band's rarer songs: \"Longtime Sunshine,\" a 1994 track that's only appeared as a Rivers Cuomo home recording on bootlegs and compilations, and on the deluxe edition of Pinkerton. Then the band performed a stripped-down version of its electro-pop song \"Living in L.A.,\" from Weezer's new self-titled \"Black Album,\" followed by another deep cut, \"Across the Sea.\" It's a song Cuomo originally wrote in his early 20s, inspired by a fan letter he'd received from a young woman in Japan. While beloved by many Gen-Xers who'd first heard it on 1996's Pinkerton, the song's lyrics haven't aged terribly well.\n\nWeezer returned to its newest material to close the set with \"High as a Kite,\" from the new album. A song of innocence and escapism, Cuomo sings about daydreaming and how he wants to disappear — which is exactly what the band did once the song was over, but not before Cuomo told the crowd, \"We are Weezer, from the planet Earth. Have a nice life!\"\n\nSET LIST\n\"Long Time Sunshine\"\n\"Living in L.A.\"\n\"Across the Sea\"\n\"High as a Kite\"\n\nMUSICIANS\nRivers Cuomo: lead vocals, guitar; Brian Bell: guitar, vocals, keys; Scott Shriner: bass guitar; Patrick Wilson: drums\n\nCREDITS\nProducers: Robin Hilton, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Beck Harlan, Kimani Oletu; Associate Producer: Bobby Carter; Production Assistant: Adelaide Sandstrom; Photo: Amr Alfiky/NPR", "Weezer: NPR Music Tiny Desk Concert", "88fd62a9-eec5-4e20-9042-9010e0c78e38", 952, false, "t8UKQJZsv4o", "https://www.youtube.com/watch?v=t8UKQJZsv4o", 31, "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].mp4", false, false, false, 2, [], 0, ~U[2019-04-09 09:00:07Z], ~U[2026-07-24 12:13:41Z], ~U[2026-07-24 12:13:41Z], "April 1, 2019 | Robin Hilton -- This is probably the loosest you'll ever see Weezer. Known for meticulously produced — and electric — live shows, frontman Rivers Cuomo and the rest of the band settled in behind the Tiny Desk for an entirely acoustic set without the in-ear monitors, click track or vocal separation they usually employ to stay locked-in and tight for bigger performances. The result is surprisingly intimate, with songs that feel lived-in and rumpled, like an old flannel shirt from the '90s.\n\nWeezer opened with one of the band's rarer songs: \"Longtime Sunshine,\" a 1994 track that's only appeared as a Rivers Cuomo home recording on bootlegs and compilations, and on the deluxe edition of Pinkerton. Then the band performed a stripped-down version of its electro-pop song \"Living in L.A.,\" from Weezer's new self-titled \"Black Album,\" followed by another deep cut, \"Across the Sea.\" It's a song Cuomo originally wrote in his early 20s, inspired by a fan letter he'd received from a young woman in Japan. While beloved by many Gen-Xers who'd first heard it on 1996's Pinkerton, the song's lyrics haven't aged terribly well.\n\nWeezer returned to its newest material to close the set with \"High as a Kite,\" from the new album. A song of innocence and escapism, Cuomo sings about daydreaming and how he wants to disappear — which is exactly what the band did once the song was over, but not before Cuomo told the crowd, \"We are Weezer, from the planet Earth. Have a nice life!\"\n\nSET LIST\n\"Long Time Sunshine\"\n\"Living in L.A.\"\n\"Across the Sea\"\n\"High as a Kite\"\n\nMUSICIANS\nRivers Cuomo: lead vocals, guitar; Brian Bell: guitar, vocals, keys; Scott Shriner: bass guitar; Patrick Wilson: drums\n\nCREDITS\nProducers: Robin Hilton, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Beck Harlan, Kimani Oletu; Associate Producer: Bobby Carter; Production Assistant: Adelaide Sandstrom; Photo: Amr Alfiky/NPR", "Weezer: NPR Music Tiny Desk Concert", 952, false, "t8UKQJZsv4o", "https://www.youtube.com/watch?v=t8UKQJZsv4o", "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].mp4", false, 2, ~U[2019-04-09 09:00:07Z]] 14:13:41.180 [debug] QUERY OK source="sources" db=0.3ms idle=286.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:41.180 [debug] QUERY OK source="media_profiles" db=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" = ?) [2] 14:13:41.181 [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 [152] 14:13:41.181 [info] Kicking off download for media item #152 (t8UKQJZsv4o) 14:13:41.183 [debug] QUERY OK source="tasks" db=0.3ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [100, 152, ~U[2026-07-24 12:13:41Z], ~U[2026-07-24 12:13:41Z]] 14:13:41.183 [debug] Current batch of media processed. Will check again in 1000ms 14:13:42.184 [debug] Current batch of media processed. Will check again in 1000ms 14:13:43.186 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Oct. 16, 2018 | Josh Rogosin -- Her nervousness was palpable and stood in stark contrast to her fully produced stage show. \"I'm sorry I'm shy,\" Florence Welch told the crowd of NPR family and friends gathered for her Tiny Desk performance. \"If this was a big gig, I'd probably be climbing all over here and running around.\"\n\nOpening with the song \"June,\" from Florence + the Machine's 2018 album High As Hope, Florence performed with her eyes closed. By the end of the three-song set, she fully embraced the experience and gave in to the rapturous audience. Within seconds of hearing her first note, the raw power of her un-amplified voice was chilling.\n\nIt's impossible to talk about Florence without her backing band. Tom Monger adds exquisite ethereal textures to the songs with his stunning mastery of the pedal harp. Hazel Mill's backing vocals and anthemic power chords on the keys accentuate the poignancy of the lyrics at just the right moments. And Robert Ackroyd's rhythmic, steady acoustic guitar drives the music forward.\n\nBut the intensity of the musicality is almost secondary to the message in her lyrics. Ear-worm melodies coupled with repetitive phrases create universal, awe-inspiring anthems. At the end of her first song, Florence implored the crowd to hold on to each other. In \"Patricia,\" she insisted it's such a wonderful thing to love. After 14 enchanting minutes, it's impossible to disagree.\n\nSet List\n\"June\"\n\"Patricia\"\n\"Ship to Wreck\"\n\nMusicians\nFlorence Welch (Vocals), Tom Monger (Pedal Harp), Hazel Mills (Keyboard and Vocals), Robert Ackroyd (Guitar)\n\nCredits\nProducers: Bob Boilen, Josh Rogosin, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Kaylee Domzalski; Production Assistant: Brie Martin; Photo: Heather Kim/NPR", "duration" => 842, "filename" => "/downloads/Tiny Desk/2018-10-22 Florence + the Machine: NPR Music Tiny Desk Concert/Florence + the Machine: NPR Music Tiny Desk Concert [EkPrXL-H5Qc].mp4", "id" => "EkPrXL-H5Qc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=EkPrXL-H5Qc", "playlist_index" => 32, "timestamp" => 1540198802, "title" => "Florence + the Machine: NPR Music Tiny Desk Concert", "upload_date" => "20181022"} 14:13:43.186 [debug] QUERY OK source="sources" db=0.2ms idle=703.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:43.187 [debug] QUERY OK source="sources" db=0.2ms idle=704.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:43.187 [debug] QUERY OK source="media_items" db=0.4ms idle=704.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2018-10-22 09:00:02Z], 2] 14:13:43.189 [debug] QUERY OK source="media_items" db=1.2ms idle=705.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Oct. 16, 2018 | Josh Rogosin -- Her nervousness was palpable and stood in stark contrast to her fully produced stage show. \"I'm sorry I'm shy,\" Florence Welch told the crowd of NPR family and friends gathered for her Tiny Desk performance. \"If this was a big gig, I'd probably be climbing all over here and running around.\"\n\nOpening with the song \"June,\" from Florence + the Machine's 2018 album High As Hope, Florence performed with her eyes closed. By the end of the three-song set, she fully embraced the experience and gave in to the rapturous audience. Within seconds of hearing her first note, the raw power of her un-amplified voice was chilling.\n\nIt's impossible to talk about Florence without her backing band. Tom Monger adds exquisite ethereal textures to the songs with his stunning mastery of the pedal harp. Hazel Mill's backing vocals and anthemic power chords on the keys accentuate the poignancy of the lyrics at just the right moments. And Robert Ackroyd's rhythmic, steady acoustic guitar drives the music forward.\n\nBut the intensity of the musicality is almost secondary to the message in her lyrics. Ear-worm melodies coupled with repetitive phrases create universal, awe-inspiring anthems. At the end of her first song, Florence implored the crowd to hold on to each other. In \"Patricia,\" she insisted it's such a wonderful thing to love. After 14 enchanting minutes, it's impossible to disagree.\n\nSet List\n\"June\"\n\"Patricia\"\n\"Ship to Wreck\"\n\nMusicians\nFlorence Welch (Vocals), Tom Monger (Pedal Harp), Hazel Mills (Keyboard and Vocals), Robert Ackroyd (Guitar)\n\nCredits\nProducers: Bob Boilen, Josh Rogosin, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Kaylee Domzalski; Production Assistant: Brie Martin; Photo: Heather Kim/NPR", "Florence + the Machine: NPR Music Tiny Desk Concert", "a2b32bf3-7ae8-41fb-b59e-794f9f7ae3cf", 842, false, "EkPrXL-H5Qc", "https://www.youtube.com/watch?v=EkPrXL-H5Qc", 32, "/downloads/Tiny Desk/2018-10-22 Florence + the Machine: NPR Music Tiny Desk Concert/Florence + the Machine: NPR Music Tiny Desk Concert [EkPrXL-H5Qc].mp4", false, false, false, 2, [], 0, ~U[2018-10-22 09:00:02Z], ~U[2026-07-24 12:13:43Z], ~U[2026-07-24 12:13:43Z], "Oct. 16, 2018 | Josh Rogosin -- Her nervousness was palpable and stood in stark contrast to her fully produced stage show. \"I'm sorry I'm shy,\" Florence Welch told the crowd of NPR family and friends gathered for her Tiny Desk performance. \"If this was a big gig, I'd probably be climbing all over here and running around.\"\n\nOpening with the song \"June,\" from Florence + the Machine's 2018 album High As Hope, Florence performed with her eyes closed. By the end of the three-song set, she fully embraced the experience and gave in to the rapturous audience. Within seconds of hearing her first note, the raw power of her un-amplified voice was chilling.\n\nIt's impossible to talk about Florence without her backing band. Tom Monger adds exquisite ethereal textures to the songs with his stunning mastery of the pedal harp. Hazel Mill's backing vocals and anthemic power chords on the keys accentuate the poignancy of the lyrics at just the right moments. And Robert Ackroyd's rhythmic, steady acoustic guitar drives the music forward.\n\nBut the intensity of the musicality is almost secondary to the message in her lyrics. Ear-worm melodies coupled with repetitive phrases create universal, awe-inspiring anthems. At the end of her first song, Florence implored the crowd to hold on to each other. In \"Patricia,\" she insisted it's such a wonderful thing to love. After 14 enchanting minutes, it's impossible to disagree.\n\nSet List\n\"June\"\n\"Patricia\"\n\"Ship to Wreck\"\n\nMusicians\nFlorence Welch (Vocals), Tom Monger (Pedal Harp), Hazel Mills (Keyboard and Vocals), Robert Ackroyd (Guitar)\n\nCredits\nProducers: Bob Boilen, Josh Rogosin, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Kaylee Domzalski; Production Assistant: Brie Martin; Photo: Heather Kim/NPR", "Florence + the Machine: NPR Music Tiny Desk Concert", 842, false, "EkPrXL-H5Qc", "https://www.youtube.com/watch?v=EkPrXL-H5Qc", "/downloads/Tiny Desk/2018-10-22 Florence + the Machine: NPR Music Tiny Desk Concert/Florence + the Machine: NPR Music Tiny Desk Concert [EkPrXL-H5Qc].mp4", false, 2, ~U[2018-10-22 09:00:02Z]] 14:13:43.189 [debug] QUERY OK source="sources" db=0.1ms idle=290.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:43.190 [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" = ?) [2] 14:13:43.190 [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 [153] 14:13:43.190 [info] Kicking off download for media item #153 (EkPrXL-H5Qc) 14:13:43.192 [debug] QUERY OK source="tasks" db=0.1ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [101, 153, ~U[2026-07-24 12:13:43Z], ~U[2026-07-24 12:13:43Z]] 14:13:43.192 [debug] Current batch of media processed. Will check again in 1000ms 14:13:44.192 [debug] Current batch of media processed. Will check again in 1000ms 14:13:45.194 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Sept. 12, 2018 | Bob Boilen -- Hobo Johnson and the Lovemakers accomplished something remarkable this year with their Tiny Desk Contest entry. They made a simple backyard video - a single camera shoot - that's now been seen almost 10 million times on YouTube. And the song they played, \"Peach Scone,\" has unlocked a door to a dream - to play a Tiny Desk Concert and be heard. The song is a tale of one-sided love - a tale of kindness in the face of loneliness and depression. Now, \"a couple of kids - five I guess\" as its lyrics go, get to bring their creative, urgent and somewhat nervous energy from Sacramento, Calif. to play \"Peach Scone\" and more to millions of other listeners.\n\nThis is a band always on the verge of emotional explosions, all while Frank Lopes, aka Hobo Johnson, is quoting Shakespeare and making references to Jay-Z, The Front Bottoms song \"Twin Size Mattress\" and so much more.\n\nThe directness in their music, with its chorus shouts (\"Damn I love those sandwiches!\") and the little asides (\"I got a duvet the other day - how do you wash a blanket? In a washer? That's what I found out\") make for a remarkably personal performance. At times it's as much a storytelling session or personal confession than a musical performance, and for me it conjures feelings of empathy and understanding and compassion.\n\nSet List\n\"Romeo & Juliet\"\n\"Sex in the City\"\n\"Peach Scone\"\n\"Creve Coeur 1\"\n\nCredits\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, CJ Riculan; Editor: Production Assistant: Ema Sagner; Photo: John Poole", "duration" => 921, "filename" => "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].mp4", "id" => "A8a2EosJIbM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=A8a2EosJIbM", "playlist_index" => 33, "timestamp" => 1537347600, "title" => "Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert", "upload_date" => "20180919"} 14:13:45.194 [debug] QUERY OK source="sources" db=0.3ms idle=711.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:45.195 [debug] QUERY OK source="sources" db=0.1ms idle=712.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:45.195 [debug] QUERY OK source="media_items" db=0.2ms idle=712.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2018-09-19 09:00:00Z], 2] 14:13:45.197 [debug] QUERY OK source="media_items" db=1.1ms idle=712.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sept. 12, 2018 | Bob Boilen -- Hobo Johnson and the Lovemakers accomplished something remarkable this year with their Tiny Desk Contest entry. They made a simple backyard video - a single camera shoot - that's now been seen almost 10 million times on YouTube. And the song they played, \"Peach Scone,\" has unlocked a door to a dream - to play a Tiny Desk Concert and be heard. The song is a tale of one-sided love - a tale of kindness in the face of loneliness and depression. Now, \"a couple of kids - five I guess\" as its lyrics go, get to bring their creative, urgent and somewhat nervous energy from Sacramento, Calif. to play \"Peach Scone\" and more to millions of other listeners.\n\nThis is a band always on the verge of emotional explosions, all while Frank Lopes, aka Hobo Johnson, is quoting Shakespeare and making references to Jay-Z, The Front Bottoms song \"Twin Size Mattress\" and so much more.\n\nThe directness in their music, with its chorus shouts (\"Damn I love those sandwiches!\") and the little asides (\"I got a duvet the other day - how do you wash a blanket? In a washer? That's what I found out\") make for a remarkably personal performance. At times it's as much a storytelling session or personal confession than a musical performance, and for me it conjures feelings of empathy and understanding and compassion.\n\nSet List\n\"Romeo & Juliet\"\n\"Sex in the City\"\n\"Peach Scone\"\n\"Creve Coeur 1\"\n\nCredits\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, CJ Riculan; Editor: Production Assistant: Ema Sagner; Photo: John Poole", "Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert", "65cedd42-ba3f-46d0-875d-bfcfaf6f236c", 921, false, "A8a2EosJIbM", "https://www.youtube.com/watch?v=A8a2EosJIbM", 33, "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].mp4", false, false, false, 2, [], 0, ~U[2018-09-19 09:00:00Z], ~U[2026-07-24 12:13:45Z], ~U[2026-07-24 12:13:45Z], "Sept. 12, 2018 | Bob Boilen -- Hobo Johnson and the Lovemakers accomplished something remarkable this year with their Tiny Desk Contest entry. They made a simple backyard video - a single camera shoot - that's now been seen almost 10 million times on YouTube. And the song they played, \"Peach Scone,\" has unlocked a door to a dream - to play a Tiny Desk Concert and be heard. The song is a tale of one-sided love - a tale of kindness in the face of loneliness and depression. Now, \"a couple of kids - five I guess\" as its lyrics go, get to bring their creative, urgent and somewhat nervous energy from Sacramento, Calif. to play \"Peach Scone\" and more to millions of other listeners.\n\nThis is a band always on the verge of emotional explosions, all while Frank Lopes, aka Hobo Johnson, is quoting Shakespeare and making references to Jay-Z, The Front Bottoms song \"Twin Size Mattress\" and so much more.\n\nThe directness in their music, with its chorus shouts (\"Damn I love those sandwiches!\") and the little asides (\"I got a duvet the other day - how do you wash a blanket? In a washer? That's what I found out\") make for a remarkably personal performance. At times it's as much a storytelling session or personal confession than a musical performance, and for me it conjures feelings of empathy and understanding and compassion.\n\nSet List\n\"Romeo & Juliet\"\n\"Sex in the City\"\n\"Peach Scone\"\n\"Creve Coeur 1\"\n\nCredits\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, CJ Riculan; Editor: Production Assistant: Ema Sagner; Photo: John Poole", "Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert", 921, false, "A8a2EosJIbM", "https://www.youtube.com/watch?v=A8a2EosJIbM", "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].mp4", false, 2, ~U[2018-09-19 09:00:00Z]] 14:13:45.197 [debug] QUERY OK source="sources" db=0.2ms idle=292.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:45.197 [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" = ?) [2] 14:13:45.198 [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 [154] 14:13:45.198 [info] Kicking off download for media item #154 (A8a2EosJIbM) 14:13:45.199 [debug] QUERY OK source="tasks" db=0.1ms idle=1.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [102, 154, ~U[2026-07-24 12:13:45Z], ~U[2026-07-24 12:13:45Z]] 14:13:45.199 [debug] Current batch of media processed. Will check again in 1000ms 14:13:46.199 [debug] Current batch of media processed. Will check again in 1000ms 14:13:47.200 [debug] Current batch of media processed. Will check again in 1000ms 14:13:48.202 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This Latinx Heritage Month Tiny Desk is celebrating with an 'El Tiny' takeover, featuring a wide array of artists from all corners of Latinidad.\n\nFelix Contreras | October 13, 2023\nThe Tiny Desk had a considerable pop sheen when vocalist Becky G took her place alongside a backing band featuring a string quartet. The stripped down sound of some of her biggest hits offered a rare view of her artistry.\n\n\"BAILÉ CON MI EX\" is the perfect example of an unforgettable hook. It had the NPR staff audience bopping in place for what she described as a \"warm up\" for the rest of her set. \"MAMII\" was originally recorded with Karol G, but performed alone, and the Tiny Desk version was no less a scorcher. Here, interplay with guitarist Justice West at the beginning set the temperature for a slow burn.\n\nThe showstopper is her duet with vocalist DannyLux, \"CRIES IN SPANISH,\" a song they did together on her latest album, Esquinas. I have to admit that when he started his part of the song, it was apparent that their voices were kind of made for eachother. And by the time she obliged us with her Tiny Desk concert take on \"Shower,\" she had cast her spell: I ended up singing that chorus for the rest of the day.\n\nSET LIST\n\"BAILÉ CON MI EX\"\n\"MAMIII\"\n\"CRIES IN SPANISH\" (feat. DannyLux)\n\"Shower\"\n\nMUSICIANS\nBecky G: lead vocals\nMarcus Thomas: drums\nJustus West: guitar\nJames Morales: keys\nEric Whatley: bass\nOlivia Tapia: vocals\nCrystal Osorio: vocals\nNjioma Grevious: violin\nRyo Usami: violin\nBethlehem Hadgu: viola\nMaxfield Fisher: cello\n\nTINY DESK TEAM\nProducer: Anamaria Sayre\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Elizabeth Gillis, Zayrha Rodriguez\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Keren Carrión\nTiny Desk Team: Suraya Mohamed, Joshua Bryant, Hazel Cills \nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #beckyg", "duration" => 1261, "filename" => "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].mp4", "id" => "FftvVi42U4o", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=FftvVi42U4o", "playlist_index" => 34, "timestamp" => 1697212807, "title" => "Becky G: Tiny Desk Concert", "upload_date" => "20231013"} 14:13:48.203 [debug] QUERY OK source="sources" db=0.2ms idle=1719.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:48.203 [debug] QUERY OK source="sources" db=0.5ms idle=1720.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:48.204 [debug] QUERY OK source="media_items" db=0.5ms idle=1721.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-10-13 16:00:07Z], 2] 14:13:48.206 [debug] QUERY OK source="media_items" db=1.4ms idle=1297.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This Latinx Heritage Month Tiny Desk is celebrating with an 'El Tiny' takeover, featuring a wide array of artists from all corners of Latinidad.\n\nFelix Contreras | October 13, 2023\nThe Tiny Desk had a considerable pop sheen when vocalist Becky G took her place alongside a backing band featuring a string quartet. The stripped down sound of some of her biggest hits offered a rare view of her artistry.\n\n\"BAILÉ CON MI EX\" is the perfect example of an unforgettable hook. It had the NPR staff audience bopping in place for what she described as a \"warm up\" for the rest of her set. \"MAMII\" was originally recorded with Karol G, but performed alone, and the Tiny Desk version was no less a scorcher. Here, interplay with guitarist Justice West at the beginning set the temperature for a slow burn.\n\nThe showstopper is her duet with vocalist DannyLux, \"CRIES IN SPANISH,\" a song they did together on her latest album, Esquinas. I have to admit that when he started his part of the song, it was apparent that their voices were kind of made for eachother. And by the time she obliged us with her Tiny Desk concert take on \"Shower,\" she had cast her spell: I ended up singing that chorus for the rest of the day.\n\nSET LIST\n\"BAILÉ CON MI EX\"\n\"MAMIII\"\n\"CRIES IN SPANISH\" (feat. DannyLux)\n\"Shower\"\n\nMUSICIANS\nBecky G: lead vocals\nMarcus Thomas: drums\nJustus West: guitar\nJames Morales: keys\nEric Whatley: bass\nOlivia Tapia: vocals\nCrystal Osorio: vocals\nNjioma Grevious: violin\nRyo Usami: violin\nBethlehem Hadgu: viola\nMaxfield Fisher: cello\n\nTINY DESK TEAM\nProducer: Anamaria Sayre\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Elizabeth Gillis, Zayrha Rodriguez\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Keren Carrión\nTiny Desk Team: Suraya Mohamed, Joshua Bryant, Hazel Cills \nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #beckyg", "Becky G: Tiny Desk Concert", "3aeb03a5-3336-40a1-bca1-9b923c0b5c30", 1261, false, "FftvVi42U4o", "https://www.youtube.com/watch?v=FftvVi42U4o", 34, "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].mp4", false, false, false, 2, [], 0, ~U[2023-10-13 16:00:07Z], ~U[2026-07-24 12:13:48Z], ~U[2026-07-24 12:13:48Z], "This Latinx Heritage Month Tiny Desk is celebrating with an 'El Tiny' takeover, featuring a wide array of artists from all corners of Latinidad.\n\nFelix Contreras | October 13, 2023\nThe Tiny Desk had a considerable pop sheen when vocalist Becky G took her place alongside a backing band featuring a string quartet. The stripped down sound of some of her biggest hits offered a rare view of her artistry.\n\n\"BAILÉ CON MI EX\" is the perfect example of an unforgettable hook. It had the NPR staff audience bopping in place for what she described as a \"warm up\" for the rest of her set. \"MAMII\" was originally recorded with Karol G, but performed alone, and the Tiny Desk version was no less a scorcher. Here, interplay with guitarist Justice West at the beginning set the temperature for a slow burn.\n\nThe showstopper is her duet with vocalist DannyLux, \"CRIES IN SPANISH,\" a song they did together on her latest album, Esquinas. I have to admit that when he started his part of the song, it was apparent that their voices were kind of made for eachother. And by the time she obliged us with her Tiny Desk concert take on \"Shower,\" she had cast her spell: I ended up singing that chorus for the rest of the day.\n\nSET LIST\n\"BAILÉ CON MI EX\"\n\"MAMIII\"\n\"CRIES IN SPANISH\" (feat. DannyLux)\n\"Shower\"\n\nMUSICIANS\nBecky G: lead vocals\nMarcus Thomas: drums\nJustus West: guitar\nJames Morales: keys\nEric Whatley: bass\nOlivia Tapia: vocals\nCrystal Osorio: vocals\nNjioma Grevious: violin\nRyo Usami: violin\nBethlehem Hadgu: viola\nMaxfield Fisher: cello\n\nTINY DESK TEAM\nProducer: Anamaria Sayre\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Elizabeth Gillis, Zayrha Rodriguez\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Keren Carrión\nTiny Desk Team: Suraya Mohamed, Joshua Bryant, Hazel Cills \nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #beckyg", "Becky G: Tiny Desk Concert", 1261, false, "FftvVi42U4o", "https://www.youtube.com/watch?v=FftvVi42U4o", "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].mp4", false, 2, ~U[2023-10-13 16:00:07Z]] 14:13:48.207 [debug] QUERY OK source="sources" db=0.5ms idle=298.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:48.207 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:48.208 [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 [155] 14:13:48.208 [info] Kicking off download for media item #155 (FftvVi42U4o) 14:13:48.210 [debug] QUERY OK source="tasks" db=0.4ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [103, 155, ~U[2026-07-24 12:13:48Z], ~U[2026-07-24 12:13:48Z]] 14:13:48.210 [debug] Current batch of media processed. Will check again in 1000ms 14:13:49.211 [debug] Current batch of media processed. Will check again in 1000ms 14:13:50.213 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "November 09, 2015 by BOB BOILEN The first time I saw Aurora sing, it appeared so new to her that each note, and each hand gesture accompanying each note, seemed like a discovery and an adventure for the singer. She was 18 when I first saw her in New York City, and now the Norwegian singer is 19; take a look at this Tiny Desk Concert, and her sense of innocence and discovery still rings as true as ever.\n\nAurora has just one EP and some singles out so far, and ever since seeing her at CMJ in 2014, I've been eager for her debut album. Early next year, we should finally have it — as well as more chances to see Aurora live, as she plans on touring the U.S. in the spring.\n\nRunning With The Wolves is available now. iTunes:\nhttps://itunes.apple.com/us/album/running-with-the-wolves-ep/id987008667\nAmazon: http://www.amazon.com/Running-With-Wolves-Ep-AURORA/dp/B00WTJK47Y\n\nSet List\n\"Runaway\"\n\"Murder Song (5, 4, 3, 2, 1)\"\n\"Running With The Wolves\"\n\nCredits\nProducers: Bob Boilen, Morgan Walker; Audio Engineer: Brian Jarboe; Videographers: Morgan Walker, Morgan McCloy; Production Assistant: Lani Milton; Photo by Hadas/NPR\n\nFor more Tiny Desks, subscribe to our podcast:\nhttp://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "duration" => 801, "filename" => "/downloads/Tiny Desk/2015-11-09 Aurora: NPR Music Tiny Desk Concert/Aurora: NPR Music Tiny Desk Concert [evBgLWQwAFA].mp4", "id" => "evBgLWQwAFA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=evBgLWQwAFA", "playlist_index" => 35, "timestamp" => 1447097771, "title" => "Aurora: NPR Music Tiny Desk Concert", "upload_date" => "20151109"} 14:13:50.213 [debug] QUERY OK source="sources" db=0.2ms idle=730.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:50.213 [debug] QUERY OK source="sources" db=0.1ms idle=730.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:50.214 [debug] QUERY OK source="media_items" db=0.2ms idle=731.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2015-11-09 19:36:11Z], 2] 14:13:50.215 [debug] QUERY OK source="media_items" db=0.8ms idle=731.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["November 09, 2015 by BOB BOILEN The first time I saw Aurora sing, it appeared so new to her that each note, and each hand gesture accompanying each note, seemed like a discovery and an adventure for the singer. She was 18 when I first saw her in New York City, and now the Norwegian singer is 19; take a look at this Tiny Desk Concert, and her sense of innocence and discovery still rings as true as ever.\n\nAurora has just one EP and some singles out so far, and ever since seeing her at CMJ in 2014, I've been eager for her debut album. Early next year, we should finally have it — as well as more chances to see Aurora live, as she plans on touring the U.S. in the spring.\n\nRunning With The Wolves is available now. iTunes:\nhttps://itunes.apple.com/us/album/running-with-the-wolves-ep/id987008667\nAmazon: http://www.amazon.com/Running-With-Wolves-Ep-AURORA/dp/B00WTJK47Y\n\nSet List\n\"Runaway\"\n\"Murder Song (5, 4, 3, 2, 1)\"\n\"Running With The Wolves\"\n\nCredits\nProducers: Bob Boilen, Morgan Walker; Audio Engineer: Brian Jarboe; Videographers: Morgan Walker, Morgan McCloy; Production Assistant: Lani Milton; Photo by Hadas/NPR\n\nFor more Tiny Desks, subscribe to our podcast:\nhttp://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Aurora: NPR Music Tiny Desk Concert", "5dd75398-5ce8-4555-9d93-c8ff200cc5fe", 801, false, "evBgLWQwAFA", "https://www.youtube.com/watch?v=evBgLWQwAFA", 35, "/downloads/Tiny Desk/2015-11-09 Aurora: NPR Music Tiny Desk Concert/Aurora: NPR Music Tiny Desk Concert [evBgLWQwAFA].mp4", false, false, false, 2, [], 0, ~U[2015-11-09 19:36:11Z], ~U[2026-07-24 12:13:50Z], ~U[2026-07-24 12:13:50Z], "November 09, 2015 by BOB BOILEN The first time I saw Aurora sing, it appeared so new to her that each note, and each hand gesture accompanying each note, seemed like a discovery and an adventure for the singer. She was 18 when I first saw her in New York City, and now the Norwegian singer is 19; take a look at this Tiny Desk Concert, and her sense of innocence and discovery still rings as true as ever.\n\nAurora has just one EP and some singles out so far, and ever since seeing her at CMJ in 2014, I've been eager for her debut album. Early next year, we should finally have it — as well as more chances to see Aurora live, as she plans on touring the U.S. in the spring.\n\nRunning With The Wolves is available now. iTunes:\nhttps://itunes.apple.com/us/album/running-with-the-wolves-ep/id987008667\nAmazon: http://www.amazon.com/Running-With-Wolves-Ep-AURORA/dp/B00WTJK47Y\n\nSet List\n\"Runaway\"\n\"Murder Song (5, 4, 3, 2, 1)\"\n\"Running With The Wolves\"\n\nCredits\nProducers: Bob Boilen, Morgan Walker; Audio Engineer: Brian Jarboe; Videographers: Morgan Walker, Morgan McCloy; Production Assistant: Lani Milton; Photo by Hadas/NPR\n\nFor more Tiny Desks, subscribe to our podcast:\nhttp://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Aurora: NPR Music Tiny Desk Concert", 801, false, "evBgLWQwAFA", "https://www.youtube.com/watch?v=evBgLWQwAFA", "/downloads/Tiny Desk/2015-11-09 Aurora: NPR Music Tiny Desk Concert/Aurora: NPR Music Tiny Desk Concert [evBgLWQwAFA].mp4", false, 2, ~U[2015-11-09 19:36:11Z]] 14:13:50.215 [debug] QUERY OK source="sources" db=0.1ms idle=303.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:50.216 [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" = ?) [2] 14:13:50.216 [debug] QUERY OK source="media_items" db=0.3ms idle=2.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [156] 14:13:50.216 [info] Kicking off download for media item #156 (evBgLWQwAFA) 14:13:50.218 [debug] QUERY OK source="tasks" db=0.1ms idle=2.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [104, 156, ~U[2026-07-24 12:13:50Z], ~U[2026-07-24 12:13:50Z]] 14:13:50.218 [debug] Current batch of media processed. Will check again in 1000ms 14:13:50.966 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LgsQCntqCBAdGUNgIyMBTwcYLDtOIyIwbzVnN5BVov3PYJs7eWjIvTM_", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:13:51.218 [debug] Current batch of media processed. Will check again in 1000ms 14:13:52.219 [debug] Current batch of media processed. Will check again in 1000ms 14:13:52.564 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:53.221 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch T-Pain play \"Buy U A Drank (Shawty Snappin')\", \"Up Down (Do This All Day)\" and \"Drankin' Patna\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nT-Pain's fingerprints are all over pop and R&B and hip-hop. He wasn't the first musician to use Auto-Tune as an instrument — he noticed it on a Jennifer Lopez remix, and remembers \"Deep\" well — but it was, as he says, his style. For a while, in the mid-2000s, he lived at the top of the charts. He dominated that brief moment of our lives when ringtones were a thing. He was celebrated as an innovator, and he happily took his talents where he was invited, which was everywhere.\n\nBut somewhere along the way, somebody got it twisted. \"People felt like I was using it to sound good,\" says T-Pain, in an interview that will air on All Things Considered. \"But I was just using it to sound different.”\n\nHe just turned 30, but T-Pain has already done enough to drop a greatest hits album next week. We asked him if he'd grace the Tiny Desk without any embellishment or effects to show what's really made his career: his voice, and those songs.--FRANNIE KELLEY \n\nSET LIST\n\"Buy U A Drank (Shawty Snappin')\"\n\"Up Down (Do This All Day)\"\n\"Drankin' Patna\"\n\nCREDITS\nProducers: Frannie Kelley, Maggie Starbard; Editor: Maggie Starbard; Audio Engineer: Kevin Wait; Videographers: Colin Marshall, Maggie Starbard; Production Assistant: Susan Hale Thomas; photo by Maggie Starbard/NPR", "duration" => 828, "filename" => "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].mp4", "id" => "CIjXUg1s5gc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CIjXUg1s5gc", "playlist_index" => 36, "timestamp" => 1414598612, "title" => "T-Pain: NPR Music Tiny Desk Concert", "upload_date" => "20141029"} 14:13:53.222 [debug] QUERY OK source="sources" db=0.8ms idle=1738.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:53.223 [debug] QUERY OK source="sources" db=1.1ms idle=1739.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:53.224 [debug] QUERY OK source="media_items" db=0.4ms idle=1309.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2014-10-29 16:03:32Z], 2] 14:13:53.227 [debug] QUERY OK source="media_items" db=2.6ms idle=660.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch T-Pain play \"Buy U A Drank (Shawty Snappin')\", \"Up Down (Do This All Day)\" and \"Drankin' Patna\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nT-Pain's fingerprints are all over pop and R&B and hip-hop. He wasn't the first musician to use Auto-Tune as an instrument — he noticed it on a Jennifer Lopez remix, and remembers \"Deep\" well — but it was, as he says, his style. For a while, in the mid-2000s, he lived at the top of the charts. He dominated that brief moment of our lives when ringtones were a thing. He was celebrated as an innovator, and he happily took his talents where he was invited, which was everywhere.\n\nBut somewhere along the way, somebody got it twisted. \"People felt like I was using it to sound good,\" says T-Pain, in an interview that will air on All Things Considered. \"But I was just using it to sound different.”\n\nHe just turned 30, but T-Pain has already done enough to drop a greatest hits album next week. We asked him if he'd grace the Tiny Desk without any embellishment or effects to show what's really made his career: his voice, and those songs.--FRANNIE KELLEY \n\nSET LIST\n\"Buy U A Drank (Shawty Snappin')\"\n\"Up Down (Do This All Day)\"\n\"Drankin' Patna\"\n\nCREDITS\nProducers: Frannie Kelley, Maggie Starbard; Editor: Maggie Starbard; Audio Engineer: Kevin Wait; Videographers: Colin Marshall, Maggie Starbard; Production Assistant: Susan Hale Thomas; photo by Maggie Starbard/NPR", "T-Pain: NPR Music Tiny Desk Concert", "6ad3d2fa-c13c-494b-87de-4cf701279dc8", 828, false, "CIjXUg1s5gc", "https://www.youtube.com/watch?v=CIjXUg1s5gc", 36, "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].mp4", false, false, false, 2, [], 0, ~U[2014-10-29 16:03:32Z], ~U[2026-07-24 12:13:53Z], ~U[2026-07-24 12:13:53Z], "Watch T-Pain play \"Buy U A Drank (Shawty Snappin')\", \"Up Down (Do This All Day)\" and \"Drankin' Patna\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nT-Pain's fingerprints are all over pop and R&B and hip-hop. He wasn't the first musician to use Auto-Tune as an instrument — he noticed it on a Jennifer Lopez remix, and remembers \"Deep\" well — but it was, as he says, his style. For a while, in the mid-2000s, he lived at the top of the charts. He dominated that brief moment of our lives when ringtones were a thing. He was celebrated as an innovator, and he happily took his talents where he was invited, which was everywhere.\n\nBut somewhere along the way, somebody got it twisted. \"People felt like I was using it to sound good,\" says T-Pain, in an interview that will air on All Things Considered. \"But I was just using it to sound different.”\n\nHe just turned 30, but T-Pain has already done enough to drop a greatest hits album next week. We asked him if he'd grace the Tiny Desk without any embellishment or effects to show what's really made his career: his voice, and those songs.--FRANNIE KELLEY \n\nSET LIST\n\"Buy U A Drank (Shawty Snappin')\"\n\"Up Down (Do This All Day)\"\n\"Drankin' Patna\"\n\nCREDITS\nProducers: Frannie Kelley, Maggie Starbard; Editor: Maggie Starbard; Audio Engineer: Kevin Wait; Videographers: Colin Marshall, Maggie Starbard; Production Assistant: Susan Hale Thomas; photo by Maggie Starbard/NPR", "T-Pain: NPR Music Tiny Desk Concert", 828, false, "CIjXUg1s5gc", "https://www.youtube.com/watch?v=CIjXUg1s5gc", "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].mp4", false, 2, ~U[2014-10-29 16:03:32Z]] 14:13:53.227 [debug] QUERY OK source="sources" db=0.4ms idle=311.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:53.229 [debug] QUERY OK source="media_profiles" db=0.4ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:13:53.229 [debug] QUERY OK source="media_items" db=0.4ms idle=5.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 [157] 14:13:53.229 [info] Kicking off download for media item #157 (CIjXUg1s5gc) 14:13:53.237 [debug] QUERY OK source="tasks" db=2.3ms idle=7.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [105, 157, ~U[2026-07-24 12:13:53Z], ~U[2026-07-24 12:13:53Z]] 14:13:53.237 [debug] Current batch of media processed. Will check again in 1000ms 14:13:54.237 [debug] Current batch of media processed. Will check again in 1000ms 14:13:55.239 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "As lead singer of the youthful Manchester band The 1975, Matthew Healy has cranked out a batch of enjoyably wiry songs, most notably the singles \"Chocolate\" and \"Sex\" — each of which has attracted more than a million YouTube plays. The group has been bubbling up, here and in the U.K., for the last year or two, as it's toured with Muse and released an album and four EPs full of brash-but-winsome, electronics-tinged pop-rock.\n\nSo The 1975 knows its way around bigness. But, when asked to strip his band's sound down to fit the intimate confines of the Tiny Desk, Healy didn't hesitate to transform both his songs and himself. Performing solo with a guitar — he even goes fully acoustic for his two hits — he's reborn as an earnest troubadour, while his songs now register as melancholy musings. They're remarkably sturdy in any form, as this bit of left-field sweetness amply demonstrates. --STEPHEN THOMPSON\n\nSet List\n\"Sex\"\n\"Chocolate\"\n\"Woman\"\n\nCredits\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "duration" => 651, "filename" => "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].mp4", "id" => "5bIlkpQRyTM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=5bIlkpQRyTM", "playlist_index" => 37, "timestamp" => 1378824543, "title" => "The 1975: NPR Music Tiny Desk Concert", "upload_date" => "20130910"} 14:13:55.240 [debug] QUERY OK source="sources" db=0.3ms idle=756.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:55.240 [debug] QUERY OK source="sources" db=0.1ms idle=757.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:55.240 [debug] QUERY OK source="media_items" db=0.3ms idle=757.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2013-09-10 14:49:03Z], 2] 14:13:55.245 [debug] QUERY OK source="media_items" db=4.5ms idle=758.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["As lead singer of the youthful Manchester band The 1975, Matthew Healy has cranked out a batch of enjoyably wiry songs, most notably the singles \"Chocolate\" and \"Sex\" — each of which has attracted more than a million YouTube plays. The group has been bubbling up, here and in the U.K., for the last year or two, as it's toured with Muse and released an album and four EPs full of brash-but-winsome, electronics-tinged pop-rock.\n\nSo The 1975 knows its way around bigness. But, when asked to strip his band's sound down to fit the intimate confines of the Tiny Desk, Healy didn't hesitate to transform both his songs and himself. Performing solo with a guitar — he even goes fully acoustic for his two hits — he's reborn as an earnest troubadour, while his songs now register as melancholy musings. They're remarkably sturdy in any form, as this bit of left-field sweetness amply demonstrates. --STEPHEN THOMPSON\n\nSet List\n\"Sex\"\n\"Chocolate\"\n\"Woman\"\n\nCredits\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The 1975: NPR Music Tiny Desk Concert", "3cae6320-9fc3-4352-9aca-7faca5da986a", 651, false, "5bIlkpQRyTM", "https://www.youtube.com/watch?v=5bIlkpQRyTM", 37, "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].mp4", false, false, false, 2, [], 0, ~U[2013-09-10 14:49:03Z], ~U[2026-07-24 12:13:55Z], ~U[2026-07-24 12:13:55Z], "As lead singer of the youthful Manchester band The 1975, Matthew Healy has cranked out a batch of enjoyably wiry songs, most notably the singles \"Chocolate\" and \"Sex\" — each of which has attracted more than a million YouTube plays. The group has been bubbling up, here and in the U.K., for the last year or two, as it's toured with Muse and released an album and four EPs full of brash-but-winsome, electronics-tinged pop-rock.\n\nSo The 1975 knows its way around bigness. But, when asked to strip his band's sound down to fit the intimate confines of the Tiny Desk, Healy didn't hesitate to transform both his songs and himself. Performing solo with a guitar — he even goes fully acoustic for his two hits — he's reborn as an earnest troubadour, while his songs now register as melancholy musings. They're remarkably sturdy in any form, as this bit of left-field sweetness amply demonstrates. --STEPHEN THOMPSON\n\nSet List\n\"Sex\"\n\"Chocolate\"\n\"Woman\"\n\nCredits\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The 1975: NPR Music Tiny Desk Concert", 651, false, "5bIlkpQRyTM", "https://www.youtube.com/watch?v=5bIlkpQRyTM", "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].mp4", false, 2, ~U[2013-09-10 14:49:03Z]] 14:13:55.246 [debug] QUERY OK source="sources" db=0.3ms idle=328.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:55.247 [debug] QUERY OK source="media_profiles" db=0.2ms 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" = ?) [2] 14:13:55.247 [debug] QUERY OK source="media_items" db=0.3ms 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 [158] 14:13:55.247 [info] Kicking off download for media item #158 (5bIlkpQRyTM) 14:13:55.249 [debug] QUERY OK source="tasks" db=0.1ms idle=2.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [106, 158, ~U[2026-07-24 12:13:55Z], ~U[2026-07-24 12:13:55Z]] 14:13:55.249 [debug] Current batch of media processed. Will check again in 1000ms 14:13:56.249 [debug] Current batch of media processed. Will check again in 1000ms 14:13:57.251 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Tears and laughter in the span of about 15 minutes — that's what's so astonishing about these Macklemore & Ryan Lewis songs.\n\nThe first time I heard \"Same Love,\" it brought tears to the eyes of a roomful of people, myself included. The song is about equality, specifically gay rights, with an unambiguous message: \"It's human rights for everybody / There is no difference.\" Then, in a flip of a backing-track beat, Macklemore (a.k.a. Ben Haggerty) sings about wearing a velour jumpsuit and some house slippers, \"grandpa style.\"\n\nThe contrast in these songs, \"Same Love\" and \"Thrift Shop,\" makes the levity all that much memorable; as producer, Ryan Lewis is a master at the hook and clever with the melody. But this Tiny Desk Concert didn't end there: The live, sweet, soulful sounds of singer Ray Dalton belting, \"Like the ceiling can't hold us\" had Macklemore standing on my desk and shaking the dust off the ceiling tiles. Watching this video fills me with that inspirational feeling we shared watching it happen: I'm still cleaning dust around my desk, but it only makes me smile. --BOB BOILEN\n\nSet List\n\"Same Love\"\n\"Thrift Shop\"\n\"Can't Hold Us\"\n\nCredits\nProducer: Bob Boilen; Editor: Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Denise DeBelius, Christopher Parks, Lauren Rock; photo by Lauren Rock/NPR", "duration" => 885, "filename" => "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].mp4", "id" => "JrEJmvuKSwo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=JrEJmvuKSwo", "playlist_index" => 38, "timestamp" => 1354564307, "title" => "Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert", "upload_date" => "20121203"} 14:13:57.251 [debug] QUERY OK source="sources" db=0.2ms idle=768.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:13:57.251 [debug] QUERY OK source="sources" db=0.1ms idle=768.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:57.252 [debug] QUERY OK source="media_items" db=0.2ms idle=769.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2012-12-03 19:51:47Z], 2] 14:13:57.253 [debug] QUERY OK source="media_items" db=0.8ms idle=769.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Tears and laughter in the span of about 15 minutes — that's what's so astonishing about these Macklemore & Ryan Lewis songs.\n\nThe first time I heard \"Same Love,\" it brought tears to the eyes of a roomful of people, myself included. The song is about equality, specifically gay rights, with an unambiguous message: \"It's human rights for everybody / There is no difference.\" Then, in a flip of a backing-track beat, Macklemore (a.k.a. Ben Haggerty) sings about wearing a velour jumpsuit and some house slippers, \"grandpa style.\"\n\nThe contrast in these songs, \"Same Love\" and \"Thrift Shop,\" makes the levity all that much memorable; as producer, Ryan Lewis is a master at the hook and clever with the melody. But this Tiny Desk Concert didn't end there: The live, sweet, soulful sounds of singer Ray Dalton belting, \"Like the ceiling can't hold us\" had Macklemore standing on my desk and shaking the dust off the ceiling tiles. Watching this video fills me with that inspirational feeling we shared watching it happen: I'm still cleaning dust around my desk, but it only makes me smile. --BOB BOILEN\n\nSet List\n\"Same Love\"\n\"Thrift Shop\"\n\"Can't Hold Us\"\n\nCredits\nProducer: Bob Boilen; Editor: Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Denise DeBelius, Christopher Parks, Lauren Rock; photo by Lauren Rock/NPR", "Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert", "76fa6622-761d-4624-8b71-25744d80a74f", 885, false, "JrEJmvuKSwo", "https://www.youtube.com/watch?v=JrEJmvuKSwo", 38, "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].mp4", false, false, false, 2, [], 0, ~U[2012-12-03 19:51:47Z], ~U[2026-07-24 12:13:57Z], ~U[2026-07-24 12:13:57Z], "Tears and laughter in the span of about 15 minutes — that's what's so astonishing about these Macklemore & Ryan Lewis songs.\n\nThe first time I heard \"Same Love,\" it brought tears to the eyes of a roomful of people, myself included. The song is about equality, specifically gay rights, with an unambiguous message: \"It's human rights for everybody / There is no difference.\" Then, in a flip of a backing-track beat, Macklemore (a.k.a. Ben Haggerty) sings about wearing a velour jumpsuit and some house slippers, \"grandpa style.\"\n\nThe contrast in these songs, \"Same Love\" and \"Thrift Shop,\" makes the levity all that much memorable; as producer, Ryan Lewis is a master at the hook and clever with the melody. But this Tiny Desk Concert didn't end there: The live, sweet, soulful sounds of singer Ray Dalton belting, \"Like the ceiling can't hold us\" had Macklemore standing on my desk and shaking the dust off the ceiling tiles. Watching this video fills me with that inspirational feeling we shared watching it happen: I'm still cleaning dust around my desk, but it only makes me smile. --BOB BOILEN\n\nSet List\n\"Same Love\"\n\"Thrift Shop\"\n\"Can't Hold Us\"\n\nCredits\nProducer: Bob Boilen; Editor: Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Denise DeBelius, Christopher Parks, Lauren Rock; photo by Lauren Rock/NPR", "Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert", 885, false, "JrEJmvuKSwo", "https://www.youtube.com/watch?v=JrEJmvuKSwo", "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].mp4", false, 2, ~U[2012-12-03 19:51:47Z]] 14:13:57.253 [debug] QUERY OK source="sources" db=0.1ms idle=331.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:57.254 [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" = ?) [2] 14:13:57.254 [debug] QUERY OK source="media_items" db=0.3ms idle=2.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [159] 14:13:57.254 [info] Kicking off download for media item #159 (JrEJmvuKSwo) 14:13:57.256 [debug] QUERY OK source="tasks" db=0.1ms idle=1.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [107, 159, ~U[2026-07-24 12:13:57Z], ~U[2026-07-24 12:13:57Z]] 14:13:57.256 [debug] Current batch of media processed. Will check again in 1000ms 14:13:58.256 [debug] Current batch of media processed. Will check again in 1000ms 14:13:59.258 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Armed with the summer song of 2011, the band brings \"Pumped Up Kicks\" and more to NPR Music.\n\nSet List:\n\"Houdini\"\n\"Helena Beat\"\n\"Pumped Up Kicks\"\n\nFor more videos and to subscribe to the Tiny Desk Concerts podcast, visit npr.org/tinydeskconcerts.", "duration" => 637, "filename" => "/downloads/Tiny Desk/2011-09-13 Foster The People: NPR Music Tiny Desk Concert/Foster The People: NPR Music Tiny Desk Concert [kMnDHUKGMWs].mp4", "id" => "kMnDHUKGMWs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kMnDHUKGMWs", "playlist_index" => 39, "timestamp" => 1315885996, "title" => "Foster The People: NPR Music Tiny Desk Concert", "upload_date" => "20110913"} 14:13:59.258 [debug] QUERY OK source="sources" db=0.2ms idle=775.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:13:59.259 [debug] QUERY OK source="sources" db=0.7ms idle=775.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:13:59.260 [debug] QUERY OK source="media_items" db=1.0ms idle=776.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2011-09-13 03:53:16Z], 2] 14:13:59.262 [debug] QUERY OK source="media_items" db=0.9ms idle=778.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Armed with the summer song of 2011, the band brings \"Pumped Up Kicks\" and more to NPR Music.\n\nSet List:\n\"Houdini\"\n\"Helena Beat\"\n\"Pumped Up Kicks\"\n\nFor more videos and to subscribe to the Tiny Desk Concerts podcast, visit npr.org/tinydeskconcerts.", "Foster The People: NPR Music Tiny Desk Concert", "ec394827-b349-4e77-bf98-cf274648d5c4", 637, false, "kMnDHUKGMWs", "https://www.youtube.com/watch?v=kMnDHUKGMWs", 39, "/downloads/Tiny Desk/2011-09-13 Foster The People: NPR Music Tiny Desk Concert/Foster The People: NPR Music Tiny Desk Concert [kMnDHUKGMWs].mp4", false, false, false, 2, [], 0, ~U[2011-09-13 03:53:16Z], ~U[2026-07-24 12:13:59Z], ~U[2026-07-24 12:13:59Z], "Armed with the summer song of 2011, the band brings \"Pumped Up Kicks\" and more to NPR Music.\n\nSet List:\n\"Houdini\"\n\"Helena Beat\"\n\"Pumped Up Kicks\"\n\nFor more videos and to subscribe to the Tiny Desk Concerts podcast, visit npr.org/tinydeskconcerts.", "Foster The People: NPR Music Tiny Desk Concert", 637, false, "kMnDHUKGMWs", "https://www.youtube.com/watch?v=kMnDHUKGMWs", "/downloads/Tiny Desk/2011-09-13 Foster The People: NPR Music Tiny Desk Concert/Foster The People: NPR Music Tiny Desk Concert [kMnDHUKGMWs].mp4", false, 2, ~U[2011-09-13 03:53:16Z]] 14:13:59.263 [debug] QUERY OK source="sources" db=0.6ms idle=336.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:13:59.263 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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" = ?) [2] 14:13:59.264 [debug] QUERY OK source="media_items" db=0.7ms 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 [160] 14:13:59.264 [info] Kicking off download for media item #160 (kMnDHUKGMWs) 14:13:59.267 [debug] QUERY OK source="tasks" db=0.1ms idle=4.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [108, 160, ~U[2026-07-24 12:13:59Z], ~U[2026-07-24 12:13:59Z]] 14:13:59.267 [debug] Current batch of media processed. Will check again in 1000ms 14:14:00.268 [debug] Current batch of media processed. Will check again in 1000ms 14:14:00.527 [info] {"source":"oban","duration":455,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:14:01.268 [debug] Current batch of media processed. Will check again in 1000ms 14:14:01.914 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=RlTVMi4JzZA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e7/ff/e7fffe8f2c70495bd5bf341e30ad7aeaf4b35f5a09ae25a9dd4b5ea68b6e95a6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:01.935 [debug] Running yt-dlp command for action: download_thumbnail 14:14:01.936 [debug] QUERY OK source="settings" db=0.1ms idle=1453.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:01.937 [debug] QUERY OK source="settings" db=0.3ms idle=1453.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:01.937 [debug] QUERY OK source="settings" db=0.1ms idle=1410.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:01.937 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=RlTVMi4JzZA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/41/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/16/32/163263be256fd6108ce4f1f62c49abff50e5507ca9b014a8ee390dff89af3136.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:02.270 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Edward Sharpe & The Magnetic Zeros can't exactly slip into an office building unnoticed: Clad in the same clothes they'd worn at a concert the night before, the L.A. band's 10 ragtag misfits would have fit in far more seamlessly at, say, Burning Man. Seeming to exist in a blissed-out alternate universe — during the wonderful \"Home,\" singer Jade Castrinos exclaims, \"Good morning, everybody!\" as the clock behind her reads 2:10 p.m. — this is a band whose performances beg to be seen as well as heard, not to mention shot through a wide-angle lens.\r\n\r\nThe biggest band to play a Tiny Desk Concert - the 10 members of The Magnetic Zeroes played three songs from their debut album (Up From Below).\r\n\r\nThe set included:\r\n - Janglin\r\n - Home\r\n - 40 Day Daydream", "duration" => 884, "filename" => "/downloads/Tiny Desk/2009-11-02 Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert/Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert [XWIvfE01J0k].mp4", "id" => "XWIvfE01J0k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XWIvfE01J0k", "playlist_index" => 40, "timestamp" => 1257194896, "title" => "Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert", "upload_date" => "20091102"} 14:14:02.275 [debug] QUERY OK source="sources" db=5.0ms idle=1340.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:02.276 [debug] QUERY OK source="sources" db=1.0ms idle=343.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:02.279 [debug] QUERY OK source="media_items" db=2.5ms idle=340.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2009-11-02 20:48:16Z], 2] 14:14:02.284 [debug] QUERY OK source="media_items" db=4.1ms idle=342.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Edward Sharpe & The Magnetic Zeros can't exactly slip into an office building unnoticed: Clad in the same clothes they'd worn at a concert the night before, the L.A. band's 10 ragtag misfits would have fit in far more seamlessly at, say, Burning Man. Seeming to exist in a blissed-out alternate universe — during the wonderful \"Home,\" singer Jade Castrinos exclaims, \"Good morning, everybody!\" as the clock behind her reads 2:10 p.m. — this is a band whose performances beg to be seen as well as heard, not to mention shot through a wide-angle lens.\r\n\r\nThe biggest band to play a Tiny Desk Concert - the 10 members of The Magnetic Zeroes played three songs from their debut album (Up From Below).\r\n\r\nThe set included:\r\n - Janglin\r\n - Home\r\n - 40 Day Daydream", "Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert", "69b7f428-4f58-4cf6-b952-27c0920a1665", 884, false, "XWIvfE01J0k", "https://www.youtube.com/watch?v=XWIvfE01J0k", 40, "/downloads/Tiny Desk/2009-11-02 Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert/Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert [XWIvfE01J0k].mp4", false, false, false, 2, [], 0, ~U[2009-11-02 20:48:16Z], ~U[2026-07-24 12:14:02Z], ~U[2026-07-24 12:14:02Z], "Edward Sharpe & The Magnetic Zeros can't exactly slip into an office building unnoticed: Clad in the same clothes they'd worn at a concert the night before, the L.A. band's 10 ragtag misfits would have fit in far more seamlessly at, say, Burning Man. Seeming to exist in a blissed-out alternate universe — during the wonderful \"Home,\" singer Jade Castrinos exclaims, \"Good morning, everybody!\" as the clock behind her reads 2:10 p.m. — this is a band whose performances beg to be seen as well as heard, not to mention shot through a wide-angle lens.\r\n\r\nThe biggest band to play a Tiny Desk Concert - the 10 members of The Magnetic Zeroes played three songs from their debut album (Up From Below).\r\n\r\nThe set included:\r\n - Janglin\r\n - Home\r\n - 40 Day Daydream", "Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert", 884, false, "XWIvfE01J0k", "https://www.youtube.com/watch?v=XWIvfE01J0k", "/downloads/Tiny Desk/2009-11-02 Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert/Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert [XWIvfE01J0k].mp4", false, 2, ~U[2009-11-02 20:48:16Z]] 14:14:02.285 [debug] QUERY OK source="sources" db=0.9ms idle=346.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:02.288 [debug] QUERY OK source="media_profiles" db=2.4ms queue=0.4ms idle=10.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:02.290 [debug] QUERY OK source="media_items" db=1.0ms idle=12.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [161] 14:14:02.290 [info] Kicking off download for media item #161 (XWIvfE01J0k) 14:14:02.295 [debug] QUERY OK source="tasks" db=0.5ms queue=0.3ms idle=9.7ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [109, 161, ~U[2026-07-24 12:14:02Z], ~U[2026-07-24 12:14:02Z]] 14:14:02.296 [debug] Current batch of media processed. Will check again in 1000ms 14:14:03.296 [debug] Current batch of media processed. Will check again in 1000ms 14:14:04.298 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBob Boilen | December 1, 2021\nNo other band has brought me more joy in 2021 than Wet Leg, and I truly needed joy in 2021. When \"Chaise Longue,\" came out in June, it felt like a gift. It's rare to hear a band's very first song sound as perfect as this one did, but that's part of the magic that Wet Leg exudes. Two dear friends – Rhian Teasdale and Hester Chambers — making music to make each other smile, then watching that smile spread as audiences catch on.\n\nThat song has a few deadpan lines lifted from the film Mean Girls: \"Is your muffin buttered? Would you like us to assign someone to butter your muffin?\" There's a golden moment in this Tiny Desk (home) concert when Rhian turns to Hester with the line, \"Excuse me,\" while Hester responds dryly, \"What?\" Setting off a knowing smile back and forth made me love the band even more. They were gathered together at The Ventnor Exchange, a creative arts space/record shop/bar/venue on the Isle of Wight, their home turf. And their band – Henry Holmes on drums, Ellis Durand on bass and Josh Mobaraki on guitar and synth – amplify the rock and droll sound Rhian and Hester personify.\n\nThey've just announced the April 8 release date for their debut album, more tour dates, and shared two new songs, which you'll also hear them perform here. The new songs don't stray far from the two they'd previously released, which bookend this Tiny Desk (home) concert. Part of the footage was filmed on VHS tape, a bit of a wink toward their sound, which has roots in the '70s. It's not nostalgic, but it is playfully wistful.\n\nSET LIST\n\"Chaise Longue\"\n\"Too Late Now\"\n\"Oh No\"\n\"Wet Dream\"\n\nMUSICIANS\nHester Chambers: vocals, guitar\nRhian Teasdale: guitar, backup vocals\nHenry Holmes: drums\nEllis Durand: bass\nJosh Mobaraki: guitar, synth\n\nCREDITS\nVideo: Joey Julliard, Oliver Bury, Josh Mobaraki\nAudio: Patrick Lee, Josh Mobaraki\nSpecial thanks: The Ventnor Exchange, Ventnor, Isle of Wight\n\nTINY DESK TEAM\nProducer: Bob Boilen\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bobby Carter, Kara Frame, Sofie Hernandez-Simeonidis\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #wetleg", "duration" => 783, "filename" => "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].mp4", "id" => "bJUUnXZVIfY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=bJUUnXZVIfY", "playlist_index" => 41, "timestamp" => 1638352818, "title" => "Wet Leg: Tiny Desk (Home) Concert", "upload_date" => "20211201"} 14:14:04.298 [debug] QUERY OK source="sources" db=0.2ms idle=815.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:04.299 [debug] QUERY OK source="sources" db=0.2ms idle=815.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:04.299 [debug] QUERY OK source="media_items" db=0.2ms idle=816.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-12-01 10:00:18Z], 2] 14:14:04.301 [debug] QUERY OK source="media_items" db=1.5ms idle=817.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBob Boilen | December 1, 2021\nNo other band has brought me more joy in 2021 than Wet Leg, and I truly needed joy in 2021. When \"Chaise Longue,\" came out in June, it felt like a gift. It's rare to hear a band's very first song sound as perfect as this one did, but that's part of the magic that Wet Leg exudes. Two dear friends – Rhian Teasdale and Hester Chambers — making music to make each other smile, then watching that smile spread as audiences catch on.\n\nThat song has a few deadpan lines lifted from the film Mean Girls: \"Is your muffin buttered? Would you like us to assign someone to butter your muffin?\" There's a golden moment in this Tiny Desk (home) concert when Rhian turns to Hester with the line, \"Excuse me,\" while Hester responds dryly, \"What?\" Setting off a knowing smile back and forth made me love the band even more. They were gathered together at The Ventnor Exchange, a creative arts space/record shop/bar/venue on the Isle of Wight, their home turf. And their band – Henry Holmes on drums, Ellis Durand on bass and Josh Mobaraki on guitar and synth – amplify the rock and droll sound Rhian and Hester personify.\n\nThey've just announced the April 8 release date for their debut album, more tour dates, and shared two new songs, which you'll also hear them perform here. The new songs don't stray far from the two they'd previously released, which bookend this Tiny Desk (home) concert. Part of the footage was filmed on VHS tape, a bit of a wink toward their sound, which has roots in the '70s. It's not nostalgic, but it is playfully wistful.\n\nSET LIST\n\"Chaise Longue\"\n\"Too Late Now\"\n\"Oh No\"\n\"Wet Dream\"\n\nMUSICIANS\nHester Chambers: vocals, guitar\nRhian Teasdale: guitar, backup vocals\nHenry Holmes: drums\nEllis Durand: bass\nJosh Mobaraki: guitar, synth\n\nCREDITS\nVideo: Joey Julliard, Oliver Bury, Josh Mobaraki\nAudio: Patrick Lee, Josh Mobaraki\nSpecial thanks: The Ventnor Exchange, Ventnor, Isle of Wight\n\nTINY DESK TEAM\nProducer: Bob Boilen\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bobby Carter, Kara Frame, Sofie Hernandez-Simeonidis\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #wetleg", "Wet Leg: Tiny Desk (Home) Concert", "0202f79a-c266-438d-a933-6a90dea917de", 783, false, "bJUUnXZVIfY", "https://www.youtube.com/watch?v=bJUUnXZVIfY", 41, "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].mp4", false, false, false, 2, [], 0, ~U[2021-12-01 10:00:18Z], ~U[2026-07-24 12:14:04Z], ~U[2026-07-24 12:14:04Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBob Boilen | December 1, 2021\nNo other band has brought me more joy in 2021 than Wet Leg, and I truly needed joy in 2021. When \"Chaise Longue,\" came out in June, it felt like a gift. It's rare to hear a band's very first song sound as perfect as this one did, but that's part of the magic that Wet Leg exudes. Two dear friends – Rhian Teasdale and Hester Chambers — making music to make each other smile, then watching that smile spread as audiences catch on.\n\nThat song has a few deadpan lines lifted from the film Mean Girls: \"Is your muffin buttered? Would you like us to assign someone to butter your muffin?\" There's a golden moment in this Tiny Desk (home) concert when Rhian turns to Hester with the line, \"Excuse me,\" while Hester responds dryly, \"What?\" Setting off a knowing smile back and forth made me love the band even more. They were gathered together at The Ventnor Exchange, a creative arts space/record shop/bar/venue on the Isle of Wight, their home turf. And their band – Henry Holmes on drums, Ellis Durand on bass and Josh Mobaraki on guitar and synth – amplify the rock and droll sound Rhian and Hester personify.\n\nThey've just announced the April 8 release date for their debut album, more tour dates, and shared two new songs, which you'll also hear them perform here. The new songs don't stray far from the two they'd previously released, which bookend this Tiny Desk (home) concert. Part of the footage was filmed on VHS tape, a bit of a wink toward their sound, which has roots in the '70s. It's not nostalgic, but it is playfully wistful.\n\nSET LIST\n\"Chaise Longue\"\n\"Too Late Now\"\n\"Oh No\"\n\"Wet Dream\"\n\nMUSICIANS\nHester Chambers: vocals, guitar\nRhian Teasdale: guitar, backup vocals\nHenry Holmes: drums\nEllis Durand: bass\nJosh Mobaraki: guitar, synth\n\nCREDITS\nVideo: Joey Julliard, Oliver Bury, Josh Mobaraki\nAudio: Patrick Lee, Josh Mobaraki\nSpecial thanks: The Ventnor Exchange, Ventnor, Isle of Wight\n\nTINY DESK TEAM\nProducer: Bob Boilen\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bobby Carter, Kara Frame, Sofie Hernandez-Simeonidis\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #wetleg", "Wet Leg: Tiny Desk (Home) Concert", 783, false, "bJUUnXZVIfY", "https://www.youtube.com/watch?v=bJUUnXZVIfY", "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].mp4", false, 2, ~U[2021-12-01 10:00:18Z]] 14:14:04.302 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=357.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:04.303 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 14:14:04.303 [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 [162] 14:14:04.303 [info] Kicking off download for media item #162 (bJUUnXZVIfY) 14:14:04.306 [debug] QUERY OK source="tasks" db=0.2ms idle=3.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [110, 162, ~U[2026-07-24 12:14:04Z], ~U[2026-07-24 12:14:04Z]] 14:14:04.306 [debug] Current batch of media processed. Will check again in 1000ms 14:14:04.426 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=RlTVMi4JzZA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/41/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/16/32/163263be256fd6108ce4f1f62c49abff50e5507ca9b014a8ee390dff89af3136.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:04.426 [debug] QUERY OK db=0.0ms queue=0.1ms idle=123.2ms begin [] 14:14:04.427 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:14:01Z], "/downloads/The Standup/2025-07-20 Why Performance Actually Matters (The Standup)/Why Performance Actually Matters (The Standup) [RlTVMi4JzZA].mp4", ~U[2026-07-24 12:14:04Z], 41] 14:14:04.428 [debug] QUERY OK source="media_metadata" db=0.7ms 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/41/metadata.json.gz", "/config/metadata/media_items/41/thumbnail.jpg", 41, ~U[2026-07-24 12:14:04Z], ~U[2026-07-24 12:14:04Z]] 14:14:04.428 [debug] QUERY OK db=0.2ms commit [] 14:14:04.430 [debug] QUERY OK source="media_items" db=1.1ms idle=125.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [518535568, ~U[2026-07-24 12:14:04Z], 41] 14:14:04.430 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:14:04.430 [info] {"args":{"id":41},"id":45,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":86866128,"event":"job:stop","queue_time":791563778,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:04.439 [info] {"args":{"id":43},"id":47,"meta":{},"system_time":1784895244439079485,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:04.439 [debug] QUERY OK source="media_items" db=0.4ms idle=132.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" = ?) [43] 14:14:04.440 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:14:04.440 [debug] QUERY OK source="sources" db=0.3ms idle=11.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:14:04.441 [debug] QUERY OK source="media_profiles" db=0.5ms idle=10.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:04.442 [debug] QUERY OK source="media_items" db=0.5ms idle=10.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [43] 14:14:04.443 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [43] 14:14:04.443 [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] 14:14:04.444 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:04.444 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:04.445 [debug] Running yt-dlp command for action: get_downloadable_status 14:14:04.446 [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 [] 14:14:04.446 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:04.447 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:04.447 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=VsTbgYawoVc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/7f/007f6b3b9e56b1ecf0dab30301339486f8e4983a2ca83a6d561f56c2e9dfb6f5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:05.307 [debug] Current batch of media processed. Will check again in 1000ms 14:14:06.309 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | October 26, 2021\nDecked in a hoodie, cargo pants and coveted sneakers, a slimmed-down and clean-shaven Ed Sheeran stands surrounded by bookshelves and a host of world-class musicians. He’s flanked by music director to the stars, Adam Blackstone, who assembled the band and handled bass guitar duties. After opening this Tiny Desk (home) concert with his latest single, “Shivers,” Sheeran introduces himself and proceeds with more hits, new tunes, and a surprise throwback. \n\nThe English singer-songwriter may appear acclimated to a live band, but it’s a pretty rare occasion. For more than a decade, Sheeran’s become revered for ripping down stadiums, but usually (and remarkably) it’s just him, a guitar and loop pedals.\n\nThe material released so far from his upcoming album, = (out Oct. 29), leans heavily into the ’80s pop sphere and provides glimpses into Sheeran’s personal life during his time away. Here, he debuts “Overpass Graffiti,” an uptempo ode to the endurance of long love. “Visiting Hours” is a heartfelt dedication to his close friend and mentor, Australian record executive Michael Gudinski, who passed away in March. \n\nAlthough most of the setlist honors =, Sheeran veers momentarily to take us to church with 2014’s “Make It Rain” from the TV show Sons of Anarchy. The choir only takes up a smidgen of physical real estate, but their voices manage to engulf the entire space, propelling the song to another stratosphere. He closes the performance with a quiet storm version of his summer single “Bad Habits.”\n\nSET LIST\n* “Shivers”\n* “Make It Rain”\n* “Overpass Graffiti”\n* “Visiting Hours”\n* “Bad Habits”\n\nMUSICIANS\n* Adam Blackstone: musical director/bass\n* Terence Vaughn: keys\n* Tim Stewart: guitar\n* Clay Sears: guitar\n* Brian Frasier-Moore: drums\n* Rayfield Holloman: pedal steel guitar\n* Whitney Smith: vocals\n* Raphael Smith: vocals\n* Melissa Best: vocals\n* Antia Coach: vocals\n* Melany Watson: vocals\n* Kyron Elcock: vocals\n* Raymond Mason: trombone\n* Michael Leonhart: trumpet\n* Sam Greenfield: saxophone\n\nCREDITS\n* Video: Chadrick Fellers, Jeremy Ivory-Chambers, Porous Porousfreak\n* Audio: Tyrell Ace Clark, James Hardy-Martin, Douglas Touré Harris\n\nTINY DESK TEAM\n* Producer: Bobby Carter\n* Video Producer: Kara Frame\n* Audio Mastering: Josh Rogosin\n* Tiny Production Team: Bob Boilen, Bobby Carter, Maia Stern, Sofie Hernandez-Simeonidis\n* Executive Producer: Keith Jenkins\n* Senior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #edsheeran", "duration" => 1357, "filename" => "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].mp4", "id" => "4MsoqUv5gv4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4MsoqUv5gv4", "playlist_index" => 42, "timestamp" => 1635264010, "title" => "Ed Sheeran: Tiny Desk (Home) Concert", "upload_date" => "20211026"} 14:14:06.309 [debug] QUERY OK source="sources" db=0.3ms idle=826.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:06.310 [debug] QUERY OK source="sources" db=0.1ms idle=827.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:06.310 [debug] QUERY OK source="media_items" db=0.2ms idle=827.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-10-26 16:00:10Z], 2] 14:14:06.320 [debug] QUERY OK source="media_items" db=9.5ms idle=827.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | October 26, 2021\nDecked in a hoodie, cargo pants and coveted sneakers, a slimmed-down and clean-shaven Ed Sheeran stands surrounded by bookshelves and a host of world-class musicians. He’s flanked by music director to the stars, Adam Blackstone, who assembled the band and handled bass guitar duties. After opening this Tiny Desk (home) concert with his latest single, “Shivers,” Sheeran introduces himself and proceeds with more hits, new tunes, and a surprise throwback. \n\nThe English singer-songwriter may appear acclimated to a live band, but it’s a pretty rare occasion. For more than a decade, Sheeran’s become revered for ripping down stadiums, but usually (and remarkably) it’s just him, a guitar and loop pedals.\n\nThe material released so far from his upcoming album, = (out Oct. 29), leans heavily into the ’80s pop sphere and provides glimpses into Sheeran’s personal life during his time away. Here, he debuts “Overpass Graffiti,” an uptempo ode to the endurance of long love. “Visiting Hours” is a heartfelt dedication to his close friend and mentor, Australian record executive Michael Gudinski, who passed away in March. \n\nAlthough most of the setlist honors =, Sheeran veers momentarily to take us to church with 2014’s “Make It Rain” from the TV show Sons of Anarchy. The choir only takes up a smidgen of physical real estate, but their voices manage to engulf the entire space, propelling the song to another stratosphere. He closes the performance with a quiet storm version of his summer single “Bad Habits.”\n\nSET LIST\n* “Shivers”\n* “Make It Rain”\n* “Overpass Graffiti”\n* “Visiting Hours”\n* “Bad Habits”\n\nMUSICIANS\n* Adam Blackstone: musical director/bass\n* Terence Vaughn: keys\n* Tim Stewart: guitar\n* Clay Sears: guitar\n* Brian Frasier-Moore: drums\n* Rayfield Holloman: pedal steel guitar\n* Whitney Smith: vocals\n* Raphael Smith: vocals\n* Melissa Best: vocals\n* Antia Coach: vocals\n* Melany Watson: vocals\n* Kyron Elcock: vocals\n* Raymond Mason: trombone\n* Michael Leonhart: trumpet\n* Sam Greenfield: saxophone\n\nCREDITS\n* Video: Chadrick Fellers, Jeremy Ivory-Chambers, Porous Porousfreak\n* Audio: Tyrell Ace Clark, James Hardy-Martin, Douglas Touré Harris\n\nTINY DESK TEAM\n* Producer: Bobby Carter\n* Video Producer: Kara Frame\n* Audio Mastering: Josh Rogosin\n* Tiny Production Team: Bob Boilen, Bobby Carter, Maia Stern, Sofie Hernandez-Simeonidis\n* Executive Producer: Keith Jenkins\n* Senior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #edsheeran", "Ed Sheeran: Tiny Desk (Home) Concert", "09b1fe47-85ec-4dcc-9d5c-88ae668a6416", 1357, false, "4MsoqUv5gv4", "https://www.youtube.com/watch?v=4MsoqUv5gv4", 42, "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].mp4", false, false, false, 2, [], 0, ~U[2021-10-26 16:00:10Z], ~U[2026-07-24 12:14:06Z], ~U[2026-07-24 12:14:06Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | October 26, 2021\nDecked in a hoodie, cargo pants and coveted sneakers, a slimmed-down and clean-shaven Ed Sheeran stands surrounded by bookshelves and a host of world-class musicians. He’s flanked by music director to the stars, Adam Blackstone, who assembled the band and handled bass guitar duties. After opening this Tiny Desk (home) concert with his latest single, “Shivers,” Sheeran introduces himself and proceeds with more hits, new tunes, and a surprise throwback. \n\nThe English singer-songwriter may appear acclimated to a live band, but it’s a pretty rare occasion. For more than a decade, Sheeran’s become revered for ripping down stadiums, but usually (and remarkably) it’s just him, a guitar and loop pedals.\n\nThe material released so far from his upcoming album, = (out Oct. 29), leans heavily into the ’80s pop sphere and provides glimpses into Sheeran’s personal life during his time away. Here, he debuts “Overpass Graffiti,” an uptempo ode to the endurance of long love. “Visiting Hours” is a heartfelt dedication to his close friend and mentor, Australian record executive Michael Gudinski, who passed away in March. \n\nAlthough most of the setlist honors =, Sheeran veers momentarily to take us to church with 2014’s “Make It Rain” from the TV show Sons of Anarchy. The choir only takes up a smidgen of physical real estate, but their voices manage to engulf the entire space, propelling the song to another stratosphere. He closes the performance with a quiet storm version of his summer single “Bad Habits.”\n\nSET LIST\n* “Shivers”\n* “Make It Rain”\n* “Overpass Graffiti”\n* “Visiting Hours”\n* “Bad Habits”\n\nMUSICIANS\n* Adam Blackstone: musical director/bass\n* Terence Vaughn: keys\n* Tim Stewart: guitar\n* Clay Sears: guitar\n* Brian Frasier-Moore: drums\n* Rayfield Holloman: pedal steel guitar\n* Whitney Smith: vocals\n* Raphael Smith: vocals\n* Melissa Best: vocals\n* Antia Coach: vocals\n* Melany Watson: vocals\n* Kyron Elcock: vocals\n* Raymond Mason: trombone\n* Michael Leonhart: trumpet\n* Sam Greenfield: saxophone\n\nCREDITS\n* Video: Chadrick Fellers, Jeremy Ivory-Chambers, Porous Porousfreak\n* Audio: Tyrell Ace Clark, James Hardy-Martin, Douglas Touré Harris\n\nTINY DESK TEAM\n* Producer: Bobby Carter\n* Video Producer: Kara Frame\n* Audio Mastering: Josh Rogosin\n* Tiny Production Team: Bob Boilen, Bobby Carter, Maia Stern, Sofie Hernandez-Simeonidis\n* Executive Producer: Keith Jenkins\n* Senior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #edsheeran", "Ed Sheeran: Tiny Desk (Home) Concert", 1357, false, "4MsoqUv5gv4", "https://www.youtube.com/watch?v=4MsoqUv5gv4", "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].mp4", false, 2, ~U[2021-10-26 16:00:10Z]] 14:14:06.321 [debug] QUERY OK source="sources" db=0.2ms idle=372.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:06.321 [debug] QUERY OK source="media_profiles" db=0.1ms idle=11.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:06.322 [debug] QUERY OK source="media_items" db=0.2ms idle=11.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [163] 14:14:06.322 [info] Kicking off download for media item #163 (4MsoqUv5gv4) 14:14:06.324 [debug] QUERY OK source="tasks" db=0.1ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [111, 163, ~U[2026-07-24 12:14:06Z], ~U[2026-07-24 12:14:06Z]] 14:14:06.324 [debug] Current batch of media processed. Will check again in 1000ms 14:14:07.325 [debug] Current batch of media processed. Will check again in 1000ms 14:14:07.448 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=VsTbgYawoVc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/7f/007f6b3b9e56b1ecf0dab30301339486f8e4983a2ca83a6d561f56c2e9dfb6f5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:07.449 [debug] Running yt-dlp command for action: download 14:14:07.449 [debug] QUERY OK source="settings" db=0.3ms idle=1127.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:07.449 [debug] QUERY OK source="settings" db=0.3ms idle=1126.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:07.450 [debug] QUERY OK source="settings" db=0.4ms idle=1126.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:07.450 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=VsTbgYawoVc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/22/9b/229bfcf10eee783443eaf61f32fb29003e956315f226af63bf017c8e193c8d8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:08.326 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nSidney Madden | September 3, 2021\n\"I like having a band,\" Rico Nasty says with a giggle midway through her Tiny Desk (home) concert. \"Especially when it's all girls.\"\n\nAs an artist known to mash up the genres of rap, rock and pop — and create a safe space for women to do the same — Rico has rarely gotten the chance to put this full artistic collision on display. For her Tiny Desk debut, Rico takes every opportunity to flex her rage and range.\n\nDressed as if she's the main character out of a Tim Burton adaptation of Candyland, Rico bounces around her varied discography, never letting the audience get too comfortable with one sound. Starting off with one of her most recent cuts, the soft, surf rock-inspired \"Magic,\" the magnetic performer pulls a switch-up on viewers by jumping into some of her more raucous bangers, the type that would normally incite a sweaty mosh pit at her concerts. Of course, she closes the set with a shredding version of her breakout single, the primal scream mantra of \"Smack A Bitch.\" The high-energy display evokes childlike joy and confection just as much as it does unapologetic savagery. \"I don't know where you at, where you watching this,\" Rico smirks at one point. \"You better break some s***.\"\n\nSince her early mixtape days all the way up to her 2020 debut album, Nightmare Vacation, Rico has waded in sonic dichotomy to blend her signature sound, deemed \"sugar trap,\" and in the process, became a beacon for women in rap to eloquently express their anger. As one of the DMV's most formidable forces, Rico always compels her fans to jump up, take charge and never apologize for what they feel.\n\nSET LIST\n\"Magic\"\n\"Rage\"\n\"OHFR?\"\n\"Trust Issues\"\n\"Smack a Bitch\"\n\nMUSICIANS\nRico Nasty: vocals\nLanita Smith: keys\nTiffani Walker: drummer\nKyla Wright: bassist\nLiso Lee: guitarist\nRodney Jones Jr.: MD\n\nCREDITS\nVideo: Lia B, Evan Avtal, Denis Rudchenko, Benjamin Meserve, Wayan Palmieri\nAudio: Cole Nystrom\n\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Bobby Carter, Kara Frame, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #riconasty", "duration" => 817, "filename" => "/downloads/Tiny Desk/2021-09-03 Rico Nasty: Tiny Desk (Home) Concert/Rico Nasty: Tiny Desk (Home) Concert [z3ZFoo4-TdU].mp4", "id" => "z3ZFoo4-TdU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=z3ZFoo4-TdU", "playlist_index" => 43, "timestamp" => 1630659624, "title" => "Rico Nasty: Tiny Desk (Home) Concert", "upload_date" => "20210903"} 14:14:08.327 [debug] QUERY OK source="sources" db=0.2ms queue=0.6ms idle=876.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:08.327 [debug] QUERY OK source="sources" db=0.2ms idle=877.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:08.328 [debug] QUERY OK source="media_items" db=0.5ms idle=877.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-09-03 09:00:24Z], 2] 14:14:08.330 [debug] QUERY OK source="media_items" db=1.4ms idle=845.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nSidney Madden | September 3, 2021\n\"I like having a band,\" Rico Nasty says with a giggle midway through her Tiny Desk (home) concert. \"Especially when it's all girls.\"\n\nAs an artist known to mash up the genres of rap, rock and pop — and create a safe space for women to do the same — Rico has rarely gotten the chance to put this full artistic collision on display. For her Tiny Desk debut, Rico takes every opportunity to flex her rage and range.\n\nDressed as if she's the main character out of a Tim Burton adaptation of Candyland, Rico bounces around her varied discography, never letting the audience get too comfortable with one sound. Starting off with one of her most recent cuts, the soft, surf rock-inspired \"Magic,\" the magnetic performer pulls a switch-up on viewers by jumping into some of her more raucous bangers, the type that would normally incite a sweaty mosh pit at her concerts. Of course, she closes the set with a shredding version of her breakout single, the primal scream mantra of \"Smack A Bitch.\" The high-energy display evokes childlike joy and confection just as much as it does unapologetic savagery. \"I don't know where you at, where you watching this,\" Rico smirks at one point. \"You better break some s***.\"\n\nSince her early mixtape days all the way up to her 2020 debut album, Nightmare Vacation, Rico has waded in sonic dichotomy to blend her signature sound, deemed \"sugar trap,\" and in the process, became a beacon for women in rap to eloquently express their anger. As one of the DMV's most formidable forces, Rico always compels her fans to jump up, take charge and never apologize for what they feel.\n\nSET LIST\n\"Magic\"\n\"Rage\"\n\"OHFR?\"\n\"Trust Issues\"\n\"Smack a Bitch\"\n\nMUSICIANS\nRico Nasty: vocals\nLanita Smith: keys\nTiffani Walker: drummer\nKyla Wright: bassist\nLiso Lee: guitarist\nRodney Jones Jr.: MD\n\nCREDITS\nVideo: Lia B, Evan Avtal, Denis Rudchenko, Benjamin Meserve, Wayan Palmieri\nAudio: Cole Nystrom\n\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Bobby Carter, Kara Frame, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #riconasty", "Rico Nasty: Tiny Desk (Home) Concert", "b8b17885-8183-4f07-adca-d0fed0941fbb", 817, false, "z3ZFoo4-TdU", "https://www.youtube.com/watch?v=z3ZFoo4-TdU", 43, "/downloads/Tiny Desk/2021-09-03 Rico Nasty: Tiny Desk (Home) Concert/Rico Nasty: Tiny Desk (Home) Concert [z3ZFoo4-TdU].mp4", false, false, false, 2, [], 0, ~U[2021-09-03 09:00:24Z], ~U[2026-07-24 12:14:08Z], ~U[2026-07-24 12:14:08Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nSidney Madden | September 3, 2021\n\"I like having a band,\" Rico Nasty says with a giggle midway through her Tiny Desk (home) concert. \"Especially when it's all girls.\"\n\nAs an artist known to mash up the genres of rap, rock and pop — and create a safe space for women to do the same — Rico has rarely gotten the chance to put this full artistic collision on display. For her Tiny Desk debut, Rico takes every opportunity to flex her rage and range.\n\nDressed as if she's the main character out of a Tim Burton adaptation of Candyland, Rico bounces around her varied discography, never letting the audience get too comfortable with one sound. Starting off with one of her most recent cuts, the soft, surf rock-inspired \"Magic,\" the magnetic performer pulls a switch-up on viewers by jumping into some of her more raucous bangers, the type that would normally incite a sweaty mosh pit at her concerts. Of course, she closes the set with a shredding version of her breakout single, the primal scream mantra of \"Smack A Bitch.\" The high-energy display evokes childlike joy and confection just as much as it does unapologetic savagery. \"I don't know where you at, where you watching this,\" Rico smirks at one point. \"You better break some s***.\"\n\nSince her early mixtape days all the way up to her 2020 debut album, Nightmare Vacation, Rico has waded in sonic dichotomy to blend her signature sound, deemed \"sugar trap,\" and in the process, became a beacon for women in rap to eloquently express their anger. As one of the DMV's most formidable forces, Rico always compels her fans to jump up, take charge and never apologize for what they feel.\n\nSET LIST\n\"Magic\"\n\"Rage\"\n\"OHFR?\"\n\"Trust Issues\"\n\"Smack a Bitch\"\n\nMUSICIANS\nRico Nasty: vocals\nLanita Smith: keys\nTiffani Walker: drummer\nKyla Wright: bassist\nLiso Lee: guitarist\nRodney Jones Jr.: MD\n\nCREDITS\nVideo: Lia B, Evan Avtal, Denis Rudchenko, Benjamin Meserve, Wayan Palmieri\nAudio: Cole Nystrom\n\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Bobby Carter, Kara Frame, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #riconasty", "Rico Nasty: Tiny Desk (Home) Concert", 817, false, "z3ZFoo4-TdU", "https://www.youtube.com/watch?v=z3ZFoo4-TdU", "/downloads/Tiny Desk/2021-09-03 Rico Nasty: Tiny Desk (Home) Concert/Rico Nasty: Tiny Desk (Home) Concert [z3ZFoo4-TdU].mp4", false, 2, ~U[2021-09-03 09:00:24Z]] 14:14:08.331 [debug] QUERY OK source="sources" db=0.3ms idle=373.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:08.331 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:08.332 [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 [164] 14:14:08.332 [info] Kicking off download for media item #164 (z3ZFoo4-TdU) 14:14:08.334 [debug] QUERY OK source="tasks" db=0.1ms idle=2.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [112, 164, ~U[2026-07-24 12:14:08Z], ~U[2026-07-24 12:14:08Z]] 14:14:08.334 [debug] Current batch of media processed. Will check again in 1000ms 14:14:09.334 [debug] Current batch of media processed. Will check again in 1000ms 14:14:10.336 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | July 23, 2021\nAt the midpoint of Vince Staples' Tiny Desk (home) concert, he gazes through the sun-soaked windows of his Hollywood Hills location and pauses. \"You should see this view – I don't live here,\" he exclaims with pride. \"I would never live here.\" As to why he wouldn't give in to the spoils of success and relocate to a fancy spot in the Hills or Calabasas, he explains in the lyrics of the song that follows, \"THE SHINING\": I could never do it / I'm too active. That sentiment, the push-pull relationship with his North Long Beach home base, is a dominant theme of his new self-titled album, which he tells NPR is \"the clearest expression yet of who he is.\"\n\nDespite years-long demand from our audience on YouTube, this was the perfect time for a Vince Staples Tiny Desk performance. We've very rarely seen him perform with a band in the past. Then there's the sound of his new work – Kenny Beats, seen playing bass, handled the bulk of the production of the album, Staples' most melodic to date. The band, outfitted in blue khaki suits, was able to recreate the sound of Vince Staples seamlessly (it's mostly made up of players from the album), and coast wonderfully through this four-song set, punctuated by Vince's signature, tongue-in-cheek humor between songs. Always willing to share the spotlight with future stars (see Snoh Aalegra), he closes with the assistance of another on the horizon, the singer Fousheé, on \"TAKE ME HOME.\"\n\nSET LIST\n\"LAW OF AVERAGES\"\n\"SUNDOWN TOWN\"\n\"THE SHINING\"\n\"TAKE ME HOME\" (featuring Fousheé)\n\nMUSICIANS\nVince Staples: vocals\nKenny Beats: bass\nGio \"Dutchboi\" Ligeon: guitar, vocals\nReske: keys, vocals\nDavid Meyers Jr.: drums\nFousheé: vocals\n\nCREDITS\nVideo: Keaton Kinnaman, Jak Bannon, and Jess Colquhoun\nAudio: Tyler Page\nExecutive Producer: Corey \"Blacksmith\" Smyth\nProducer: Emily Hillgren\nCreative Directors: Travis Brothers and Bryan Rivera\nDirector of Photography: Charlie Owens\nProduction Assistants: Meghan Matthews and Colin Martin\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producer: Maia Stern\nAudio Mastering: Alex Drewenskus\nTiny Production Team: Bob Boilen, Kara Frame, Josh Rogosin, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #vincestaples", "duration" => 718, "filename" => "/downloads/Tiny Desk/2021-07-23 Vince Staples: Tiny Desk (Home) Concert/Vince Staples: Tiny Desk (Home) Concert [yN0I5xTjaGo].mp4", "id" => "yN0I5xTjaGo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=yN0I5xTjaGo", "playlist_index" => 44, "timestamp" => 1627056027, "title" => "Vince Staples: Tiny Desk (Home) Concert", "upload_date" => "20210723"} 14:14:10.336 [debug] QUERY OK source="sources" db=0.3ms idle=853.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:10.337 [debug] QUERY OK source="sources" db=0.1ms idle=854.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:10.337 [debug] QUERY OK source="media_items" db=0.2ms idle=854.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-07-23 16:00:27Z], 2] 14:14:10.339 [debug] QUERY OK source="media_items" db=1.2ms idle=854.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | July 23, 2021\nAt the midpoint of Vince Staples' Tiny Desk (home) concert, he gazes through the sun-soaked windows of his Hollywood Hills location and pauses. \"You should see this view – I don't live here,\" he exclaims with pride. \"I would never live here.\" As to why he wouldn't give in to the spoils of success and relocate to a fancy spot in the Hills or Calabasas, he explains in the lyrics of the song that follows, \"THE SHINING\": I could never do it / I'm too active. That sentiment, the push-pull relationship with his North Long Beach home base, is a dominant theme of his new self-titled album, which he tells NPR is \"the clearest expression yet of who he is.\"\n\nDespite years-long demand from our audience on YouTube, this was the perfect time for a Vince Staples Tiny Desk performance. We've very rarely seen him perform with a band in the past. Then there's the sound of his new work – Kenny Beats, seen playing bass, handled the bulk of the production of the album, Staples' most melodic to date. The band, outfitted in blue khaki suits, was able to recreate the sound of Vince Staples seamlessly (it's mostly made up of players from the album), and coast wonderfully through this four-song set, punctuated by Vince's signature, tongue-in-cheek humor between songs. Always willing to share the spotlight with future stars (see Snoh Aalegra), he closes with the assistance of another on the horizon, the singer Fousheé, on \"TAKE ME HOME.\"\n\nSET LIST\n\"LAW OF AVERAGES\"\n\"SUNDOWN TOWN\"\n\"THE SHINING\"\n\"TAKE ME HOME\" (featuring Fousheé)\n\nMUSICIANS\nVince Staples: vocals\nKenny Beats: bass\nGio \"Dutchboi\" Ligeon: guitar, vocals\nReske: keys, vocals\nDavid Meyers Jr.: drums\nFousheé: vocals\n\nCREDITS\nVideo: Keaton Kinnaman, Jak Bannon, and Jess Colquhoun\nAudio: Tyler Page\nExecutive Producer: Corey \"Blacksmith\" Smyth\nProducer: Emily Hillgren\nCreative Directors: Travis Brothers and Bryan Rivera\nDirector of Photography: Charlie Owens\nProduction Assistants: Meghan Matthews and Colin Martin\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producer: Maia Stern\nAudio Mastering: Alex Drewenskus\nTiny Production Team: Bob Boilen, Kara Frame, Josh Rogosin, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #vincestaples", "Vince Staples: Tiny Desk (Home) Concert", "6578c4ca-4bc5-4573-8e89-510330ffc2cf", 718, false, "yN0I5xTjaGo", "https://www.youtube.com/watch?v=yN0I5xTjaGo", 44, "/downloads/Tiny Desk/2021-07-23 Vince Staples: Tiny Desk (Home) Concert/Vince Staples: Tiny Desk (Home) Concert [yN0I5xTjaGo].mp4", false, false, false, 2, [], 0, ~U[2021-07-23 16:00:27Z], ~U[2026-07-24 12:14:10Z], ~U[2026-07-24 12:14:10Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | July 23, 2021\nAt the midpoint of Vince Staples' Tiny Desk (home) concert, he gazes through the sun-soaked windows of his Hollywood Hills location and pauses. \"You should see this view – I don't live here,\" he exclaims with pride. \"I would never live here.\" As to why he wouldn't give in to the spoils of success and relocate to a fancy spot in the Hills or Calabasas, he explains in the lyrics of the song that follows, \"THE SHINING\": I could never do it / I'm too active. That sentiment, the push-pull relationship with his North Long Beach home base, is a dominant theme of his new self-titled album, which he tells NPR is \"the clearest expression yet of who he is.\"\n\nDespite years-long demand from our audience on YouTube, this was the perfect time for a Vince Staples Tiny Desk performance. We've very rarely seen him perform with a band in the past. Then there's the sound of his new work – Kenny Beats, seen playing bass, handled the bulk of the production of the album, Staples' most melodic to date. The band, outfitted in blue khaki suits, was able to recreate the sound of Vince Staples seamlessly (it's mostly made up of players from the album), and coast wonderfully through this four-song set, punctuated by Vince's signature, tongue-in-cheek humor between songs. Always willing to share the spotlight with future stars (see Snoh Aalegra), he closes with the assistance of another on the horizon, the singer Fousheé, on \"TAKE ME HOME.\"\n\nSET LIST\n\"LAW OF AVERAGES\"\n\"SUNDOWN TOWN\"\n\"THE SHINING\"\n\"TAKE ME HOME\" (featuring Fousheé)\n\nMUSICIANS\nVince Staples: vocals\nKenny Beats: bass\nGio \"Dutchboi\" Ligeon: guitar, vocals\nReske: keys, vocals\nDavid Meyers Jr.: drums\nFousheé: vocals\n\nCREDITS\nVideo: Keaton Kinnaman, Jak Bannon, and Jess Colquhoun\nAudio: Tyler Page\nExecutive Producer: Corey \"Blacksmith\" Smyth\nProducer: Emily Hillgren\nCreative Directors: Travis Brothers and Bryan Rivera\nDirector of Photography: Charlie Owens\nProduction Assistants: Meghan Matthews and Colin Martin\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producer: Maia Stern\nAudio Mastering: Alex Drewenskus\nTiny Production Team: Bob Boilen, Kara Frame, Josh Rogosin, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #vincestaples", "Vince Staples: Tiny Desk (Home) Concert", 718, false, "yN0I5xTjaGo", "https://www.youtube.com/watch?v=yN0I5xTjaGo", "/downloads/Tiny Desk/2021-07-23 Vince Staples: Tiny Desk (Home) Concert/Vince Staples: Tiny Desk (Home) Concert [yN0I5xTjaGo].mp4", false, 2, ~U[2021-07-23 16:00:27Z]] 14:14:10.339 [debug] QUERY OK source="sources" db=0.1ms idle=378.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:10.340 [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" = ?) [2] 14:14:10.340 [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 [165] 14:14:10.340 [info] Kicking off download for media item #165 (yN0I5xTjaGo) 14:14:10.342 [debug] QUERY OK source="tasks" db=0.1ms idle=2.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [113, 165, ~U[2026-07-24 12:14:10Z], ~U[2026-07-24 12:14:10Z]] 14:14:10.342 [debug] Current batch of media processed. Will check again in 1000ms 14:14:11.342 [debug] Current batch of media processed. Will check again in 1000ms 14:14:12.343 [debug] Current batch of media processed. Will check again in 1000ms 14:14:12.985 [info] GET /sources 14:14:12.985 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:14:12.986 [debug] QUERY OK source="settings" db=0.3ms idle=1502.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:12.986 [debug] QUERY OK source="settings" db=0.1ms idle=1503.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:12.986 [debug] QUERY OK source="settings" db=0.1ms idle=1503.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:12.987 [debug] QUERY OK source="settings" db=0.0ms idle=1023.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:12.987 [debug] QUERY OK source="settings" db=0.3ms idle=22.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:12.988 [debug] QUERY OK source="sources" db=0.5ms 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)) [] 14:14:12.990 [debug] QUERY OK source="sources" db=1.7ms 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", 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] 14:14:12.992 [info] Sent 200 in 7ms 14:14:13.345 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nLyndsey McKenna | April 14, 2021\nA few years ago, some of us on the NPR Music team stumbled upon a copy of Demi Lovato's 2013 book, Staying Strong: 365 Days A Year. Reading Lovato's heartfelt daily reflections became a workday habit; her transparency and vulnerability made us ardent admirers who wanted nothing but the very best for Demi.\n\nWe made it our mission to get Demi to the Tiny Desk, and though the pandemic had other plans, Lovato's Tiny Desk (home) concert was worth the wait. Recorded on a sunny spring day in her Los Angeles backyard, Lovato begins with a moving rendition of \"Tell Me You Love Me\" from her 2017 record of the same name, accompanied by subtle, sparse keys. She continues her set with the title tracks from her recently-released studio album, Dancing With The Devil...The Art Of Starting Over. On both tracks, Lovato's voice feels stabilizing and grounding; there's a sense of clarity and purpose in its power.\n\nWhen interviewed by NPR's Ailsa Chang back in 2017, Demi Lovato said, \"I think I've lived a lot of life.\" Through both her struggles and successes, Lovato's shown all sides of herself – the confident and unapologetic star, but also the complexities of recovery – inviting us on her journey in a deeply personal way. Her intimate (home) concert feels like a natural extension of that sincerity.\n\nSET LIST\n\"Tell Me You Love Me\"\n\"The Art Of Starting Over\"\n\"Dancing With The Devil\"\n\nMUSICIANS\nDemi Lovato: vocals\nSteven \"Styles\" Rodriguez: keys\n\nCREDITS\nDirector: Mike Drew\nEditor: Aaron Kroger\nEngineer/Shader: David Vega\nCamera Operator: Austin Wavra\nCamera Operator: Noel Galan\nCamera Operator: Drew Welker\nAssistant Camera: Lawrence Montemayor\nAudio : Steven \"Styles\" Rodriguez\n\nTINY DESK TEAM\nProducers: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Kara Frame, Bob Boilen\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #demilovato", "duration" => 729, "filename" => "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].mp4", "id" => "Ehw07lXL1AY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Ehw07lXL1AY", "playlist_index" => 45, "timestamp" => 1618416012, "title" => "Demi Lovato: Tiny Desk (Home) Concert", "upload_date" => "20210414"} 14:14:13.348 [debug] QUERY OK source="sources" db=2.9ms queue=0.1ms idle=358.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:13.350 [debug] QUERY OK source="sources" db=2.0ms idle=361.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:13.353 [debug] QUERY OK source="media_items" db=1.5ms idle=363.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-04-14 16:00:12Z], 2] 14:14:13.358 [debug] QUERY OK source="media_items" db=4.1ms idle=364.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nLyndsey McKenna | April 14, 2021\nA few years ago, some of us on the NPR Music team stumbled upon a copy of Demi Lovato's 2013 book, Staying Strong: 365 Days A Year. Reading Lovato's heartfelt daily reflections became a workday habit; her transparency and vulnerability made us ardent admirers who wanted nothing but the very best for Demi.\n\nWe made it our mission to get Demi to the Tiny Desk, and though the pandemic had other plans, Lovato's Tiny Desk (home) concert was worth the wait. Recorded on a sunny spring day in her Los Angeles backyard, Lovato begins with a moving rendition of \"Tell Me You Love Me\" from her 2017 record of the same name, accompanied by subtle, sparse keys. She continues her set with the title tracks from her recently-released studio album, Dancing With The Devil...The Art Of Starting Over. On both tracks, Lovato's voice feels stabilizing and grounding; there's a sense of clarity and purpose in its power.\n\nWhen interviewed by NPR's Ailsa Chang back in 2017, Demi Lovato said, \"I think I've lived a lot of life.\" Through both her struggles and successes, Lovato's shown all sides of herself – the confident and unapologetic star, but also the complexities of recovery – inviting us on her journey in a deeply personal way. Her intimate (home) concert feels like a natural extension of that sincerity.\n\nSET LIST\n\"Tell Me You Love Me\"\n\"The Art Of Starting Over\"\n\"Dancing With The Devil\"\n\nMUSICIANS\nDemi Lovato: vocals\nSteven \"Styles\" Rodriguez: keys\n\nCREDITS\nDirector: Mike Drew\nEditor: Aaron Kroger\nEngineer/Shader: David Vega\nCamera Operator: Austin Wavra\nCamera Operator: Noel Galan\nCamera Operator: Drew Welker\nAssistant Camera: Lawrence Montemayor\nAudio : Steven \"Styles\" Rodriguez\n\nTINY DESK TEAM\nProducers: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Kara Frame, Bob Boilen\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #demilovato", "Demi Lovato: Tiny Desk (Home) Concert", "50e94898-9073-4377-ace6-54eb26620b0b", 729, false, "Ehw07lXL1AY", "https://www.youtube.com/watch?v=Ehw07lXL1AY", 45, "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].mp4", false, false, false, 2, [], 0, ~U[2021-04-14 16:00:12Z], ~U[2026-07-24 12:14:13Z], ~U[2026-07-24 12:14:13Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nLyndsey McKenna | April 14, 2021\nA few years ago, some of us on the NPR Music team stumbled upon a copy of Demi Lovato's 2013 book, Staying Strong: 365 Days A Year. Reading Lovato's heartfelt daily reflections became a workday habit; her transparency and vulnerability made us ardent admirers who wanted nothing but the very best for Demi.\n\nWe made it our mission to get Demi to the Tiny Desk, and though the pandemic had other plans, Lovato's Tiny Desk (home) concert was worth the wait. Recorded on a sunny spring day in her Los Angeles backyard, Lovato begins with a moving rendition of \"Tell Me You Love Me\" from her 2017 record of the same name, accompanied by subtle, sparse keys. She continues her set with the title tracks from her recently-released studio album, Dancing With The Devil...The Art Of Starting Over. On both tracks, Lovato's voice feels stabilizing and grounding; there's a sense of clarity and purpose in its power.\n\nWhen interviewed by NPR's Ailsa Chang back in 2017, Demi Lovato said, \"I think I've lived a lot of life.\" Through both her struggles and successes, Lovato's shown all sides of herself – the confident and unapologetic star, but also the complexities of recovery – inviting us on her journey in a deeply personal way. Her intimate (home) concert feels like a natural extension of that sincerity.\n\nSET LIST\n\"Tell Me You Love Me\"\n\"The Art Of Starting Over\"\n\"Dancing With The Devil\"\n\nMUSICIANS\nDemi Lovato: vocals\nSteven \"Styles\" Rodriguez: keys\n\nCREDITS\nDirector: Mike Drew\nEditor: Aaron Kroger\nEngineer/Shader: David Vega\nCamera Operator: Austin Wavra\nCamera Operator: Noel Galan\nCamera Operator: Drew Welker\nAssistant Camera: Lawrence Montemayor\nAudio : Steven \"Styles\" Rodriguez\n\nTINY DESK TEAM\nProducers: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Kara Frame, Bob Boilen\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #demilovato", "Demi Lovato: Tiny Desk (Home) Concert", 729, false, "Ehw07lXL1AY", "https://www.youtube.com/watch?v=Ehw07lXL1AY", "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].mp4", false, 2, ~U[2021-04-14 16:00:12Z]] 14:14:13.358 [debug] QUERY OK source="sources" db=0.5ms idle=367.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:13.359 [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" = ?) [2] 14:14:13.360 [debug] QUERY OK source="media_items" db=0.9ms 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 [166] 14:14:13.360 [info] Kicking off download for media item #166 (Ehw07lXL1AY) 14:14:13.362 [debug] QUERY OK source="tasks" db=0.4ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [114, 166, ~U[2026-07-24 12:14:13Z], ~U[2026-07-24 12:14:13Z]] 14:14:13.362 [debug] Current batch of media processed. Will check again in 1000ms 14:14:14.363 [debug] Current batch of media processed. Will check again in 1000ms 14:14:15.365 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAbby O’Neill | March 22, 2021\nMusic icon\u00A0Sting\u00A0returns to Tiny Desk with a new collaborator in tow, and the story is heartwarming. During the pandemic, Beninese pop star\u00A0Shirazee\u00A0adapted his own rendition of Sting's classic \"Englishman in New York\" into \"African in New York.\" His version made its way to Sting, who loved it so much that he asked Shirazee to lend his voice to his Tiny Desk (home) concert and record for his new\u00A0Duets\u00A0album.\n\nTheir chemistry feels natural and just as comforting as this long overdue sunshine after a grueling winter. Shot in a lounge in NYC where Sting's presently recording another album, these two gentlemen share a touching moment between songs, expressing their mutual admiration and discussing the sheer joy about a simple concept – performing in a room together after 12 long months of isolation and virtual collaborations.\n\nAs a follow up, Sting jumps into a stunning acoustic performance of \"If I Ever Lose My Faith in You,\" another one of his many classics. The timbre of his voice conjures a sense of carefree familiarity, reminiscent of times with more levity and peace. His finale, \"Sister Moon,\" is a gem from his 1987 solo album,\u00A0Nothing Like the Sun,\u00A0that rarely gets performed live.\n\nSET LIST\n • \"Englishman/African in New York\"\n • \"If I Ever Lose My Faith in You\"\n • \"Sister Moon\"\n\nMUSICIANS\n • Sting: vocals, guitar\n • Shirazee: vocals\n\nCREDITS\n • Video:\u00A0Modern Day Auteur, Franz Brun, Martin Kierszenbaum\n • Audio: Tony Lake\n\nTINY DESK TEAM\n • Producer: Abby O'Neill\n • Video Producer: Maia Stern\n • Audio Mastering: Josh Rogosin\n • Associate Producer: Bobby Carter\n • Tiny Production Team: Bob Boilen, Kara Frame\n • Executive Producer: Lauren Onkey\n • Senior VP, Programming: Anya Grundmann\n\n#sting #tinydesk #nprmusic", "duration" => 741, "filename" => "/downloads/Tiny Desk/2021-03-22 Sting: Tiny Desk (Home) Concert/Sting: Tiny Desk (Home) Concert [87_1W4P1F2A].mp4", "id" => "87_1W4P1F2A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=87_1W4P1F2A", "playlist_index" => 46, "timestamp" => 1616428811, "title" => "Sting: Tiny Desk (Home) Concert", "upload_date" => "20210322"} 14:14:15.366 [debug] QUERY OK source="sources" db=0.7ms idle=882.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:15.366 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 14:14:15.368 [debug] QUERY OK source="media_items" db=1.0ms queue=0.3ms idle=883.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-03-22 16:00:11Z], 2] 14:14:15.370 [debug] QUERY OK source="media_items" db=1.1ms queue=0.4ms idle=885.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAbby O’Neill | March 22, 2021\nMusic icon\u00A0Sting\u00A0returns to Tiny Desk with a new collaborator in tow, and the story is heartwarming. During the pandemic, Beninese pop star\u00A0Shirazee\u00A0adapted his own rendition of Sting's classic \"Englishman in New York\" into \"African in New York.\" His version made its way to Sting, who loved it so much that he asked Shirazee to lend his voice to his Tiny Desk (home) concert and record for his new\u00A0Duets\u00A0album.\n\nTheir chemistry feels natural and just as comforting as this long overdue sunshine after a grueling winter. Shot in a lounge in NYC where Sting's presently recording another album, these two gentlemen share a touching moment between songs, expressing their mutual admiration and discussing the sheer joy about a simple concept – performing in a room together after 12 long months of isolation and virtual collaborations.\n\nAs a follow up, Sting jumps into a stunning acoustic performance of \"If I Ever Lose My Faith in You,\" another one of his many classics. The timbre of his voice conjures a sense of carefree familiarity, reminiscent of times with more levity and peace. His finale, \"Sister Moon,\" is a gem from his 1987 solo album,\u00A0Nothing Like the Sun,\u00A0that rarely gets performed live.\n\nSET LIST\n • \"Englishman/African in New York\"\n • \"If I Ever Lose My Faith in You\"\n • \"Sister Moon\"\n\nMUSICIANS\n • Sting: vocals, guitar\n • Shirazee: vocals\n\nCREDITS\n • Video:\u00A0Modern Day Auteur, Franz Brun, Martin Kierszenbaum\n • Audio: Tony Lake\n\nTINY DESK TEAM\n • Producer: Abby O'Neill\n • Video Producer: Maia Stern\n • Audio Mastering: Josh Rogosin\n • Associate Producer: Bobby Carter\n • Tiny Production Team: Bob Boilen, Kara Frame\n • Executive Producer: Lauren Onkey\n • Senior VP, Programming: Anya Grundmann\n\n#sting #tinydesk #nprmusic", "Sting: Tiny Desk (Home) Concert", "a27f35d1-9741-4aeb-8411-6d8221ba2620", 741, false, "87_1W4P1F2A", "https://www.youtube.com/watch?v=87_1W4P1F2A", 46, "/downloads/Tiny Desk/2021-03-22 Sting: Tiny Desk (Home) Concert/Sting: Tiny Desk (Home) Concert [87_1W4P1F2A].mp4", false, false, false, 2, [], 0, ~U[2021-03-22 16:00:11Z], ~U[2026-07-24 12:14:15Z], ~U[2026-07-24 12:14:15Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAbby O’Neill | March 22, 2021\nMusic icon\u00A0Sting\u00A0returns to Tiny Desk with a new collaborator in tow, and the story is heartwarming. During the pandemic, Beninese pop star\u00A0Shirazee\u00A0adapted his own rendition of Sting's classic \"Englishman in New York\" into \"African in New York.\" His version made its way to Sting, who loved it so much that he asked Shirazee to lend his voice to his Tiny Desk (home) concert and record for his new\u00A0Duets\u00A0album.\n\nTheir chemistry feels natural and just as comforting as this long overdue sunshine after a grueling winter. Shot in a lounge in NYC where Sting's presently recording another album, these two gentlemen share a touching moment between songs, expressing their mutual admiration and discussing the sheer joy about a simple concept – performing in a room together after 12 long months of isolation and virtual collaborations.\n\nAs a follow up, Sting jumps into a stunning acoustic performance of \"If I Ever Lose My Faith in You,\" another one of his many classics. The timbre of his voice conjures a sense of carefree familiarity, reminiscent of times with more levity and peace. His finale, \"Sister Moon,\" is a gem from his 1987 solo album,\u00A0Nothing Like the Sun,\u00A0that rarely gets performed live.\n\nSET LIST\n • \"Englishman/African in New York\"\n • \"If I Ever Lose My Faith in You\"\n • \"Sister Moon\"\n\nMUSICIANS\n • Sting: vocals, guitar\n • Shirazee: vocals\n\nCREDITS\n • Video:\u00A0Modern Day Auteur, Franz Brun, Martin Kierszenbaum\n • Audio: Tony Lake\n\nTINY DESK TEAM\n • Producer: Abby O'Neill\n • Video Producer: Maia Stern\n • Audio Mastering: Josh Rogosin\n • Associate Producer: Bobby Carter\n • Tiny Production Team: Bob Boilen, Kara Frame\n • Executive Producer: Lauren Onkey\n • Senior VP, Programming: Anya Grundmann\n\n#sting #tinydesk #nprmusic", "Sting: Tiny Desk (Home) Concert", 741, false, "87_1W4P1F2A", "https://www.youtube.com/watch?v=87_1W4P1F2A", "/downloads/Tiny Desk/2021-03-22 Sting: Tiny Desk (Home) Concert/Sting: Tiny Desk (Home) Concert [87_1W4P1F2A].mp4", false, 2, ~U[2021-03-22 16:00:11Z]] 14:14:15.370 [debug] QUERY OK source="sources" db=0.3ms idle=402.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:15.371 [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" = ?) [2] 14:14:15.371 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [167] 14:14:15.371 [info] Kicking off download for media item #167 (87_1W4P1F2A) 14:14:15.373 [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" [115, 167, ~U[2026-07-24 12:14:15Z], ~U[2026-07-24 12:14:15Z]] 14:14:15.373 [debug] Current batch of media processed. Will check again in 1000ms 14:14:16.078 [info] GET /sources/2/edit 14:14:16.079 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:14:16.080 [debug] QUERY OK source="sources" db=0.4ms idle=708.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:16.081 [debug] QUERY OK source="media_profiles" db=0.4ms idle=707.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:14:16.081 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=708.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:16.082 [debug] QUERY OK source="settings" db=0.6ms idle=708.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:16.083 [debug] QUERY OK source="settings" db=0.4ms idle=113.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:16.085 [info] Sent 200 in 7ms 14:14:16.374 [debug] Current batch of media processed. Will check again in 1000ms 14:14:17.376 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "More from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\u200B\nTwitter: https://twitter.com/nprmusic\u200B\nInstagram: https://www.instagram.com/nprmusic\n\nMore from Justin Bieber:\n\"Peaches\" Video: https://justinbieber.lnk.to/PeachesVid\nJustice The Album Out Now: https://justinbieber.lnk.to/Justice \n\nThe Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nStephen Thompson | March 17, 2021\nIf you were to apply one of those \"how it started / how it's going\" memes to Tiny Desk (home) concerts — which began, it turns out, almost exactly one year ago — you'd have, under \"how it's going,\" the image of pop superstar Justin Bieber as he and his band perform the world premiere of a new song called \"Peaches.\"\n\n\"Peaches\" will exist in a significantly different form when Bieber drops his new album Justice on Friday — the track will feature guest vocals from GIVEŌN and Daniel Caesar — just as \"Holy,\" another song from Justice, opens this set without the presence of guest Chance the Rapper. But Bieber's Tiny Desk set, performed with the aid of We the Band, provides the fullest taste yet (fully 25 percent!) of the singer's sixth album, whose singles have already been streamed hundreds of millions of times.\n\nBieber has had a massive month as he prepares for Justice to drop: March 2021 began with the singer's 27th birthday and recently produced his second career Grammy, as he took the prize for best country duo or group performance for \"10,000 Hours\" with Dan + Shay. It continues with this, his Tiny Desk debut. Friday, the next chapter officially begins.\n\nSET LIST\n\"Holy\"\n\"Peaches\"\n\"Hold On\"\n\"Anyone\"\n\nMUSICIANS\nJustin Bieber: vocals, keys\nHarv: bass\nO'Neil \"Doctor O\" Palmer: keys\nDJ Tay James: DJ\nRobert Taylor: drums\nJulian McGuire: guitar\n\nCREDITS\nVideo: Nick Demoura, Mike Drew, Rory Kramer, Aaron Kroger, James Coker\nAudio: Jim Ebdon, Dylan Ely, James Roach, Chris Houghton, Taylor Meyer\nProduction Manager: Chris Gratton\nCamera Operators: Austin Wavra, Daniel Mardoyan, Noel Galan\nLighting Tech: Jim Mecsery\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producers: Maia Stern, Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Kara Frame\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#justinbieber #tinydesk #nprmusic #pop #rnb", "duration" => 915, "filename" => "/downloads/Tiny Desk/2021-03-17 Justin Bieber: Tiny Desk (Home) Concert/Justin Bieber: Tiny Desk (Home) Concert [Su6kidaGW_8].mp4", "id" => "Su6kidaGW_8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Su6kidaGW_8", "playlist_index" => 47, "timestamp" => 1615996815, "title" => "Justin Bieber: Tiny Desk (Home) Concert", "upload_date" => "20210317"} 14:14:17.377 [debug] QUERY OK source="sources" db=0.7ms idle=1295.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:17.377 [debug] QUERY OK source="sources" db=0.3ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:17.379 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=1295.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-03-17 16:00:15Z], 2] 14:14:17.382 [debug] QUERY OK source="media_items" db=2.5ms idle=1295.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["More from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\u200B\nTwitter: https://twitter.com/nprmusic\u200B\nInstagram: https://www.instagram.com/nprmusic\n\nMore from Justin Bieber:\n\"Peaches\" Video: https://justinbieber.lnk.to/PeachesVid\nJustice The Album Out Now: https://justinbieber.lnk.to/Justice \n\nThe Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nStephen Thompson | March 17, 2021\nIf you were to apply one of those \"how it started / how it's going\" memes to Tiny Desk (home) concerts — which began, it turns out, almost exactly one year ago — you'd have, under \"how it's going,\" the image of pop superstar Justin Bieber as he and his band perform the world premiere of a new song called \"Peaches.\"\n\n\"Peaches\" will exist in a significantly different form when Bieber drops his new album Justice on Friday — the track will feature guest vocals from GIVEŌN and Daniel Caesar — just as \"Holy,\" another song from Justice, opens this set without the presence of guest Chance the Rapper. But Bieber's Tiny Desk set, performed with the aid of We the Band, provides the fullest taste yet (fully 25 percent!) of the singer's sixth album, whose singles have already been streamed hundreds of millions of times.\n\nBieber has had a massive month as he prepares for Justice to drop: March 2021 began with the singer's 27th birthday and recently produced his second career Grammy, as he took the prize for best country duo or group performance for \"10,000 Hours\" with Dan + Shay. It continues with this, his Tiny Desk debut. Friday, the next chapter officially begins.\n\nSET LIST\n\"Holy\"\n\"Peaches\"\n\"Hold On\"\n\"Anyone\"\n\nMUSICIANS\nJustin Bieber: vocals, keys\nHarv: bass\nO'Neil \"Doctor O\" Palmer: keys\nDJ Tay James: DJ\nRobert Taylor: drums\nJulian McGuire: guitar\n\nCREDITS\nVideo: Nick Demoura, Mike Drew, Rory Kramer, Aaron Kroger, James Coker\nAudio: Jim Ebdon, Dylan Ely, James Roach, Chris Houghton, Taylor Meyer\nProduction Manager: Chris Gratton\nCamera Operators: Austin Wavra, Daniel Mardoyan, Noel Galan\nLighting Tech: Jim Mecsery\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producers: Maia Stern, Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Kara Frame\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#justinbieber #tinydesk #nprmusic #pop #rnb", "Justin Bieber: Tiny Desk (Home) Concert", "4e9faa92-713c-4cc3-a79b-0e1c2011437d", 915, false, "Su6kidaGW_8", "https://www.youtube.com/watch?v=Su6kidaGW_8", 47, "/downloads/Tiny Desk/2021-03-17 Justin Bieber: Tiny Desk (Home) Concert/Justin Bieber: Tiny Desk (Home) Concert [Su6kidaGW_8].mp4", false, false, false, 2, [], 0, ~U[2021-03-17 16:00:15Z], ~U[2026-07-24 12:14:17Z], ~U[2026-07-24 12:14:17Z], "More from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\u200B\nTwitter: https://twitter.com/nprmusic\u200B\nInstagram: https://www.instagram.com/nprmusic\n\nMore from Justin Bieber:\n\"Peaches\" Video: https://justinbieber.lnk.to/PeachesVid\nJustice The Album Out Now: https://justinbieber.lnk.to/Justice \n\nThe Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nStephen Thompson | March 17, 2021\nIf you were to apply one of those \"how it started / how it's going\" memes to Tiny Desk (home) concerts — which began, it turns out, almost exactly one year ago — you'd have, under \"how it's going,\" the image of pop superstar Justin Bieber as he and his band perform the world premiere of a new song called \"Peaches.\"\n\n\"Peaches\" will exist in a significantly different form when Bieber drops his new album Justice on Friday — the track will feature guest vocals from GIVEŌN and Daniel Caesar — just as \"Holy,\" another song from Justice, opens this set without the presence of guest Chance the Rapper. But Bieber's Tiny Desk set, performed with the aid of We the Band, provides the fullest taste yet (fully 25 percent!) of the singer's sixth album, whose singles have already been streamed hundreds of millions of times.\n\nBieber has had a massive month as he prepares for Justice to drop: March 2021 began with the singer's 27th birthday and recently produced his second career Grammy, as he took the prize for best country duo or group performance for \"10,000 Hours\" with Dan + Shay. It continues with this, his Tiny Desk debut. Friday, the next chapter officially begins.\n\nSET LIST\n\"Holy\"\n\"Peaches\"\n\"Hold On\"\n\"Anyone\"\n\nMUSICIANS\nJustin Bieber: vocals, keys\nHarv: bass\nO'Neil \"Doctor O\" Palmer: keys\nDJ Tay James: DJ\nRobert Taylor: drums\nJulian McGuire: guitar\n\nCREDITS\nVideo: Nick Demoura, Mike Drew, Rory Kramer, Aaron Kroger, James Coker\nAudio: Jim Ebdon, Dylan Ely, James Roach, Chris Houghton, Taylor Meyer\nProduction Manager: Chris Gratton\nCamera Operators: Austin Wavra, Daniel Mardoyan, Noel Galan\nLighting Tech: Jim Mecsery\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producers: Maia Stern, Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Kara Frame\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#justinbieber #tinydesk #nprmusic #pop #rnb", "Justin Bieber: Tiny Desk (Home) Concert", 915, false, "Su6kidaGW_8", "https://www.youtube.com/watch?v=Su6kidaGW_8", "/downloads/Tiny Desk/2021-03-17 Justin Bieber: Tiny Desk (Home) Concert/Justin Bieber: Tiny Desk (Home) Concert [Su6kidaGW_8].mp4", false, 2, ~U[2021-03-17 16:00:15Z]] 14:14:17.383 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=411.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:17.384 [debug] QUERY OK source="media_profiles" db=0.5ms idle=6.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:17.385 [debug] QUERY OK source="media_items" db=0.2ms idle=7.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [168] 14:14:17.385 [info] Kicking off download for media item #168 (Su6kidaGW_8) 14:14:17.387 [debug] QUERY OK source="tasks" db=0.2ms idle=3.8ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [116, 168, ~U[2026-07-24 12:14:17Z], ~U[2026-07-24 12:14:17Z]] 14:14:17.387 [debug] Current batch of media processed. Will check again in 1000ms 14:14:18.388 [debug] Current batch of media processed. Will check again in 1000ms 14:14:19.390 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nMiley Cyrus has always understood that music is theater. So it's no surprise that, visiting the imaginative space that is the Tiny Desk, she transforms it into something both fantastical and true to her topsy-turvy Mileyness.\n\nCyrus ruled preteen hearts on the small screen before mastering pop stardom's big stages, and throughout her career she's played with sound and image in unexpected and even controversial ways. And she's never balanced pop's glorious artifice with her own soulful authenticity more self-assuredly than she does on her latest album, the rock and roll manifesto Plastic Hearts.\n\nHere, the scene opens with Cyrus, dressed head to toe in rock-star faux fur, in what looks like a teenage girl's bedroom. But the perspective in this pink-and-purple space feels a little ... odd. As Cyrus sings, it becomes clear that this is her Wonderland – like Alice full of magical cake, she's grown to exceed her surroundings. By the end of this three-song set, Cyrus reveals that it's the adolescent enclave that grew too small for her, not the other way around.\n\nThe songs Cyrus offers are as direct and affecting as the set is whimsical. Cyrus has lately proven herself one of pop's great interpretive vocalists, and she scores another triumph with her version of Mazzy Star's \"Fade Into You,\" a hazy psychedelic anthem that she infuses with just the edge of the next day's hangover. The two songs from Plastic Hearts that follow are her own bids at classic-rock timelessness. In \"Golden G-String\" Cyrus assesses her own life in the spotlight with Leonard Cohen-esque charm. And \"Prisoner\" is the power ballad that lets Cyrus really break out – as she leaves the tiny room — just a box, it turns out, on a soundstage – and joins her band, she's as free and self-confident as she's ever been.\n\nSET LIST\n\"Fade Into You\"\n\"Golden G-String\"\n\"Prisoner\"\n\nMUSICIANS\nMiley Cyrus: vocals\nStacy Jones: drums\nMike Schmid: keys\nMax Bernstein: guitar\nJamie Arentzen: guitar\nJoe Ayoub: bass\n\nCREDITS\nProducer: Johnny Pascucci\nDirector: Alana O'Herlihy\nAssistant Director: Steve Bagnara\nDirector of Photography: Jordan Ritz\nSet Design: Eamonn McGlynn\nSound Tech: Johnny Karlsson\nFOH/Broadcast Engineer: Paul Hager\n\nTINY DESK TEAM\nProducers: Bob Boilen, Bobby Carter\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "duration" => 676, "filename" => "/downloads/Tiny Desk/2021-01-28 Miley Cyrus: Tiny Desk (Home) Concert/Miley Cyrus: Tiny Desk (Home) Concert [W5-yezpcZNU].mp4", "id" => "W5-yezpcZNU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=W5-yezpcZNU", "playlist_index" => 48, "timestamp" => 1611853211, "title" => "Miley Cyrus: Tiny Desk (Home) Concert", "upload_date" => "20210128"} 14:14:19.390 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=907.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:19.391 [debug] QUERY OK source="sources" db=0.3ms idle=908.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:19.391 [debug] QUERY OK source="media_items" db=0.2ms idle=908.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-01-28 17:00:11Z], 2] 14:14:19.394 [debug] QUERY OK source="media_items" db=1.8ms idle=909.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nMiley Cyrus has always understood that music is theater. So it's no surprise that, visiting the imaginative space that is the Tiny Desk, she transforms it into something both fantastical and true to her topsy-turvy Mileyness.\n\nCyrus ruled preteen hearts on the small screen before mastering pop stardom's big stages, and throughout her career she's played with sound and image in unexpected and even controversial ways. And she's never balanced pop's glorious artifice with her own soulful authenticity more self-assuredly than she does on her latest album, the rock and roll manifesto Plastic Hearts.\n\nHere, the scene opens with Cyrus, dressed head to toe in rock-star faux fur, in what looks like a teenage girl's bedroom. But the perspective in this pink-and-purple space feels a little ... odd. As Cyrus sings, it becomes clear that this is her Wonderland – like Alice full of magical cake, she's grown to exceed her surroundings. By the end of this three-song set, Cyrus reveals that it's the adolescent enclave that grew too small for her, not the other way around.\n\nThe songs Cyrus offers are as direct and affecting as the set is whimsical. Cyrus has lately proven herself one of pop's great interpretive vocalists, and she scores another triumph with her version of Mazzy Star's \"Fade Into You,\" a hazy psychedelic anthem that she infuses with just the edge of the next day's hangover. The two songs from Plastic Hearts that follow are her own bids at classic-rock timelessness. In \"Golden G-String\" Cyrus assesses her own life in the spotlight with Leonard Cohen-esque charm. And \"Prisoner\" is the power ballad that lets Cyrus really break out – as she leaves the tiny room — just a box, it turns out, on a soundstage – and joins her band, she's as free and self-confident as she's ever been.\n\nSET LIST\n\"Fade Into You\"\n\"Golden G-String\"\n\"Prisoner\"\n\nMUSICIANS\nMiley Cyrus: vocals\nStacy Jones: drums\nMike Schmid: keys\nMax Bernstein: guitar\nJamie Arentzen: guitar\nJoe Ayoub: bass\n\nCREDITS\nProducer: Johnny Pascucci\nDirector: Alana O'Herlihy\nAssistant Director: Steve Bagnara\nDirector of Photography: Jordan Ritz\nSet Design: Eamonn McGlynn\nSound Tech: Johnny Karlsson\nFOH/Broadcast Engineer: Paul Hager\n\nTINY DESK TEAM\nProducers: Bob Boilen, Bobby Carter\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Miley Cyrus: Tiny Desk (Home) Concert", "265f1379-dbde-4efd-94b6-fde140913728", 676, false, "W5-yezpcZNU", "https://www.youtube.com/watch?v=W5-yezpcZNU", 48, "/downloads/Tiny Desk/2021-01-28 Miley Cyrus: Tiny Desk (Home) Concert/Miley Cyrus: Tiny Desk (Home) Concert [W5-yezpcZNU].mp4", false, false, false, 2, [], 0, ~U[2021-01-28 17:00:11Z], ~U[2026-07-24 12:14:19Z], ~U[2026-07-24 12:14:19Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nMiley Cyrus has always understood that music is theater. So it's no surprise that, visiting the imaginative space that is the Tiny Desk, she transforms it into something both fantastical and true to her topsy-turvy Mileyness.\n\nCyrus ruled preteen hearts on the small screen before mastering pop stardom's big stages, and throughout her career she's played with sound and image in unexpected and even controversial ways. And she's never balanced pop's glorious artifice with her own soulful authenticity more self-assuredly than she does on her latest album, the rock and roll manifesto Plastic Hearts.\n\nHere, the scene opens with Cyrus, dressed head to toe in rock-star faux fur, in what looks like a teenage girl's bedroom. But the perspective in this pink-and-purple space feels a little ... odd. As Cyrus sings, it becomes clear that this is her Wonderland – like Alice full of magical cake, she's grown to exceed her surroundings. By the end of this three-song set, Cyrus reveals that it's the adolescent enclave that grew too small for her, not the other way around.\n\nThe songs Cyrus offers are as direct and affecting as the set is whimsical. Cyrus has lately proven herself one of pop's great interpretive vocalists, and she scores another triumph with her version of Mazzy Star's \"Fade Into You,\" a hazy psychedelic anthem that she infuses with just the edge of the next day's hangover. The two songs from Plastic Hearts that follow are her own bids at classic-rock timelessness. In \"Golden G-String\" Cyrus assesses her own life in the spotlight with Leonard Cohen-esque charm. And \"Prisoner\" is the power ballad that lets Cyrus really break out – as she leaves the tiny room — just a box, it turns out, on a soundstage – and joins her band, she's as free and self-confident as she's ever been.\n\nSET LIST\n\"Fade Into You\"\n\"Golden G-String\"\n\"Prisoner\"\n\nMUSICIANS\nMiley Cyrus: vocals\nStacy Jones: drums\nMike Schmid: keys\nMax Bernstein: guitar\nJamie Arentzen: guitar\nJoe Ayoub: bass\n\nCREDITS\nProducer: Johnny Pascucci\nDirector: Alana O'Herlihy\nAssistant Director: Steve Bagnara\nDirector of Photography: Jordan Ritz\nSet Design: Eamonn McGlynn\nSound Tech: Johnny Karlsson\nFOH/Broadcast Engineer: Paul Hager\n\nTINY DESK TEAM\nProducers: Bob Boilen, Bobby Carter\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Miley Cyrus: Tiny Desk (Home) Concert", 676, false, "W5-yezpcZNU", "https://www.youtube.com/watch?v=W5-yezpcZNU", "/downloads/Tiny Desk/2021-01-28 Miley Cyrus: Tiny Desk (Home) Concert/Miley Cyrus: Tiny Desk (Home) Concert [W5-yezpcZNU].mp4", false, 2, ~U[2021-01-28 17:00:11Z]] 14:14:19.394 [debug] QUERY OK source="sources" db=0.2ms idle=420.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:19.395 [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" = ?) [2] 14:14:19.395 [debug] QUERY OK source="media_items" db=0.4ms 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 [169] 14:14:19.396 [info] Kicking off download for media item #169 (W5-yezpcZNU) 14:14:19.398 [debug] QUERY OK source="tasks" db=0.1ms idle=2.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [117, 169, ~U[2026-07-24 12:14:19Z], ~U[2026-07-24 12:14:19Z]] 14:14:19.398 [debug] Current batch of media processed. Will check again in 1000ms 14:14:20.398 [debug] Current batch of media processed. Will check again in 1000ms 14:14:21.400 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 4, 2020 | Abby O'Neill -- With a genuine smile stretched across her face, Dua Lipa seems overjoyed to reconnect with her band for their only performance since their tour in support of her sophomore album, Future Nostalgia, was cancelled in March. Glowing from the inside out and accentuated by the apricot hues of a backdrop in a London studio, Dua and her backup vocalists and band bring life and warmth into households in need of \"levitating\" and some pep in their step this winter. This vibrant four song set of dance hits, all from Future Nostalgia, will surely have you cutting up the floor in your kitchen while quarantining in the cold weather.\n\nWhile we can't film our Tiny Desk concerts at NPR's D.C. office during the pandemic, our \"home\" series has created opportunity for global megastars like Dua Lipa to bring her uptempo dance joints all the way from London. Of Kosovar Albanian descent, Dua Lipa was raised in the UK and rose to super stardom in the three years since her eponymous debut album dropped in 2017. NPR Music featured her in our docu-series Noteworthy at the onset of her career. It's been extraordinary to witness her colossal takeover of the pop music landscape. Dua sums the times during her intro of \"Love Again\": \"It's about manifesting good things into your life, when things aren't quite going your way.\"\n\nSET LIST\n\"Levitating\"\n\"Pretty Please\"\n\"Love Again\"\n\"Don't Start Now\"\n\nMUSICIANS\nDua Lipa: vocals\nMatthew Carroll: bass\nAlex Lanyon: guitar\nNaomi Scarlett: vocals\nCiara O'Connor: vocals\nIzzy Chase: vocals\nMatt Maijah: vocals\n\nCREDITS\nVideo: Ceremony London, James Barnes\nAudio: WFB Live, Will Nicholson\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "duration" => 958, "filename" => "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].mp4", "id" => "F4neLJQC1_E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=F4neLJQC1_E", "playlist_index" => 49, "timestamp" => 1607101210, "title" => "Dua Lipa: Tiny Desk (Home) Concert", "upload_date" => "20201204"} 14:14:21.401 [debug] QUERY OK source="sources" db=0.9ms idle=917.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:21.402 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=919.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:21.403 [debug] QUERY OK source="media_items" db=0.4ms idle=919.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-12-04 17:00:10Z], 2] 14:14:21.405 [debug] QUERY OK source="media_items" db=1.2ms idle=920.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 4, 2020 | Abby O'Neill -- With a genuine smile stretched across her face, Dua Lipa seems overjoyed to reconnect with her band for their only performance since their tour in support of her sophomore album, Future Nostalgia, was cancelled in March. Glowing from the inside out and accentuated by the apricot hues of a backdrop in a London studio, Dua and her backup vocalists and band bring life and warmth into households in need of \"levitating\" and some pep in their step this winter. This vibrant four song set of dance hits, all from Future Nostalgia, will surely have you cutting up the floor in your kitchen while quarantining in the cold weather.\n\nWhile we can't film our Tiny Desk concerts at NPR's D.C. office during the pandemic, our \"home\" series has created opportunity for global megastars like Dua Lipa to bring her uptempo dance joints all the way from London. Of Kosovar Albanian descent, Dua Lipa was raised in the UK and rose to super stardom in the three years since her eponymous debut album dropped in 2017. NPR Music featured her in our docu-series Noteworthy at the onset of her career. It's been extraordinary to witness her colossal takeover of the pop music landscape. Dua sums the times during her intro of \"Love Again\": \"It's about manifesting good things into your life, when things aren't quite going your way.\"\n\nSET LIST\n\"Levitating\"\n\"Pretty Please\"\n\"Love Again\"\n\"Don't Start Now\"\n\nMUSICIANS\nDua Lipa: vocals\nMatthew Carroll: bass\nAlex Lanyon: guitar\nNaomi Scarlett: vocals\nCiara O'Connor: vocals\nIzzy Chase: vocals\nMatt Maijah: vocals\n\nCREDITS\nVideo: Ceremony London, James Barnes\nAudio: WFB Live, Will Nicholson\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Dua Lipa: Tiny Desk (Home) Concert", "73f16294-b88d-4de0-ae00-d64061ff22f3", 958, false, "F4neLJQC1_E", "https://www.youtube.com/watch?v=F4neLJQC1_E", 49, "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].mp4", false, false, false, 2, [], 0, ~U[2020-12-04 17:00:10Z], ~U[2026-07-24 12:14:21Z], ~U[2026-07-24 12:14:21Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 4, 2020 | Abby O'Neill -- With a genuine smile stretched across her face, Dua Lipa seems overjoyed to reconnect with her band for their only performance since their tour in support of her sophomore album, Future Nostalgia, was cancelled in March. Glowing from the inside out and accentuated by the apricot hues of a backdrop in a London studio, Dua and her backup vocalists and band bring life and warmth into households in need of \"levitating\" and some pep in their step this winter. This vibrant four song set of dance hits, all from Future Nostalgia, will surely have you cutting up the floor in your kitchen while quarantining in the cold weather.\n\nWhile we can't film our Tiny Desk concerts at NPR's D.C. office during the pandemic, our \"home\" series has created opportunity for global megastars like Dua Lipa to bring her uptempo dance joints all the way from London. Of Kosovar Albanian descent, Dua Lipa was raised in the UK and rose to super stardom in the three years since her eponymous debut album dropped in 2017. NPR Music featured her in our docu-series Noteworthy at the onset of her career. It's been extraordinary to witness her colossal takeover of the pop music landscape. Dua sums the times during her intro of \"Love Again\": \"It's about manifesting good things into your life, when things aren't quite going your way.\"\n\nSET LIST\n\"Levitating\"\n\"Pretty Please\"\n\"Love Again\"\n\"Don't Start Now\"\n\nMUSICIANS\nDua Lipa: vocals\nMatthew Carroll: bass\nAlex Lanyon: guitar\nNaomi Scarlett: vocals\nCiara O'Connor: vocals\nIzzy Chase: vocals\nMatt Maijah: vocals\n\nCREDITS\nVideo: Ceremony London, James Barnes\nAudio: WFB Live, Will Nicholson\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Dua Lipa: Tiny Desk (Home) Concert", 958, false, "F4neLJQC1_E", "https://www.youtube.com/watch?v=F4neLJQC1_E", "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].mp4", false, 2, ~U[2020-12-04 17:00:10Z]] 14:14:21.405 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [2] 14:14:21.406 [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" = ?) [2] 14:14:21.406 [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 [170] 14:14:21.406 [info] Kicking off download for media item #170 (F4neLJQC1_E) 14:14:21.408 [debug] QUERY OK source="tasks" db=0.1ms idle=2.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [118, 170, ~U[2026-07-24 12:14:21Z], ~U[2026-07-24 12:14:21Z]] 14:14:21.408 [debug] Current batch of media processed. Will check again in 1000ms 14:14:22.408 [debug] Current batch of media processed. Will check again in 1000ms 14:14:22.565 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:23.410 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAug. 26, 2020 | Stephen Thompson -- It didn't take long for Billie Eilish to become one of the biggest pop stars in the world, sweep the Grammy Awards' major categories and release the latest James Bond theme. And today, at just 18, she and her brother, Finneas, have accomplished what no one has been able to do for five and a half months: perform a Tiny Desk concert in what certainly appears to be the NPR Music offices.\n\nOf course, due to safety concerns, even the NPR Music staff can't set foot in the building that houses Bob Boilen's desk. But if you look over Eilish's shoulder, there's no mistaking the signs that she's appearing at the Tiny Desk in its present-day form: On the last day before staff began working from home, I took home the Green Bay Packers helmet that sat on the top shelf — the one Harry Styles had signed a few weeks earlier — for safe keeping. In this performance, that spot is empty.\n\nSo how the heck did they do it?\n\nHonestly, it's best that you watch the whole video to experience the extent of the technical feat — which, in the spirit of Eilish's Saturday Night Live performance, they're willing to share with you. And thankfully, we still have our ways of photographing the desk, even if the room has fallen silent.\n\nSo settle in for a welcome jolt of Tiny Desk innovation, not to mention two of the excellent standalone singles Billie Eilish has released in the past year: \"my future\" and \"everything i wanted.\" And, seriously, be sure to watch until the very end.\n\nSET LIST\n\"my future\"\n\"everything i wanted\"\n\nMUSICIANS\nBillie Eilish: vocals, keys; Finneas: keys, guitar\n\nCREDITS\nVideo by: Matty Vogel; Audio by: Finneas; Art Director: Henry Hickman; Producer: Bob Boilen; Audio Mastering Engineer: Josh Rogosin; Video Producer: Morgan Noelle Smith; Associate Producer: Bobby Carter; Photographer: Michael Cullen; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "duration" => 601, "filename" => "/downloads/Tiny Desk/2020-08-26 Billie Eilish: Tiny Desk (Home) Concert/Billie Eilish: Tiny Desk (Home) Concert [4sZ2_aGsLKU].mp4", "id" => "4sZ2_aGsLKU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4sZ2_aGsLKU", "playlist_index" => 50, "timestamp" => 1598450414, "title" => "Billie Eilish: Tiny Desk (Home) Concert", "upload_date" => "20200826"} 14:14:23.410 [debug] QUERY OK source="sources" db=0.2ms idle=927.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:23.411 [debug] QUERY OK source="sources" db=0.1ms idle=928.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:23.411 [debug] QUERY OK source="media_items" db=0.4ms idle=928.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-08-26 14:00:14Z], 2] 14:14:23.414 [debug] QUERY OK source="media_items" db=1.5ms idle=846.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAug. 26, 2020 | Stephen Thompson -- It didn't take long for Billie Eilish to become one of the biggest pop stars in the world, sweep the Grammy Awards' major categories and release the latest James Bond theme. And today, at just 18, she and her brother, Finneas, have accomplished what no one has been able to do for five and a half months: perform a Tiny Desk concert in what certainly appears to be the NPR Music offices.\n\nOf course, due to safety concerns, even the NPR Music staff can't set foot in the building that houses Bob Boilen's desk. But if you look over Eilish's shoulder, there's no mistaking the signs that she's appearing at the Tiny Desk in its present-day form: On the last day before staff began working from home, I took home the Green Bay Packers helmet that sat on the top shelf — the one Harry Styles had signed a few weeks earlier — for safe keeping. In this performance, that spot is empty.\n\nSo how the heck did they do it?\n\nHonestly, it's best that you watch the whole video to experience the extent of the technical feat — which, in the spirit of Eilish's Saturday Night Live performance, they're willing to share with you. And thankfully, we still have our ways of photographing the desk, even if the room has fallen silent.\n\nSo settle in for a welcome jolt of Tiny Desk innovation, not to mention two of the excellent standalone singles Billie Eilish has released in the past year: \"my future\" and \"everything i wanted.\" And, seriously, be sure to watch until the very end.\n\nSET LIST\n\"my future\"\n\"everything i wanted\"\n\nMUSICIANS\nBillie Eilish: vocals, keys; Finneas: keys, guitar\n\nCREDITS\nVideo by: Matty Vogel; Audio by: Finneas; Art Director: Henry Hickman; Producer: Bob Boilen; Audio Mastering Engineer: Josh Rogosin; Video Producer: Morgan Noelle Smith; Associate Producer: Bobby Carter; Photographer: Michael Cullen; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Billie Eilish: Tiny Desk (Home) Concert", "c64cb653-6b35-4483-8ab4-bf650a169821", 601, false, "4sZ2_aGsLKU", "https://www.youtube.com/watch?v=4sZ2_aGsLKU", 50, "/downloads/Tiny Desk/2020-08-26 Billie Eilish: Tiny Desk (Home) Concert/Billie Eilish: Tiny Desk (Home) Concert [4sZ2_aGsLKU].mp4", false, false, false, 2, [], 0, ~U[2020-08-26 14:00:14Z], ~U[2026-07-24 12:14:23Z], ~U[2026-07-24 12:14:23Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAug. 26, 2020 | Stephen Thompson -- It didn't take long for Billie Eilish to become one of the biggest pop stars in the world, sweep the Grammy Awards' major categories and release the latest James Bond theme. And today, at just 18, she and her brother, Finneas, have accomplished what no one has been able to do for five and a half months: perform a Tiny Desk concert in what certainly appears to be the NPR Music offices.\n\nOf course, due to safety concerns, even the NPR Music staff can't set foot in the building that houses Bob Boilen's desk. But if you look over Eilish's shoulder, there's no mistaking the signs that she's appearing at the Tiny Desk in its present-day form: On the last day before staff began working from home, I took home the Green Bay Packers helmet that sat on the top shelf — the one Harry Styles had signed a few weeks earlier — for safe keeping. In this performance, that spot is empty.\n\nSo how the heck did they do it?\n\nHonestly, it's best that you watch the whole video to experience the extent of the technical feat — which, in the spirit of Eilish's Saturday Night Live performance, they're willing to share with you. And thankfully, we still have our ways of photographing the desk, even if the room has fallen silent.\n\nSo settle in for a welcome jolt of Tiny Desk innovation, not to mention two of the excellent standalone singles Billie Eilish has released in the past year: \"my future\" and \"everything i wanted.\" And, seriously, be sure to watch until the very end.\n\nSET LIST\n\"my future\"\n\"everything i wanted\"\n\nMUSICIANS\nBillie Eilish: vocals, keys; Finneas: keys, guitar\n\nCREDITS\nVideo by: Matty Vogel; Audio by: Finneas; Art Director: Henry Hickman; Producer: Bob Boilen; Audio Mastering Engineer: Josh Rogosin; Video Producer: Morgan Noelle Smith; Associate Producer: Bobby Carter; Photographer: Michael Cullen; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Billie Eilish: Tiny Desk (Home) Concert", 601, false, "4sZ2_aGsLKU", "https://www.youtube.com/watch?v=4sZ2_aGsLKU", "/downloads/Tiny Desk/2020-08-26 Billie Eilish: Tiny Desk (Home) Concert/Billie Eilish: Tiny Desk (Home) Concert [4sZ2_aGsLKU].mp4", false, 2, ~U[2020-08-26 14:00:14Z]] 14:14:23.414 [debug] QUERY OK source="sources" db=0.1ms idle=434.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:23.415 [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" = ?) [2] 14:14:23.415 [debug] QUERY OK source="media_items" db=0.4ms 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 [171] 14:14:23.415 [info] Kicking off download for media item #171 (4sZ2_aGsLKU) 14:14:23.418 [debug] QUERY OK source="tasks" db=0.4ms idle=3.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [119, 171, ~U[2026-07-24 12:14:23Z], ~U[2026-07-24 12:14:23Z]] 14:14:23.418 [debug] Current batch of media processed. Will check again in 1000ms 14:14:24.423 [debug] Current batch of media processed. Will check again in 1000ms 14:14:25.424 [debug] Current batch of media processed. Will check again in 1000ms 14:14:26.426 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | August 24, 2020\nWith beats, effects and synths pumping through a DJ mixer sitting on a school desk in his home studio in Australia, we present Tame Impala like you've never heard it before. As much as I love Tame Impala's music, I'm probably more intrigued by the creative process that brings the songs to life. The studio version of the band is pretty simple on paper: All songs are written, produced and performed by Kevin Parker. For the live version, Parker is still front and center but surrounded by a host of musicians who interpret his recorded work almost to a tee.\n\nSo it came as a shock to me when the Australian maestro explained what he wanted to do for his Tiny Desk (home) concert or his \"Tame Impala Soundsystem\" as he puts it. \"I'll get Jay (Watson) and Dom (Simper) and we'll do this kind of electronic jam with heaps of equipment around us and we'll recreate the songs with samplers and sequencers,\" Parker says. \"I've wanted to do something like this for a while and thought Tiny Desk would be the opportunity to do it.\"\n\nSET LIST\n\"Breathe Deeper\"\n\"Is It True\"\n\"Patience\"\n\nMUSICIANS\nKevin Parker: vocals; Jay Watson: music; Dom Simper: music\n\nCREDITS\nVideo by: Jamie Terry, Shiney Joe Ryan; Audio by: Kevin Parker, James Ireland; Producer: Bobby Carter; Audio Mastering Engineer: Josh Rogosin; Video Producer: Maia Stern; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "duration" => 981, "filename" => "/downloads/Tiny Desk/2020-08-24 Tame Impala: Tiny Desk (Home) Concert/Tame Impala: Tiny Desk (Home) Concert [C24hUt18RWY].mp4", "id" => "C24hUt18RWY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=C24hUt18RWY", "playlist_index" => 51, "timestamp" => 1598277611, "title" => "Tame Impala: Tiny Desk (Home) Concert", "upload_date" => "20200824"} 14:14:26.426 [debug] QUERY OK source="sources" db=0.2ms idle=1943.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:26.426 [debug] QUERY OK source="sources" db=0.2ms idle=1943.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:26.427 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=1944.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-08-24 14:00:11Z], 2] 14:14:26.433 [debug] QUERY OK source="media_items" db=4.8ms idle=1445.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | August 24, 2020\nWith beats, effects and synths pumping through a DJ mixer sitting on a school desk in his home studio in Australia, we present Tame Impala like you've never heard it before. As much as I love Tame Impala's music, I'm probably more intrigued by the creative process that brings the songs to life. The studio version of the band is pretty simple on paper: All songs are written, produced and performed by Kevin Parker. For the live version, Parker is still front and center but surrounded by a host of musicians who interpret his recorded work almost to a tee.\n\nSo it came as a shock to me when the Australian maestro explained what he wanted to do for his Tiny Desk (home) concert or his \"Tame Impala Soundsystem\" as he puts it. \"I'll get Jay (Watson) and Dom (Simper) and we'll do this kind of electronic jam with heaps of equipment around us and we'll recreate the songs with samplers and sequencers,\" Parker says. \"I've wanted to do something like this for a while and thought Tiny Desk would be the opportunity to do it.\"\n\nSET LIST\n\"Breathe Deeper\"\n\"Is It True\"\n\"Patience\"\n\nMUSICIANS\nKevin Parker: vocals; Jay Watson: music; Dom Simper: music\n\nCREDITS\nVideo by: Jamie Terry, Shiney Joe Ryan; Audio by: Kevin Parker, James Ireland; Producer: Bobby Carter; Audio Mastering Engineer: Josh Rogosin; Video Producer: Maia Stern; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Tame Impala: Tiny Desk (Home) Concert", "756826cd-ece0-4edf-ac97-0ef2e29adf32", 981, false, "C24hUt18RWY", "https://www.youtube.com/watch?v=C24hUt18RWY", 51, "/downloads/Tiny Desk/2020-08-24 Tame Impala: Tiny Desk (Home) Concert/Tame Impala: Tiny Desk (Home) Concert [C24hUt18RWY].mp4", false, false, false, 2, [], 0, ~U[2020-08-24 14:00:11Z], ~U[2026-07-24 12:14:26Z], ~U[2026-07-24 12:14:26Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | August 24, 2020\nWith beats, effects and synths pumping through a DJ mixer sitting on a school desk in his home studio in Australia, we present Tame Impala like you've never heard it before. As much as I love Tame Impala's music, I'm probably more intrigued by the creative process that brings the songs to life. The studio version of the band is pretty simple on paper: All songs are written, produced and performed by Kevin Parker. For the live version, Parker is still front and center but surrounded by a host of musicians who interpret his recorded work almost to a tee.\n\nSo it came as a shock to me when the Australian maestro explained what he wanted to do for his Tiny Desk (home) concert or his \"Tame Impala Soundsystem\" as he puts it. \"I'll get Jay (Watson) and Dom (Simper) and we'll do this kind of electronic jam with heaps of equipment around us and we'll recreate the songs with samplers and sequencers,\" Parker says. \"I've wanted to do something like this for a while and thought Tiny Desk would be the opportunity to do it.\"\n\nSET LIST\n\"Breathe Deeper\"\n\"Is It True\"\n\"Patience\"\n\nMUSICIANS\nKevin Parker: vocals; Jay Watson: music; Dom Simper: music\n\nCREDITS\nVideo by: Jamie Terry, Shiney Joe Ryan; Audio by: Kevin Parker, James Ireland; Producer: Bobby Carter; Audio Mastering Engineer: Josh Rogosin; Video Producer: Maia Stern; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Tame Impala: Tiny Desk (Home) Concert", 981, false, "C24hUt18RWY", "https://www.youtube.com/watch?v=C24hUt18RWY", "/downloads/Tiny Desk/2020-08-24 Tame Impala: Tiny Desk (Home) Concert/Tame Impala: Tiny Desk (Home) Concert [C24hUt18RWY].mp4", false, 2, ~U[2020-08-24 14:00:11Z]] 14:14:26.433 [debug] QUERY OK source="sources" db=0.4ms idle=449.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:26.434 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.2ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:26.435 [debug] QUERY OK source="media_items" db=0.4ms queue=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 [172] 14:14:26.435 [info] Kicking off download for media item #172 (C24hUt18RWY) 14:14:26.439 [debug] QUERY OK source="tasks" db=0.6ms idle=4.4ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [120, 172, ~U[2026-07-24 12:14:26Z], ~U[2026-07-24 12:14:26Z]] 14:14:26.439 [debug] Current batch of media processed. Will check again in 1000ms 14:14:27.439 [debug] Current batch of media processed. Will check again in 1000ms 14:14:28.441 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Robin Hilton | July 9, 2025\nWe've been chasing a Wet Leg Tiny Desk ever since the Isle of Wight band floored us with the 2021 single \"Chaise Longue,\" a song that, like much of the group's work, is as understated and droll as it is frenetic and infectious.\n\nSo, when we finally got Wet Leg into the office to record this performance, we weren't surprised by the amount of playful swagger the band brought, or by how carefully calibrated the set was. But fans might be surprised by how much Wet Leg leans into that more understated side. You won't hear \"Chaise Longue\" or \"Catch These Fists,\" the ripping first single from the upcoming album, moisturizer. Instead, singer Rhian Teasdale and the rest of the band chose to spotlight the album's core themes: the joy of being in love in a state of bliss.\n\nThat's not to say it's a quiet or entirely restrained set. The band opens with \"CPR,\" a heady alarm about obsession and the ways unchecked love can dismantle you, followed by a preview of the not-yet-released \"mangetout\" from moisturizer. They also perform the carefree, sunny-day single \"davina mccall,\" a showcase for Teasdale's gorgeous voice, before closing with another unreleased track from moisturizer — and one the band says it's never played live for anyone before — a languid, dreamy ode to the enduring power of love called \"11:21.\"\n\nSET LIST\n\"CPR\"\n\"mangetout\"\n\"davina mccall\"\n\"11:21\"\n\nMUSICIANS\nRhian Teasdale: vocals, guitar\nHester Chambers: guitar, keys, background vocals\nJoshua Mobaraki: guitar, synth, MPC, background vocals\nEllis Durand: bass, background vocals\nHenry Holmes: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Maia Stern\nAudio Engineer: Neil Tevault\nProduction Assistant: Dora Levite\nPhotographer: Zayrha Rodriguez\nCopy Editor: Hazel Cills\nTiny Desk Team: Lars Gotrich, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #wetleg \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "duration" => 1020, "filename" => "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].mp4", "id" => "AzUHNjKMeV4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=AzUHNjKMeV4", "playlist_index" => 52, "timestamp" => 1752051626, "title" => "Wet Leg: Tiny Desk Concert", "upload_date" => "20250709"} 14:14:28.441 [debug] QUERY OK source="sources" db=0.3ms idle=958.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:14:28.442 [debug] QUERY OK source="sources" db=0.1ms idle=959.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:28.442 [debug] QUERY OK source="media_items" db=0.2ms idle=959.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-09 09:00:26Z], 2] 14:14:28.444 [debug] QUERY OK source="media_items" db=1.3ms idle=959.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | July 9, 2025\nWe've been chasing a Wet Leg Tiny Desk ever since the Isle of Wight band floored us with the 2021 single \"Chaise Longue,\" a song that, like much of the group's work, is as understated and droll as it is frenetic and infectious.\n\nSo, when we finally got Wet Leg into the office to record this performance, we weren't surprised by the amount of playful swagger the band brought, or by how carefully calibrated the set was. But fans might be surprised by how much Wet Leg leans into that more understated side. You won't hear \"Chaise Longue\" or \"Catch These Fists,\" the ripping first single from the upcoming album, moisturizer. Instead, singer Rhian Teasdale and the rest of the band chose to spotlight the album's core themes: the joy of being in love in a state of bliss.\n\nThat's not to say it's a quiet or entirely restrained set. The band opens with \"CPR,\" a heady alarm about obsession and the ways unchecked love can dismantle you, followed by a preview of the not-yet-released \"mangetout\" from moisturizer. They also perform the carefree, sunny-day single \"davina mccall,\" a showcase for Teasdale's gorgeous voice, before closing with another unreleased track from moisturizer — and one the band says it's never played live for anyone before — a languid, dreamy ode to the enduring power of love called \"11:21.\"\n\nSET LIST\n\"CPR\"\n\"mangetout\"\n\"davina mccall\"\n\"11:21\"\n\nMUSICIANS\nRhian Teasdale: vocals, guitar\nHester Chambers: guitar, keys, background vocals\nJoshua Mobaraki: guitar, synth, MPC, background vocals\nEllis Durand: bass, background vocals\nHenry Holmes: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Maia Stern\nAudio Engineer: Neil Tevault\nProduction Assistant: Dora Levite\nPhotographer: Zayrha Rodriguez\nCopy Editor: Hazel Cills\nTiny Desk Team: Lars Gotrich, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #wetleg \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "Wet Leg: Tiny Desk Concert", "42350e7d-c550-4eda-aa00-1e933c6b161c", 1020, false, "AzUHNjKMeV4", "https://www.youtube.com/watch?v=AzUHNjKMeV4", 52, "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].mp4", false, false, false, 2, [], 0, ~U[2025-07-09 09:00:26Z], ~U[2026-07-24 12:14:28Z], ~U[2026-07-24 12:14:28Z], "Robin Hilton | July 9, 2025\nWe've been chasing a Wet Leg Tiny Desk ever since the Isle of Wight band floored us with the 2021 single \"Chaise Longue,\" a song that, like much of the group's work, is as understated and droll as it is frenetic and infectious.\n\nSo, when we finally got Wet Leg into the office to record this performance, we weren't surprised by the amount of playful swagger the band brought, or by how carefully calibrated the set was. But fans might be surprised by how much Wet Leg leans into that more understated side. You won't hear \"Chaise Longue\" or \"Catch These Fists,\" the ripping first single from the upcoming album, moisturizer. Instead, singer Rhian Teasdale and the rest of the band chose to spotlight the album's core themes: the joy of being in love in a state of bliss.\n\nThat's not to say it's a quiet or entirely restrained set. The band opens with \"CPR,\" a heady alarm about obsession and the ways unchecked love can dismantle you, followed by a preview of the not-yet-released \"mangetout\" from moisturizer. They also perform the carefree, sunny-day single \"davina mccall,\" a showcase for Teasdale's gorgeous voice, before closing with another unreleased track from moisturizer — and one the band says it's never played live for anyone before — a languid, dreamy ode to the enduring power of love called \"11:21.\"\n\nSET LIST\n\"CPR\"\n\"mangetout\"\n\"davina mccall\"\n\"11:21\"\n\nMUSICIANS\nRhian Teasdale: vocals, guitar\nHester Chambers: guitar, keys, background vocals\nJoshua Mobaraki: guitar, synth, MPC, background vocals\nEllis Durand: bass, background vocals\nHenry Holmes: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Maia Stern\nAudio Engineer: Neil Tevault\nProduction Assistant: Dora Levite\nPhotographer: Zayrha Rodriguez\nCopy Editor: Hazel Cills\nTiny Desk Team: Lars Gotrich, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #wetleg \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "Wet Leg: Tiny Desk Concert", 1020, false, "AzUHNjKMeV4", "https://www.youtube.com/watch?v=AzUHNjKMeV4", "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].mp4", false, 2, ~U[2025-07-09 09:00:26Z]] 14:14:28.445 [debug] QUERY OK source="sources" db=0.2ms idle=457.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:28.445 [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" = ?) [2] 14:14:28.445 [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 [173] 14:14:28.445 [info] Kicking off download for media item #173 (AzUHNjKMeV4) 14:14:28.447 [debug] QUERY OK source="tasks" db=0.1ms idle=2.1ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [121, 173, ~U[2026-07-24 12:14:28Z], ~U[2026-07-24 12:14:28Z]] 14:14:28.447 [debug] Current batch of media processed. Will check again in 1000ms 14:14:29.447 [debug] Current batch of media processed. Will check again in 1000ms 14:14:30.449 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Robin Hilton | July 24, 2025\nExistential dread never sounded more joyful or uplifting than it does in the hands of PUP. Across its catalog of albums, like the appropriately titled Morbid Stuff or The Dream is Over, the Canadian pop-punk group confronts world-weary discontent with deadpan humor, hard-earned wisdom and a lot of heart.\n\nFor the group's long-overdue Tiny Desk, PUP (an acronym for Pathetic Use of Potential) rips through five songs, opening with the restlessly hooky \"Morbid Stuff,\" followed by \"Robot Writes a Love Song,\" from 2022's The Unraveling of PUPTheBand, and \"Hallways,\" a driving anthem about staying alive in the face of struggle, if only to take care of your dog.\n\nOutside of the songs, frontman Stefan Babcock doesn't say a word during the set, but beams playfully through much of it, even after he sings, \"I've been navigating my way through the mind-numbing reality of a godless existence,\" from the 2019 track \"Kids.\" The band closes with the pop-leaning \"Hunger for Death,\" from PUP's latest album, Who Will Look After the Dogs? Trying hard not to break character, Babcock leans in with, \"F*** everyone in this office,\" before adding, \"especially me.\"\n\nSET LIST\n\"Morbid Stuff\"\n\"Robot Writes a Love Song\"\n\"Hallways\"\n\"Kids\"\n\"Hunger for Death\"\n\nMUSICIANS\nStefan Babcock: vocals, guitar, keys\nSteve Sladkowski: guitar, background vocals\nNestor Chumak: bass, background vocals\nZack Mykula: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Josephine Nyounai\nProduction Assistants: Ashley Pointer, Dhanika Pineda\nPhotographer: Grace Raver\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #pup \n\nSupport for NPR Music comes from Capital One. Presenting sponsor of the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "duration" => 1081, "filename" => "/downloads/Tiny Desk/2025-07-24 PUP: Tiny Desk Concert/PUP: Tiny Desk Concert [Gh9pCl1cL8A].mp4", "id" => "Gh9pCl1cL8A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Gh9pCl1cL8A", "playlist_index" => 53, "timestamp" => 1753347624, "title" => "PUP: Tiny Desk Concert", "upload_date" => "20250724"} 14:14:30.454 [debug] QUERY OK source="sources" db=4.7ms queue=0.1ms idle=966.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:30.458 [debug] QUERY OK source="sources" db=3.3ms idle=971.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:30.458 [debug] QUERY OK source="media_items" db=0.3ms idle=975.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-24 09:00:24Z], 2] 14:14:30.462 [debug] QUERY OK source="media_items" db=2.4ms idle=976.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | July 24, 2025\nExistential dread never sounded more joyful or uplifting than it does in the hands of PUP. Across its catalog of albums, like the appropriately titled Morbid Stuff or The Dream is Over, the Canadian pop-punk group confronts world-weary discontent with deadpan humor, hard-earned wisdom and a lot of heart.\n\nFor the group's long-overdue Tiny Desk, PUP (an acronym for Pathetic Use of Potential) rips through five songs, opening with the restlessly hooky \"Morbid Stuff,\" followed by \"Robot Writes a Love Song,\" from 2022's The Unraveling of PUPTheBand, and \"Hallways,\" a driving anthem about staying alive in the face of struggle, if only to take care of your dog.\n\nOutside of the songs, frontman Stefan Babcock doesn't say a word during the set, but beams playfully through much of it, even after he sings, \"I've been navigating my way through the mind-numbing reality of a godless existence,\" from the 2019 track \"Kids.\" The band closes with the pop-leaning \"Hunger for Death,\" from PUP's latest album, Who Will Look After the Dogs? Trying hard not to break character, Babcock leans in with, \"F*** everyone in this office,\" before adding, \"especially me.\"\n\nSET LIST\n\"Morbid Stuff\"\n\"Robot Writes a Love Song\"\n\"Hallways\"\n\"Kids\"\n\"Hunger for Death\"\n\nMUSICIANS\nStefan Babcock: vocals, guitar, keys\nSteve Sladkowski: guitar, background vocals\nNestor Chumak: bass, background vocals\nZack Mykula: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Josephine Nyounai\nProduction Assistants: Ashley Pointer, Dhanika Pineda\nPhotographer: Grace Raver\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #pup \n\nSupport for NPR Music comes from Capital One. Presenting sponsor of the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "PUP: Tiny Desk Concert", "ecb4d461-e0b2-460f-8cb3-5ffd975e60f0", 1081, false, "Gh9pCl1cL8A", "https://www.youtube.com/watch?v=Gh9pCl1cL8A", 53, "/downloads/Tiny Desk/2025-07-24 PUP: Tiny Desk Concert/PUP: Tiny Desk Concert [Gh9pCl1cL8A].mp4", false, false, false, 2, [], 0, ~U[2025-07-24 09:00:24Z], ~U[2026-07-24 12:14:30Z], ~U[2026-07-24 12:14:30Z], "Robin Hilton | July 24, 2025\nExistential dread never sounded more joyful or uplifting than it does in the hands of PUP. Across its catalog of albums, like the appropriately titled Morbid Stuff or The Dream is Over, the Canadian pop-punk group confronts world-weary discontent with deadpan humor, hard-earned wisdom and a lot of heart.\n\nFor the group's long-overdue Tiny Desk, PUP (an acronym for Pathetic Use of Potential) rips through five songs, opening with the restlessly hooky \"Morbid Stuff,\" followed by \"Robot Writes a Love Song,\" from 2022's The Unraveling of PUPTheBand, and \"Hallways,\" a driving anthem about staying alive in the face of struggle, if only to take care of your dog.\n\nOutside of the songs, frontman Stefan Babcock doesn't say a word during the set, but beams playfully through much of it, even after he sings, \"I've been navigating my way through the mind-numbing reality of a godless existence,\" from the 2019 track \"Kids.\" The band closes with the pop-leaning \"Hunger for Death,\" from PUP's latest album, Who Will Look After the Dogs? Trying hard not to break character, Babcock leans in with, \"F*** everyone in this office,\" before adding, \"especially me.\"\n\nSET LIST\n\"Morbid Stuff\"\n\"Robot Writes a Love Song\"\n\"Hallways\"\n\"Kids\"\n\"Hunger for Death\"\n\nMUSICIANS\nStefan Babcock: vocals, guitar, keys\nSteve Sladkowski: guitar, background vocals\nNestor Chumak: bass, background vocals\nZack Mykula: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Josephine Nyounai\nProduction Assistants: Ashley Pointer, Dhanika Pineda\nPhotographer: Grace Raver\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #pup \n\nSupport for NPR Music comes from Capital One. Presenting sponsor of the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "PUP: Tiny Desk Concert", 1081, false, "Gh9pCl1cL8A", "https://www.youtube.com/watch?v=Gh9pCl1cL8A", "/downloads/Tiny Desk/2025-07-24 PUP: Tiny Desk Concert/PUP: Tiny Desk Concert [Gh9pCl1cL8A].mp4", false, 2, ~U[2025-07-24 09:00:24Z]] 14:14:30.462 [debug] QUERY OK source="sources" db=0.4ms idle=470.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:30.464 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.7ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:30.466 [debug] QUERY OK source="media_items" db=0.5ms idle=6.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 [174] 14:14:30.466 [info] Kicking off download for media item #174 (Gh9pCl1cL8A) 14:14:30.472 [debug] QUERY OK source="tasks" db=1.1ms idle=8.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [122, 174, ~U[2026-07-24 12:14:30Z], ~U[2026-07-24 12:14:30Z]] 14:14:30.472 [debug] Current batch of media processed. Will check again in 1000ms 14:14:31.473 [debug] Current batch of media processed. Will check again in 1000ms 14:14:32.502 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This Black Music Month, Tiny Desk honors the anniversaries of landmark albums that have shaped the course of music and culture.\n\nAlanté Serene | June 27, 2025\nThe facets of Rico Nasty’s artistry seem nearly endless. Four years after her electrifying Tiny Desk (home) concert, the rapper/rager/rockstar finally brings her full force to the actual Desk. One thing’s for sure: This concert will surprise you. \n\nRico performs in front of a packed house of Nasty Mob members, family, friends and hometown supporters. “There is a connection that I have with you guys,” the DMV native tells the crowd. “It just makes me feel very safe.” Fueled by that assurance, Rico powers through a set that’s as layered as her catalog.\n\nFive years after her debut studio album, Nightmare Vacation, Rico has evolved. Her latest project, LETHAL, finds her fully confident in the lane she’s built, blending vulnerability and attitude the way only she can. At the Desk, Rico lets each side of herself shine: from explosive tracks like “SMOKE BREAK,” to a smooth, reimagined version of “ON THE LOW,” to the tender resonance of “SMILE,” a song dedicated to her son. Rico delivers a carefully curated show that highlights every corner of her musical identity while leaving her mark on the iconic space. \n\nSET LIST\n“WHO WANT IT”\n“TEETHSUCKER (YEA3X)”\n“ON THE LOW”\n“Tia Tamera”\n“SON OF A GUN”\n“SMOKE BREAK”\n“Smack a Bitch”\n“CRASH”\n“CAN'T WIN EM ALL”\n“SMILE”\n\nMUSICIANS\nRico Nasty: vocals\nJoe Cho: guitar, background vocals\nJacob Ray: guitar, background vocals\nRexzeal Omaka: bass, background vocals\nMatt “Tort” Campfield: keys, background vocals\nImad Royal: drums, background vocals\n\nTINY DESK TEAM\nProducer: Alanté Serene\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Mitra I. Arthur\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nTiny Desk Series Editor: Lars Gotrich\nTiny Desk Team: Maia Stern, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\n\n#tinydesk #nprmusic #riconasty", "duration" => 1350, "filename" => "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].mp4", "id" => "kfUcI82SZv4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kfUcI82SZv4", "playlist_index" => 54, "timestamp" => 1751014876, "title" => "Rico Nasty: Tiny Desk Concert", "upload_date" => "20250627"} 14:14:32.503 [debug] QUERY OK source="sources" db=0.8ms queue=0.1ms idle=1017.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 14:14:32.504 [debug] QUERY OK source="sources" db=0.3ms idle=1018.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:32.505 [debug] QUERY OK source="media_items" db=1.5ms idle=1019.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-27 09:01:16Z], 2] 14:14:32.509 [debug] QUERY OK source="media_items" db=3.2ms idle=1021.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This Black Music Month, Tiny Desk honors the anniversaries of landmark albums that have shaped the course of music and culture.\n\nAlanté Serene | June 27, 2025\nThe facets of Rico Nasty’s artistry seem nearly endless. Four years after her electrifying Tiny Desk (home) concert, the rapper/rager/rockstar finally brings her full force to the actual Desk. One thing’s for sure: This concert will surprise you. \n\nRico performs in front of a packed house of Nasty Mob members, family, friends and hometown supporters. “There is a connection that I have with you guys,” the DMV native tells the crowd. “It just makes me feel very safe.” Fueled by that assurance, Rico powers through a set that’s as layered as her catalog.\n\nFive years after her debut studio album, Nightmare Vacation, Rico has evolved. Her latest project, LETHAL, finds her fully confident in the lane she’s built, blending vulnerability and attitude the way only she can. At the Desk, Rico lets each side of herself shine: from explosive tracks like “SMOKE BREAK,” to a smooth, reimagined version of “ON THE LOW,” to the tender resonance of “SMILE,” a song dedicated to her son. Rico delivers a carefully curated show that highlights every corner of her musical identity while leaving her mark on the iconic space. \n\nSET LIST\n“WHO WANT IT”\n“TEETHSUCKER (YEA3X)”\n“ON THE LOW”\n“Tia Tamera”\n“SON OF A GUN”\n“SMOKE BREAK”\n“Smack a Bitch”\n“CRASH”\n“CAN'T WIN EM ALL”\n“SMILE”\n\nMUSICIANS\nRico Nasty: vocals\nJoe Cho: guitar, background vocals\nJacob Ray: guitar, background vocals\nRexzeal Omaka: bass, background vocals\nMatt “Tort” Campfield: keys, background vocals\nImad Royal: drums, background vocals\n\nTINY DESK TEAM\nProducer: Alanté Serene\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Mitra I. Arthur\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nTiny Desk Series Editor: Lars Gotrich\nTiny Desk Team: Maia Stern, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\n\n#tinydesk #nprmusic #riconasty", "Rico Nasty: Tiny Desk Concert", "6b30b075-14d6-4086-a831-178edc701227", 1350, false, "kfUcI82SZv4", "https://www.youtube.com/watch?v=kfUcI82SZv4", 54, "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].mp4", false, false, false, 2, [], 0, ~U[2025-06-27 09:01:16Z], ~U[2026-07-24 12:14:32Z], ~U[2026-07-24 12:14:32Z], "This Black Music Month, Tiny Desk honors the anniversaries of landmark albums that have shaped the course of music and culture.\n\nAlanté Serene | June 27, 2025\nThe facets of Rico Nasty’s artistry seem nearly endless. Four years after her electrifying Tiny Desk (home) concert, the rapper/rager/rockstar finally brings her full force to the actual Desk. One thing’s for sure: This concert will surprise you. \n\nRico performs in front of a packed house of Nasty Mob members, family, friends and hometown supporters. “There is a connection that I have with you guys,” the DMV native tells the crowd. “It just makes me feel very safe.” Fueled by that assurance, Rico powers through a set that’s as layered as her catalog.\n\nFive years after her debut studio album, Nightmare Vacation, Rico has evolved. Her latest project, LETHAL, finds her fully confident in the lane she’s built, blending vulnerability and attitude the way only she can. At the Desk, Rico lets each side of herself shine: from explosive tracks like “SMOKE BREAK,” to a smooth, reimagined version of “ON THE LOW,” to the tender resonance of “SMILE,” a song dedicated to her son. Rico delivers a carefully curated show that highlights every corner of her musical identity while leaving her mark on the iconic space. \n\nSET LIST\n“WHO WANT IT”\n“TEETHSUCKER (YEA3X)”\n“ON THE LOW”\n“Tia Tamera”\n“SON OF A GUN”\n“SMOKE BREAK”\n“Smack a Bitch”\n“CRASH”\n“CAN'T WIN EM ALL”\n“SMILE”\n\nMUSICIANS\nRico Nasty: vocals\nJoe Cho: guitar, background vocals\nJacob Ray: guitar, background vocals\nRexzeal Omaka: bass, background vocals\nMatt “Tort” Campfield: keys, background vocals\nImad Royal: drums, background vocals\n\nTINY DESK TEAM\nProducer: Alanté Serene\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Mitra I. Arthur\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nTiny Desk Series Editor: Lars Gotrich\nTiny Desk Team: Maia Stern, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\n\n#tinydesk #nprmusic #riconasty", "Rico Nasty: Tiny Desk Concert", 1350, false, "kfUcI82SZv4", "https://www.youtube.com/watch?v=kfUcI82SZv4", "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].mp4", false, 2, ~U[2025-06-27 09:01:16Z]] 14:14:32.511 [debug] QUERY OK source="sources" db=1.4ms idle=505.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:32.512 [debug] QUERY OK source="media_profiles" db=0.9ms 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" = ?) [2] 14:14:32.513 [debug] QUERY OK source="media_items" db=0.4ms 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 [175] 14:14:32.513 [info] Kicking off download for media item #175 (kfUcI82SZv4) 14:14:32.520 [debug] QUERY OK source="tasks" db=0.6ms idle=8.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [123, 175, ~U[2026-07-24 12:14:32Z], ~U[2026-07-24 12:14:32Z]] 14:14:32.520 [debug] Current batch of media processed. Will check again in 1000ms 14:14:33.523 [debug] Current batch of media processed. Will check again in 1000ms 14:14:34.047 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZBk8oCmfpMg --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b9/f2/b9f284544e969d5d3f51b31b7d196c968d95ebb6600a91e2c40cb9bc8dcb6c27.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:34.081 [debug] Running yt-dlp command for action: download_thumbnail 14:14:34.083 [debug] QUERY OK source="settings" db=0.2ms idle=1565.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.084 [debug] QUERY OK source="settings" db=0.3ms idle=1564.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.084 [debug] QUERY OK source="settings" db=0.2ms idle=1563.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.084 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZBk8oCmfpMg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/42/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/19/4a/194ac4493ef9d93ac1796cb7aea9fba346c3a90b5859aa56d33c75d141fcef3a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:34.165 [info] GET /sources 14:14:34.165 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:14:34.166 [debug] QUERY OK source="settings" db=1.1ms idle=1152.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.167 [debug] QUERY OK source="settings" db=0.5ms 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 [] 14:14:34.168 [debug] QUERY OK source="settings" db=0.8ms idle=84.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.169 [debug] QUERY OK source="settings" db=0.8ms idle=84.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.170 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=85.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:34.172 [debug] QUERY OK source="sources" db=1.4ms idle=4.1ms 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)) [] 14:14:34.174 [debug] QUERY OK source="sources" db=2.0ms idle=5.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", coalesce(s2."downloaded_count", 0), coalesce(s3."pending_count", 0), coalesce(s2."media_size_bytes", 0), m1."id", m1."name", m1."redownload_delay_days", m1."output_path_template", m1."download_subs", m1."download_auto_subs", m1."embed_subs", m1."sub_langs", m1."download_thumbnail", m1."embed_thumbnail", m1."download_source_images", m1."download_metadata", m1."embed_metadata", m1."download_nfo", m1."sponsorblock_behaviour", m1."sponsorblock_categories", m1."shorts_behaviour", m1."livestream_behaviour", m1."audio_track", m1."preferred_resolution", m1."media_container", m1."marked_for_deletion_at", m1."inserted_at", m1."updated_at" FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) ORDER BY s0."custom_name" COLLATE NOCASE, s0."id" LIMIT ? OFFSET ? [10, 0] 14:14:34.177 [info] Sent 200 in 12ms 14:14:34.523 [debug] Current batch of media processed. Will check again in 1000ms 14:14:35.525 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Dora Levite | September 5, 2025\nFor those of us (like me) who wear the term \"chronically online\" like a badge of honor, PinkPantheress' world is our everything. When we close our eyes, her glossy voice and Y2K nostalgia is a comfort. With a single roller in her bangs and the purse she's never without, PinkPantheress has become our soundtrack, vision board and guide.\n\nFor this set, the once anonymous dance-pop star sheds the electronic sounds that we know her for; to our complete delight, her voice is just as glossy and her presence just as entrancing in these new arrangements. Dressed in her signature tartan (with matching tea pot), PinkPantheress' band expands her sound, swapping the glitched-out samples in \"Girl Like Me\" for heavier guitar riffs. She shapes the moments that we crave in songs like \"Pain\" and \"Illegal\" as softer, jazzier ones.\n\nAs she performs, she nonchalantly cycles through the instruments laid out before her: some harmonica here, a bit of cowbell there, chimes once or twice. Her comedic timing is deadpan, yet precise — a reminder of why fans obsess over her digital footprint. It's always a gift when artists reimagine their discography alongside us at the Desk. PinkPantheress dives into this challenge, yet maintains her magnetic aura, which is just another reason we still can't seem to look away.\n\nSET LIST\n\"Attracted to You\"\n\"Pain\"\n\"Break It Off\"\n\"Illegal\"\n\"Girl Like Me\"\n\"The aisle\"\n\"Passion\"\n\"Tonight\"\n\nMUSICIANS\nPinkPantheress: vocals, harmonica, percussion\u00A0\nLisa Remar: keys\nJoe Lesher-Liao: DJ\nSofia D'Angelo: guitar, background vocals\nJaleacia “Queen Drums” Harris: drums\nTina Chau Le: keys, guitar, background vocals\nRani Adi: bass\n\nTINY DESK TEAM\nProducer: Dora Levite\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Sofia Seidel, Michael Zamora, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nTiny Desk Team: Kara Frame, Joshua Bryant\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #pinkpantheress\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "duration" => 1339, "filename" => "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].mp4", "id" => "56fJw8HUGuU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=56fJw8HUGuU", "playlist_index" => 55, "timestamp" => 1757062810, "title" => "PinkPantheress: Tiny Desk Concert", "upload_date" => "20250905"} 14:14:35.525 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=508.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:35.526 [debug] QUERY OK source="sources" db=0.1ms idle=41.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:35.527 [debug] QUERY OK source="media_items" db=0.4ms idle=42.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-05 09:00:10Z], 2] 14:14:35.531 [debug] QUERY OK source="media_items" db=3.0ms idle=42.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Dora Levite | September 5, 2025\nFor those of us (like me) who wear the term \"chronically online\" like a badge of honor, PinkPantheress' world is our everything. When we close our eyes, her glossy voice and Y2K nostalgia is a comfort. With a single roller in her bangs and the purse she's never without, PinkPantheress has become our soundtrack, vision board and guide.\n\nFor this set, the once anonymous dance-pop star sheds the electronic sounds that we know her for; to our complete delight, her voice is just as glossy and her presence just as entrancing in these new arrangements. Dressed in her signature tartan (with matching tea pot), PinkPantheress' band expands her sound, swapping the glitched-out samples in \"Girl Like Me\" for heavier guitar riffs. She shapes the moments that we crave in songs like \"Pain\" and \"Illegal\" as softer, jazzier ones.\n\nAs she performs, she nonchalantly cycles through the instruments laid out before her: some harmonica here, a bit of cowbell there, chimes once or twice. Her comedic timing is deadpan, yet precise — a reminder of why fans obsess over her digital footprint. It's always a gift when artists reimagine their discography alongside us at the Desk. PinkPantheress dives into this challenge, yet maintains her magnetic aura, which is just another reason we still can't seem to look away.\n\nSET LIST\n\"Attracted to You\"\n\"Pain\"\n\"Break It Off\"\n\"Illegal\"\n\"Girl Like Me\"\n\"The aisle\"\n\"Passion\"\n\"Tonight\"\n\nMUSICIANS\nPinkPantheress: vocals, harmonica, percussion\u00A0\nLisa Remar: keys\nJoe Lesher-Liao: DJ\nSofia D'Angelo: guitar, background vocals\nJaleacia “Queen Drums” Harris: drums\nTina Chau Le: keys, guitar, background vocals\nRani Adi: bass\n\nTINY DESK TEAM\nProducer: Dora Levite\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Sofia Seidel, Michael Zamora, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nTiny Desk Team: Kara Frame, Joshua Bryant\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #pinkpantheress\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "PinkPantheress: Tiny Desk Concert", "bbb4dd21-f246-4606-b36d-dfc79a196073", 1339, false, "56fJw8HUGuU", "https://www.youtube.com/watch?v=56fJw8HUGuU", 55, "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].mp4", false, false, false, 2, [], 0, ~U[2025-09-05 09:00:10Z], ~U[2026-07-24 12:14:35Z], ~U[2026-07-24 12:14:35Z], "Dora Levite | September 5, 2025\nFor those of us (like me) who wear the term \"chronically online\" like a badge of honor, PinkPantheress' world is our everything. When we close our eyes, her glossy voice and Y2K nostalgia is a comfort. With a single roller in her bangs and the purse she's never without, PinkPantheress has become our soundtrack, vision board and guide.\n\nFor this set, the once anonymous dance-pop star sheds the electronic sounds that we know her for; to our complete delight, her voice is just as glossy and her presence just as entrancing in these new arrangements. Dressed in her signature tartan (with matching tea pot), PinkPantheress' band expands her sound, swapping the glitched-out samples in \"Girl Like Me\" for heavier guitar riffs. She shapes the moments that we crave in songs like \"Pain\" and \"Illegal\" as softer, jazzier ones.\n\nAs she performs, she nonchalantly cycles through the instruments laid out before her: some harmonica here, a bit of cowbell there, chimes once or twice. Her comedic timing is deadpan, yet precise — a reminder of why fans obsess over her digital footprint. It's always a gift when artists reimagine their discography alongside us at the Desk. PinkPantheress dives into this challenge, yet maintains her magnetic aura, which is just another reason we still can't seem to look away.\n\nSET LIST\n\"Attracted to You\"\n\"Pain\"\n\"Break It Off\"\n\"Illegal\"\n\"Girl Like Me\"\n\"The aisle\"\n\"Passion\"\n\"Tonight\"\n\nMUSICIANS\nPinkPantheress: vocals, harmonica, percussion\u00A0\nLisa Remar: keys\nJoe Lesher-Liao: DJ\nSofia D'Angelo: guitar, background vocals\nJaleacia “Queen Drums” Harris: drums\nTina Chau Le: keys, guitar, background vocals\nRani Adi: bass\n\nTINY DESK TEAM\nProducer: Dora Levite\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Sofia Seidel, Michael Zamora, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nTiny Desk Team: Kara Frame, Joshua Bryant\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #pinkpantheress\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "PinkPantheress: Tiny Desk Concert", 1339, false, "56fJw8HUGuU", "https://www.youtube.com/watch?v=56fJw8HUGuU", "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].mp4", false, 2, ~U[2025-09-05 09:00:10Z]] 14:14:35.531 [debug] QUERY OK source="sources" db=0.3ms idle=46.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:35.533 [debug] QUERY OK source="media_profiles" db=1.0ms idle=6.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:35.534 [debug] QUERY OK source="media_items" db=0.6ms idle=6.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 [176] 14:14:35.534 [info] Kicking off download for media item #176 (56fJw8HUGuU) 14:14:35.537 [debug] QUERY OK source="tasks" db=0.8ms idle=4.9ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [124, 176, ~U[2026-07-24 12:14:35Z], ~U[2026-07-24 12:14:35Z]] 14:14:35.537 [debug] Current batch of media processed. Will check again in 1000ms 14:14:36.539 [debug] Current batch of media processed. Will check again in 1000ms 14:14:37.336 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZBk8oCmfpMg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/42/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/19/4a/194ac4493ef9d93ac1796cb7aea9fba346c3a90b5859aa56d33c75d141fcef3a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:37.343 [debug] QUERY OK db=0.1ms queue=2.6ms idle=1804.7ms begin [] 14:14:37.349 [debug] QUERY OK source="media_items" db=6.3ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:14:34Z], "/downloads/The Standup/2025-07-17 Google takes down the internet! (The Standup)/Google takes down the internet! (The Standup) [ZBk8oCmfpMg].mp4", ~U[2026-07-24 12:14:37Z], 42] 14:14:37.359 [debug] QUERY OK source="media_metadata" db=8.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/42/metadata.json.gz", "/config/metadata/media_items/42/thumbnail.jpg", 42, ~U[2026-07-24 12:14:37Z], ~U[2026-07-24 12:14:37Z]] 14:14:37.360 [debug] QUERY OK db=1.1ms commit [] 14:14:37.367 [debug] QUERY OK source="media_items" db=3.3ms queue=1.2ms idle=1826.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [483022808, ~U[2026-07-24 12:14:37Z], 42] 14:14:37.368 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:14:37.372 [info] {"args":{"id":42},"id":46,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":98392934,"event":"job:stop","queue_time":810974771,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:37.379 [info] {"args":{"id":44},"id":48,"meta":{},"system_time":1784895277379718651,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:37.380 [debug] QUERY OK source="media_items" db=0.7ms idle=351.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" = ?) [44] 14:14:37.381 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:14:37.382 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=20.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:14:37.384 [debug] QUERY OK source="media_profiles" db=1.7ms idle=15.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:37.384 [debug] QUERY OK source="media_items" db=0.4ms idle=13.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [44] 14:14:37.386 [debug] QUERY OK source="media_metadata" db=0.4ms idle=6.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" = ?) [44] 14:14:37.387 [debug] QUERY OK source="media_profiles" db=0.7ms 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] 14:14:37.388 [debug] QUERY OK source="settings" db=0.4ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.388 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.389 [debug] Running yt-dlp command for action: get_downloadable_status 14:14:37.390 [debug] QUERY OK source="settings" db=0.2ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.390 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.391 [debug] QUERY OK source="settings" db=0.5ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.391 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dh6BCSzaF6g --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5a/10/5a1031a138746247e18f2fd212ee7d6dcee61611581225381de50d09372632b2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:37.539 [debug] Current batch of media processed. Will check again in 1000ms 14:14:37.886 [info] GET /sources/2 14:14:37.886 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:14:37.888 [debug] QUERY OK source="sources" db=1.0ms idle=499.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:37.890 [debug] QUERY OK source="media_profiles" db=1.4ms idle=500.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" = ?) [2] 14:14:37.892 [debug] QUERY OK source="tasks" db=1.9ms idle=500.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [2, "executing", "available", "scheduled", "retryable"] 14:14:37.894 [debug] QUERY OK source="oban_jobs" db=0.5ms queue=1.2ms idle=501.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" = ?) [68] 14:14:37.896 [debug] QUERY OK source="settings" db=1.6ms idle=503.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.897 [debug] QUERY OK source="settings" db=1.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 [] 14:14:37.899 [debug] QUERY OK source="settings" db=1.4ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:37.901 [debug] QUERY OK source="sources" db=0.6ms idle=8.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:37.902 [debug] QUERY OK source="media_items" db=0.9ms idle=7.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:14:37.906 [debug] QUERY OK source="media_items" db=2.7ms queue=0.4ms idle=6.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 ? [2, 10, 0] 14:14:37.908 [debug] QUERY OK source="sources" db=1.4ms queue=0.3ms idle=9.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:37.910 [debug] QUERY OK source="media_items" db=1.0ms idle=9.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 14:14:37.911 [debug] QUERY OK source="media_items" db=1.1ms idle=8.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 14:14:37.912 [debug] QUERY OK source="sources" db=0.4ms queue=0.3ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:37.913 [debug] QUERY OK source="media_items" db=0.7ms idle=6.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [2] 14:14:37.915 [debug] QUERY OK source="media_items" db=1.3ms idle=4.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 14:14:37.915 [info] Sent 200 in 29ms 14:14:38.083 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=VsTbgYawoVc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/22/9b/229bfcf10eee783443eaf61f32fb29003e956315f226af63bf017c8e193c8d8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:38.103 [debug] Running yt-dlp command for action: download_thumbnail 14:14:38.105 [debug] QUERY OK source="settings" db=0.3ms idle=193.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:38.106 [debug] QUERY OK source="settings" db=0.6ms idle=193.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:38.107 [debug] QUERY OK source="settings" db=0.9ms idle=192.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:38.107 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=VsTbgYawoVc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/43/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c5/d5/c5d5749ae7e036312175e6ee0fb5adb8937a7d8026ea555f63a78cbe8f901f7d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:38.541 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Lars Gotrich | September 10, 2025\nAn effortless hop from the carpet onto the office furniture. A split-second survey of the audience gathered. Two steps, then liftoff and barrel roll. Not only does Brendan Yates execute the first-ever stage dive — and ensuing crowd surf — at the Tiny Desk, but he does so with athletic grace. That's how this Turnstile concert ends, but not before a wild reimagination of the hardcore band's wide-ranging sound, featuring piano and a horn section.\n\nEver since its inception 15 years ago, Turnstile has always turned its accessible, yet esoteric influences into something of its own. The roots are hardcore punk's speed and volatility, but the itch to play with tonal, textural and rhythmic palettes has kept Baltimore's own restless. That Turnstile only performs tracks from NEVER ENOUGH here could be seen as a commitment to the glossy sheen of the year's biggest hardcore album, but that just turns out to be a ruse.\n\nA midtempo rocker becomes a madcap piano brawler. A punk rager spins on a topsy-turvy ride, skanking along the way. Jangle-pop melancholia turns on a Motown dime, shimmying into a soul revue with the horns locked all the way in. The anthem emerges as a reflective ballad — and as a way for Yates to express his heartfelt gratitude toward the family, friends and \"personal heroes\" in the room. Just when you think you know Turnstile — its sound, motivation, vision — there's another metamorphosis.\n\nSET LIST\n\"DREAMING\"\n\"SUNSHOWER\"\n\"I CARE\"\n\"NEVER ENOUGH\"\n\"BIRDS\"\n\nMUSICIANS\nBrendan Yates: vocals\nPat McCrory: guitar\nMeg Mills: guitar\nFranz Lyons: bass\nDaniel Fang: drums\nTobias Moody: saxophone\nTheljon Allen: trumpet\nTroy Long: piano\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Sofia Seidel\nAudio Engineer: Neil Tevault\nProduction Assistants: Dora Levite, Dhanika Pineda\nPhotographer: Grace Raver \nCopy Editor: Daoud Tyler-Ameen\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #turnstile \n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "duration" => 948, "filename" => "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].mp4", "id" => "ylL-SSRDyJc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ylL-SSRDyJc", "playlist_index" => 56, "timestamp" => 1757494896, "title" => "Turnstile: Tiny Desk Concert", "upload_date" => "20250910"} 14:14:38.542 [debug] QUERY OK source="sources" db=0.8ms idle=626.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:38.543 [debug] QUERY OK source="sources" db=0.7ms idle=512.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:38.544 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=438.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 09:01:36Z], 2] 14:14:38.551 [debug] QUERY OK source="media_items" db=5.5ms idle=439.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Lars Gotrich | September 10, 2025\nAn effortless hop from the carpet onto the office furniture. A split-second survey of the audience gathered. Two steps, then liftoff and barrel roll. Not only does Brendan Yates execute the first-ever stage dive — and ensuing crowd surf — at the Tiny Desk, but he does so with athletic grace. That's how this Turnstile concert ends, but not before a wild reimagination of the hardcore band's wide-ranging sound, featuring piano and a horn section.\n\nEver since its inception 15 years ago, Turnstile has always turned its accessible, yet esoteric influences into something of its own. The roots are hardcore punk's speed and volatility, but the itch to play with tonal, textural and rhythmic palettes has kept Baltimore's own restless. That Turnstile only performs tracks from NEVER ENOUGH here could be seen as a commitment to the glossy sheen of the year's biggest hardcore album, but that just turns out to be a ruse.\n\nA midtempo rocker becomes a madcap piano brawler. A punk rager spins on a topsy-turvy ride, skanking along the way. Jangle-pop melancholia turns on a Motown dime, shimmying into a soul revue with the horns locked all the way in. The anthem emerges as a reflective ballad — and as a way for Yates to express his heartfelt gratitude toward the family, friends and \"personal heroes\" in the room. Just when you think you know Turnstile — its sound, motivation, vision — there's another metamorphosis.\n\nSET LIST\n\"DREAMING\"\n\"SUNSHOWER\"\n\"I CARE\"\n\"NEVER ENOUGH\"\n\"BIRDS\"\n\nMUSICIANS\nBrendan Yates: vocals\nPat McCrory: guitar\nMeg Mills: guitar\nFranz Lyons: bass\nDaniel Fang: drums\nTobias Moody: saxophone\nTheljon Allen: trumpet\nTroy Long: piano\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Sofia Seidel\nAudio Engineer: Neil Tevault\nProduction Assistants: Dora Levite, Dhanika Pineda\nPhotographer: Grace Raver \nCopy Editor: Daoud Tyler-Ameen\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #turnstile \n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "Turnstile: Tiny Desk Concert", "262e21d9-5de3-4225-af94-f61f49fee1e2", 948, false, "ylL-SSRDyJc", "https://www.youtube.com/watch?v=ylL-SSRDyJc", 56, "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].mp4", false, false, false, 2, [], 0, ~U[2025-09-10 09:01:36Z], ~U[2026-07-24 12:14:38Z], ~U[2026-07-24 12:14:38Z], "Lars Gotrich | September 10, 2025\nAn effortless hop from the carpet onto the office furniture. A split-second survey of the audience gathered. Two steps, then liftoff and barrel roll. Not only does Brendan Yates execute the first-ever stage dive — and ensuing crowd surf — at the Tiny Desk, but he does so with athletic grace. That's how this Turnstile concert ends, but not before a wild reimagination of the hardcore band's wide-ranging sound, featuring piano and a horn section.\n\nEver since its inception 15 years ago, Turnstile has always turned its accessible, yet esoteric influences into something of its own. The roots are hardcore punk's speed and volatility, but the itch to play with tonal, textural and rhythmic palettes has kept Baltimore's own restless. That Turnstile only performs tracks from NEVER ENOUGH here could be seen as a commitment to the glossy sheen of the year's biggest hardcore album, but that just turns out to be a ruse.\n\nA midtempo rocker becomes a madcap piano brawler. A punk rager spins on a topsy-turvy ride, skanking along the way. Jangle-pop melancholia turns on a Motown dime, shimmying into a soul revue with the horns locked all the way in. The anthem emerges as a reflective ballad — and as a way for Yates to express his heartfelt gratitude toward the family, friends and \"personal heroes\" in the room. Just when you think you know Turnstile — its sound, motivation, vision — there's another metamorphosis.\n\nSET LIST\n\"DREAMING\"\n\"SUNSHOWER\"\n\"I CARE\"\n\"NEVER ENOUGH\"\n\"BIRDS\"\n\nMUSICIANS\nBrendan Yates: vocals\nPat McCrory: guitar\nMeg Mills: guitar\nFranz Lyons: bass\nDaniel Fang: drums\nTobias Moody: saxophone\nTheljon Allen: trumpet\nTroy Long: piano\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Sofia Seidel\nAudio Engineer: Neil Tevault\nProduction Assistants: Dora Levite, Dhanika Pineda\nPhotographer: Grace Raver \nCopy Editor: Daoud Tyler-Ameen\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #turnstile \n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "Turnstile: Tiny Desk Concert", 948, false, "ylL-SSRDyJc", "https://www.youtube.com/watch?v=ylL-SSRDyJc", "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].mp4", false, 2, ~U[2025-09-10 09:01:36Z]] 14:14:38.555 [debug] QUERY OK source="sources" db=3.8ms idle=444.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:38.556 [debug] QUERY OK source="media_profiles" db=0.5ms idle=13.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" = ?) [2] 14:14:38.557 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=13.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [177] 14:14:38.557 [info] Kicking off download for media item #177 (ylL-SSRDyJc) 14:14:38.567 [debug] QUERY OK source="tasks" db=0.7ms queue=0.1ms idle=11.2ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [125, 177, ~U[2026-07-24 12:14:38Z], ~U[2026-07-24 12:14:38Z]] 14:14:38.568 [debug] Current batch of media processed. Will check again in 1000ms 14:14:39.568 [debug] Current batch of media processed. Will check again in 1000ms 14:14:40.570 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Robin Hilton | October 29, 2025\nJust a couple of days before arriving for her Tiny Desk, Oklou’s Marylou Mayniel flew with her five-month old baby from their Paris home to New York, where she met for the first time with an eight-piece choir to rehearse completely reimagined versions of four songs. The goal was to strip away the electronics and often heavy autotune heard across Oklou’s beguiling debut album, Choke Enough, while preserving the sense of sonic adventure.\n\nBy the time everyone got to D.C., they’d puzzled it out. The songs here rely largely on piano, an acoustic guitar and a nearly seven-foot marimba. The choir provides not only backing vocals but also pad-like textures and effects, including crackling fire created with wads of bubble wrap and small sticks collected just before the performance.\n\nCasey MQ, who arranged the songs for this set, accompanies Oklou as they transform tracks like “blade bird” and “ict” from synth-heavy pop to deeply reflective, acoustic folk. The song “harvest sky” is slowed down and bare, with Oklou playing the main melody on a recorder. They also perform a version of “what’s good,” a previously unreleased song due out on a deluxe version of Choke Enough.\n\nSET LIST\n\"ict\"\n\"blade bird\"\n\"what's good\"\n\"harvest sky\"\n\nMUSICIANS\nOklou: vocals, marimba, guitar, piano, recorder\nCasey MQ: keys, guitar, piano, electronics, background vocals\nGileann Tan: background vocals\nRachel Liss: background vocals\nEmily Ostrom: background vocals\nMaria Christina Jasmin Kopp: background vocals\nCristóbal Arias: background vocals\nJames Ozaki: background vocals\nJack Schmieg: background vocals\nMax Parsons: background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dora Levite\nPhotographer: Maansi Srivastava\nTiny Desk Team: Kara Frame, Ashley Pointer\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#oklou #nprmusic #tinydesk \n\nSupport for NPR Music comes from Moises, an AI platform for musicians of all levels to learn, create, and collaborate. Learn more at Moises.AI", "duration" => 1063, "filename" => "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].mp4", "id" => "Jg9uwVvOy0E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Jg9uwVvOy0E", "playlist_index" => 57, "timestamp" => 1761728429, "title" => "Oklou: Tiny Desk Concert", "upload_date" => "20251029"} 14:14:40.571 [debug] QUERY OK source="sources" db=0.8ms idle=537.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:40.572 [debug] QUERY OK source="sources" db=1.1ms idle=60.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:40.573 [debug] QUERY OK source="media_items" db=0.6ms idle=61.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 09:00:29Z], 2] 14:14:40.575 [debug] QUERY OK source="media_items" db=1.5ms idle=62.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | October 29, 2025\nJust a couple of days before arriving for her Tiny Desk, Oklou’s Marylou Mayniel flew with her five-month old baby from their Paris home to New York, where she met for the first time with an eight-piece choir to rehearse completely reimagined versions of four songs. The goal was to strip away the electronics and often heavy autotune heard across Oklou’s beguiling debut album, Choke Enough, while preserving the sense of sonic adventure.\n\nBy the time everyone got to D.C., they’d puzzled it out. The songs here rely largely on piano, an acoustic guitar and a nearly seven-foot marimba. The choir provides not only backing vocals but also pad-like textures and effects, including crackling fire created with wads of bubble wrap and small sticks collected just before the performance.\n\nCasey MQ, who arranged the songs for this set, accompanies Oklou as they transform tracks like “blade bird” and “ict” from synth-heavy pop to deeply reflective, acoustic folk. The song “harvest sky” is slowed down and bare, with Oklou playing the main melody on a recorder. They also perform a version of “what’s good,” a previously unreleased song due out on a deluxe version of Choke Enough.\n\nSET LIST\n\"ict\"\n\"blade bird\"\n\"what's good\"\n\"harvest sky\"\n\nMUSICIANS\nOklou: vocals, marimba, guitar, piano, recorder\nCasey MQ: keys, guitar, piano, electronics, background vocals\nGileann Tan: background vocals\nRachel Liss: background vocals\nEmily Ostrom: background vocals\nMaria Christina Jasmin Kopp: background vocals\nCristóbal Arias: background vocals\nJames Ozaki: background vocals\nJack Schmieg: background vocals\nMax Parsons: background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dora Levite\nPhotographer: Maansi Srivastava\nTiny Desk Team: Kara Frame, Ashley Pointer\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#oklou #nprmusic #tinydesk \n\nSupport for NPR Music comes from Moises, an AI platform for musicians of all levels to learn, create, and collaborate. Learn more at Moises.AI", "Oklou: Tiny Desk Concert", "9a559de8-99ce-40d2-98b5-7b1ce98e5d93", 1063, false, "Jg9uwVvOy0E", "https://www.youtube.com/watch?v=Jg9uwVvOy0E", 57, "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].mp4", false, false, false, 2, [], 0, ~U[2025-10-29 09:00:29Z], ~U[2026-07-24 12:14:40Z], ~U[2026-07-24 12:14:40Z], "Robin Hilton | October 29, 2025\nJust a couple of days before arriving for her Tiny Desk, Oklou’s Marylou Mayniel flew with her five-month old baby from their Paris home to New York, where she met for the first time with an eight-piece choir to rehearse completely reimagined versions of four songs. The goal was to strip away the electronics and often heavy autotune heard across Oklou’s beguiling debut album, Choke Enough, while preserving the sense of sonic adventure.\n\nBy the time everyone got to D.C., they’d puzzled it out. The songs here rely largely on piano, an acoustic guitar and a nearly seven-foot marimba. The choir provides not only backing vocals but also pad-like textures and effects, including crackling fire created with wads of bubble wrap and small sticks collected just before the performance.\n\nCasey MQ, who arranged the songs for this set, accompanies Oklou as they transform tracks like “blade bird” and “ict” from synth-heavy pop to deeply reflective, acoustic folk. The song “harvest sky” is slowed down and bare, with Oklou playing the main melody on a recorder. They also perform a version of “what’s good,” a previously unreleased song due out on a deluxe version of Choke Enough.\n\nSET LIST\n\"ict\"\n\"blade bird\"\n\"what's good\"\n\"harvest sky\"\n\nMUSICIANS\nOklou: vocals, marimba, guitar, piano, recorder\nCasey MQ: keys, guitar, piano, electronics, background vocals\nGileann Tan: background vocals\nRachel Liss: background vocals\nEmily Ostrom: background vocals\nMaria Christina Jasmin Kopp: background vocals\nCristóbal Arias: background vocals\nJames Ozaki: background vocals\nJack Schmieg: background vocals\nMax Parsons: background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dora Levite\nPhotographer: Maansi Srivastava\nTiny Desk Team: Kara Frame, Ashley Pointer\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#oklou #nprmusic #tinydesk \n\nSupport for NPR Music comes from Moises, an AI platform for musicians of all levels to learn, create, and collaborate. Learn more at Moises.AI", "Oklou: Tiny Desk Concert", 1063, false, "Jg9uwVvOy0E", "https://www.youtube.com/watch?v=Jg9uwVvOy0E", "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].mp4", false, 2, ~U[2025-10-29 09:00:29Z]] 14:14:40.576 [debug] QUERY OK source="sources" db=0.6ms idle=64.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:40.577 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.4ms 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" = ?) [2] 14:14:40.579 [debug] QUERY OK source="media_items" db=2.3ms 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 [178] 14:14:40.579 [info] Kicking off download for media item #178 (Jg9uwVvOy0E) 14:14:40.587 [debug] QUERY OK source="tasks" db=1.8ms idle=9.3ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [126, 178, ~U[2026-07-24 12:14:40Z], ~U[2026-07-24 12:14:40Z]] 14:14:40.587 [debug] Current batch of media processed. Will check again in 1000ms 14:14:41.259 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dh6BCSzaF6g --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5a/10/5a1031a138746247e18f2fd212ee7d6dcee61611581225381de50d09372632b2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:41.261 [debug] Running yt-dlp command for action: download 14:14:41.263 [debug] QUERY OK source="settings" db=2.1ms idle=681.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.273 [debug] QUERY OK source="settings" db=0.4ms queue=9.5ms idle=681.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.274 [debug] QUERY OK source="settings" db=0.8ms idle=689.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.275 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dh6BCSzaF6g --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/20/2d/202d46cc0b66cdfcdf4dfef9308c147861bb068a8c56871d82d41bf0ab8a8ede.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:41.524 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=VsTbgYawoVc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/43/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c5/d5/c5d5749ae7e036312175e6ee0fb5adb8937a7d8026ea555f63a78cbe8f901f7d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:41.527 [debug] QUERY OK db=0.0ms idle=940.0ms begin [] 14:14:41.528 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:14:38Z], "/downloads/The Standup/2025-07-15 What even is an AI Agent?! (The Standup)/What even is an AI Agent?! (The Standup) [VsTbgYawoVc].mp4", ~U[2026-07-24 12:14:41Z], 43] 14:14:41.530 [debug] QUERY OK source="media_metadata" db=1.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/43/metadata.json.gz", "/config/metadata/media_items/43/thumbnail.jpg", 43, ~U[2026-07-24 12:14:41Z], ~U[2026-07-24 12:14:41Z]] 14:14:41.530 [debug] QUERY OK db=0.3ms commit [] 14:14:41.532 [debug] QUERY OK source="media_items" db=1.4ms idle=495.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [269492024, ~U[2026-07-24 12:14:41Z], 43] 14:14:41.533 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:14:41.534 [info] {"args":{"id":43},"id":47,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37094108,"event":"job:stop","queue_time":875438369,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:41.544 [info] {"args":{"id":45},"id":49,"meta":{},"system_time":1784895281544078527,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:14:41.547 [debug] QUERY OK source="media_items" db=3.2ms idle=269.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" = ?) [45] 14:14:41.548 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:14:41.550 [debug] QUERY OK source="sources" db=0.8ms queue=0.7ms idle=18.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:14:41.552 [debug] QUERY OK source="media_profiles" db=1.2ms queue=0.3ms idle=17.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:41.555 [debug] QUERY OK source="media_items" db=3.4ms idle=18.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 [45] 14:14:41.560 [debug] QUERY OK source="media_metadata" db=0.6ms 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" = ?) [45] 14:14:41.560 [debug] QUERY OK source="media_profiles" db=0.4ms idle=12.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:14:41.563 [debug] QUERY OK source="settings" db=2.9ms queue=0.2ms idle=10.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.564 [debug] QUERY OK source="settings" db=0.4ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.566 [debug] Running yt-dlp command for action: get_downloadable_status 14:14:41.568 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=11.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.569 [debug] QUERY OK source="settings" db=0.9ms idle=8.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.570 [debug] QUERY OK source="settings" db=0.9ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:41.570 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=s7YQHWzZMYY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/48/c1/48c1776a9fd8d2964350dd83d706b7e36c43d1f6f7fd5fbf698531a32475c8a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:41.588 [debug] Current batch of media processed. Will check again in 1000ms 14:14:42.590 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Robin Hilton | May 13, 2026\nLike a lot of artists who play the Tiny Desk, the guys in Foo Fighters carefully curated and worked through their set for weeks leading up to their appearance, even taping out the dimensions of the Desk in a practice space to puzzle-out the close quarters. But once they were in the office, they tossed most of those plans. \"If you put instruments in our hands and there are people,\" Dave Grohl jokes, \"it's fun to play!\"\n\nFor a better part of the last 30 years, Foo Fighters has worn the crown for stadium-sized guitar rock. But for this performance, the band shrinks down that outsized sound to something that fits perfectly behind the Desk, without losing any urgency or oomph. They open big with a banging take on \"Spit Shine\" from the band's latest album, Your Favorite Toy, followed by \"Learn to Fly\" from 1999's There is Nothing Left to Lose. They also include the introspective and quieter \"Child Actor\" (also from the new album), before closing out with \"My Hero\" and \"Everlong,\" both from 1997's The Colour and the Shape.\n\nSET LIST\n\"Spit Shine\"\n\"Learn to Fly\"\n\"Child Actor\"\n\"My Hero\"\n\"Everlong\"\n\nMUSICIANS\nDave Grohl: vocals, guitar\nPat Smear: guitar\nChris Shiflett: guitar, background vocals\nNate Mendel: bass, background vocals\nRami Jaffee: keys\nIlan Rubin: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Director/Mix: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#foofighters #nprmusic #tinydesk \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the Tiny Desk Contest. What's in your wallet? Learn more at Capital One dot com.", "duration" => 1459, "filename" => "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].mp4", "id" => "wxaXWSVhRXU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wxaXWSVhRXU", "playlist_index" => 58, "timestamp" => 1778662878, "title" => "Foo Fighters: Tiny Desk Concert", "upload_date" => "20260513"} 14:14:42.590 [debug] QUERY OK source="sources" db=0.4ms idle=1025.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:42.591 [debug] QUERY OK source="sources" db=0.5ms idle=1023.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.592 [debug] QUERY OK source="media_items" db=0.3ms idle=1022.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-13 09:01:18Z], 2] 14:14:42.594 [debug] QUERY OK source="media_items" db=1.2ms idle=1022.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | May 13, 2026\nLike a lot of artists who play the Tiny Desk, the guys in Foo Fighters carefully curated and worked through their set for weeks leading up to their appearance, even taping out the dimensions of the Desk in a practice space to puzzle-out the close quarters. But once they were in the office, they tossed most of those plans. \"If you put instruments in our hands and there are people,\" Dave Grohl jokes, \"it's fun to play!\"\n\nFor a better part of the last 30 years, Foo Fighters has worn the crown for stadium-sized guitar rock. But for this performance, the band shrinks down that outsized sound to something that fits perfectly behind the Desk, without losing any urgency or oomph. They open big with a banging take on \"Spit Shine\" from the band's latest album, Your Favorite Toy, followed by \"Learn to Fly\" from 1999's There is Nothing Left to Lose. They also include the introspective and quieter \"Child Actor\" (also from the new album), before closing out with \"My Hero\" and \"Everlong,\" both from 1997's The Colour and the Shape.\n\nSET LIST\n\"Spit Shine\"\n\"Learn to Fly\"\n\"Child Actor\"\n\"My Hero\"\n\"Everlong\"\n\nMUSICIANS\nDave Grohl: vocals, guitar\nPat Smear: guitar\nChris Shiflett: guitar, background vocals\nNate Mendel: bass, background vocals\nRami Jaffee: keys\nIlan Rubin: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Director/Mix: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#foofighters #nprmusic #tinydesk \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the Tiny Desk Contest. What's in your wallet? Learn more at Capital One dot com.", "Foo Fighters: Tiny Desk Concert", "8180c8a8-b8fb-47d5-b12a-60b31354665a", 1459, false, "wxaXWSVhRXU", "https://www.youtube.com/watch?v=wxaXWSVhRXU", 58, "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].mp4", false, false, false, 2, [], 0, ~U[2026-05-13 09:01:18Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Robin Hilton | May 13, 2026\nLike a lot of artists who play the Tiny Desk, the guys in Foo Fighters carefully curated and worked through their set for weeks leading up to their appearance, even taping out the dimensions of the Desk in a practice space to puzzle-out the close quarters. But once they were in the office, they tossed most of those plans. \"If you put instruments in our hands and there are people,\" Dave Grohl jokes, \"it's fun to play!\"\n\nFor a better part of the last 30 years, Foo Fighters has worn the crown for stadium-sized guitar rock. But for this performance, the band shrinks down that outsized sound to something that fits perfectly behind the Desk, without losing any urgency or oomph. They open big with a banging take on \"Spit Shine\" from the band's latest album, Your Favorite Toy, followed by \"Learn to Fly\" from 1999's There is Nothing Left to Lose. They also include the introspective and quieter \"Child Actor\" (also from the new album), before closing out with \"My Hero\" and \"Everlong,\" both from 1997's The Colour and the Shape.\n\nSET LIST\n\"Spit Shine\"\n\"Learn to Fly\"\n\"Child Actor\"\n\"My Hero\"\n\"Everlong\"\n\nMUSICIANS\nDave Grohl: vocals, guitar\nPat Smear: guitar\nChris Shiflett: guitar, background vocals\nNate Mendel: bass, background vocals\nRami Jaffee: keys\nIlan Rubin: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Director/Mix: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#foofighters #nprmusic #tinydesk \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the Tiny Desk Contest. What's in your wallet? Learn more at Capital One dot com.", "Foo Fighters: Tiny Desk Concert", 1459, false, "wxaXWSVhRXU", "https://www.youtube.com/watch?v=wxaXWSVhRXU", "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].mp4", false, 2, ~U[2026-05-13 09:01:18Z]] 14:14:42.594 [debug] QUERY OK source="sources" db=0.6ms idle=553.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:14:42.595 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:14:42.597 [debug] QUERY OK source="media_items" db=0.8ms 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 [179] 14:14:42.597 [info] Kicking off download for media item #179 (wxaXWSVhRXU) 14:14:42.602 [debug] QUERY OK source="tasks" db=0.7ms idle=7.0ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [127, 179, ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z]] 14:14:42.603 [debug] Current batch of media processed. Will check again in 1000ms 14:14:42.662 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://youtube.com/playlist?list=PLZ4ny09ZUze0bKV-Y0NtsJS9WBYtG0UnX&si=Bkoc17paZ3vYunVb --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/9f/8c/9f8c14c7d7dfb44b5a2de36e9797d7b0a92c9837ad863e6f6dfbaa17facb2d0b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:42.664 [debug] Gracefully stopping file follower 14:14:42.665 [debug] QUERY OK source="sources" db=0.8ms idle=69.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_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] 14:14:42.665 [debug] QUERY OK source="sources" db=0.1ms idle=68.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.667 [debug] QUERY OK source="media_items" db=1.0ms idle=65.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-03-21 09:00:47Z], 2] 14:14:42.669 [debug] QUERY OK source="media_items" db=1.5ms idle=66.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | March 21, 2024\nIt’s become a Tiny Desk tradition for artists to leave a small offering on the shelves — a tchotchke, a toy, a signed album or piece of swag, a guitar pick, that sort of thing. Usually, those pieces get absorbed into the visual din, but sometimes, they change the look of the Tiny Desk permanently. All of which is to say that when Chappell Roan finished her magnetic performance, we immediately sought her out to sheepishly ask if we could keep her wig.\n\nRoan’s marvelous debut album, The Rise and Fall of a Midwest Princess, came out last September — just in time to fit into the window of eligibility for the 2025 Grammys, hint hint wink — and it finds the singer toying confidently with a persona inspired in part by drag performers. Flanked by a pink-clad band, she wasn’t about to pass up the opportunity to serve up an absolute look, complete with white makeup and a towering wig (bolstered by a wadded-up trash bag tucked inside, as well as an assortment of stubbed-out cigarette butts), which now sits comfortably atop a skull Cypress Hill left us.\n\nIt’s only appropriate that Roan would forever alter the Tiny Desk. Because, at the risk of sounding hyperbolic, this is a stunning set: Performing five songs from Midwest Princess, Roan worked through songs of youthful heartache (“Casual”), queer liberation (“Pink Pony Club”), mournful alienation (“California”) and two decidedly different forms of chaotic seduction (“Picture You,” “Red Wine Supernova”). In every mood and every song, she’s utterly commanding — witty and whip-smart, vocally assured and charismatic beyond words.\n\nShe didn’t just leave her wig; she left a mark.\n\nSET LIST\n“Casual”\n“Pink Pony Club”\n“Picture You”\n“California”\n“Red Wine Supernova”\n\nMUSICIANS\nChappell Roan: lead vocals\nEliza Petrosyan: guitar\nLucy Ritter: drums\nValeria Falcon: bass\nSarah Hinez: keys \nDanica Pinner: cello \nMia Pfirrman: vocals\nEmily Lenck: violin\n\nTINY DESK TEAM\nProducer: Stephen Thompson\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Zayrha Rodriguez \nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Elizabeth Gillis\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #chappellroan \n0:14 Casual\n5:00 Pink Pony Club\n10:03 Picture You\n15:05 California \n19:30 Red Wine Supernova", "Chappell Roan: Tiny Desk Concert", "51a32edd-0c17-4aa2-99f4-bdb2382e5ebe", 1381, false, "w4WiXKGCJhg", "https://www.youtube.com/watch?v=w4WiXKGCJhg", 1, "/downloads/Tiny Desk/2024-03-21 Chappell Roan: Tiny Desk Concert/Chappell Roan: Tiny Desk Concert [w4WiXKGCJhg].mp4", false, false, false, 2, [], 1, ~U[2024-03-21 09:00:47Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Stephen Thompson | March 21, 2024\nIt’s become a Tiny Desk tradition for artists to leave a small offering on the shelves — a tchotchke, a toy, a signed album or piece of swag, a guitar pick, that sort of thing. Usually, those pieces get absorbed into the visual din, but sometimes, they change the look of the Tiny Desk permanently. All of which is to say that when Chappell Roan finished her magnetic performance, we immediately sought her out to sheepishly ask if we could keep her wig.\n\nRoan’s marvelous debut album, The Rise and Fall of a Midwest Princess, came out last September — just in time to fit into the window of eligibility for the 2025 Grammys, hint hint wink — and it finds the singer toying confidently with a persona inspired in part by drag performers. Flanked by a pink-clad band, she wasn’t about to pass up the opportunity to serve up an absolute look, complete with white makeup and a towering wig (bolstered by a wadded-up trash bag tucked inside, as well as an assortment of stubbed-out cigarette butts), which now sits comfortably atop a skull Cypress Hill left us.\n\nIt’s only appropriate that Roan would forever alter the Tiny Desk. Because, at the risk of sounding hyperbolic, this is a stunning set: Performing five songs from Midwest Princess, Roan worked through songs of youthful heartache (“Casual”), queer liberation (“Pink Pony Club”), mournful alienation (“California”) and two decidedly different forms of chaotic seduction (“Picture You,” “Red Wine Supernova”). In every mood and every song, she’s utterly commanding — witty and whip-smart, vocally assured and charismatic beyond words.\n\nShe didn’t just leave her wig; she left a mark.\n\nSET LIST\n“Casual”\n“Pink Pony Club”\n“Picture You”\n“California”\n“Red Wine Supernova”\n\nMUSICIANS\nChappell Roan: lead vocals\nEliza Petrosyan: guitar\nLucy Ritter: drums\nValeria Falcon: bass\nSarah Hinez: keys \nDanica Pinner: cello \nMia Pfirrman: vocals\nEmily Lenck: violin\n\nTINY DESK TEAM\nProducer: Stephen Thompson\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Zayrha Rodriguez \nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Elizabeth Gillis\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #chappellroan \n0:14 Casual\n5:00 Pink Pony Club\n10:03 Picture You\n15:05 California \n19:30 Red Wine Supernova", "Chappell Roan: Tiny Desk Concert", 1381, false, "w4WiXKGCJhg", "https://www.youtube.com/watch?v=w4WiXKGCJhg", "/downloads/Tiny Desk/2024-03-21 Chappell Roan: Tiny Desk Concert/Chappell Roan: Tiny Desk Concert [w4WiXKGCJhg].mp4", false, 2, ~U[2024-03-21 09:00:47Z]] 14:14:42.670 [debug] QUERY OK source="sources" db=0.4ms idle=66.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.670 [debug] QUERY OK source="media_items" db=0.4ms idle=4.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-12-06 17:00:06Z], 2] 14:14:42.672 [debug] QUERY OK source="media_items" db=1.3ms idle=5.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ashley Pointer | December 6, 2024\nDoechii, known as the \"Swamp Princess,\" arrived at NPR HQ radiating confidence. She moved with purpose, knowing exactly what she wanted and how to achieve it. Her declarative statement, \"I'm everything,\" from \"BOOM BAP\" off her Grammy-nominated mixtape, ALLIGATOR BITES NEVER HEAL, was on full display in her Tiny Desk debut.\n\nBacked by a full band, horns and two background singers, Doechii's performance was a masterclass in creativity. Sporting vintage academia looks, complete with matching cornrows and beads, Doechii delivers a freshly rearranged medley of cuts from ALLIGATOR BITES NEVER HEAL, tailored specifically for Tiny Desk. While hip-hop remained at the core, she truly gave us everything: a jazz arrangement of \"BOOM BAP,\" heavy rock vibes on \"CATFISH\" and a Southern praise break outro on \"NISSAN ALTIMA.\"\n\nShe closed her set with \"Black Girl Memoir\" from her debut album, Oh The Places You'll Go. Before performing, she shared, \"I wrote this song specifically for Black women. As a dark-skinned woman, there's a very unique experience I'm trying to internalize … This is dedicated to all the beautiful Black women in the room.\" While her star has been steadily on the rise since her debut, 2024 is shaping up to be the year Doechii cements herself as a household name.\n\nSET LIST\n\"BOOM BAP\"\n\"BOILED PEANUTS\"\n\"DENIAL IS A RIVER\"\n\"CATFISH\"\n\"NISSAN ALTIMA\"\n\"BULLFROG\"\n\"HIDE N SEEK\"\n\"Black Girl Memoir\"\n\nMUSICIANS\nDoechii: vocals\nTyler Victoria: guitar\nDee Simone: drums\nTatiana Tate: trumpeter, arrangement\nHammondgal: keyboards \nDJ Miss Milan: vocals\nBREN'NAE: background vocals\nEmmani: background vocals\nKeschia Potter : saxophone\nZuri Appleby: bassist\nSlimWav: musical direction\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Josh Newell\nVideographers: Joshua Bryant, Kara Frame, Sofia Seidel, Wendy Li\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Elle Mannion\nPhotographer: Alanté Serene\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #doechii \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Doechii: Tiny Desk Concert", "ce7c3806-8f32-4088-9592-ca2f6216bd13", 1420, false, "-91vymvIH0c", "https://www.youtube.com/watch?v=-91vymvIH0c", 2, "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].mp4", false, false, false, 2, [], 1, ~U[2024-12-06 17:00:06Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Ashley Pointer | December 6, 2024\nDoechii, known as the \"Swamp Princess,\" arrived at NPR HQ radiating confidence. She moved with purpose, knowing exactly what she wanted and how to achieve it. Her declarative statement, \"I'm everything,\" from \"BOOM BAP\" off her Grammy-nominated mixtape, ALLIGATOR BITES NEVER HEAL, was on full display in her Tiny Desk debut.\n\nBacked by a full band, horns and two background singers, Doechii's performance was a masterclass in creativity. Sporting vintage academia looks, complete with matching cornrows and beads, Doechii delivers a freshly rearranged medley of cuts from ALLIGATOR BITES NEVER HEAL, tailored specifically for Tiny Desk. While hip-hop remained at the core, she truly gave us everything: a jazz arrangement of \"BOOM BAP,\" heavy rock vibes on \"CATFISH\" and a Southern praise break outro on \"NISSAN ALTIMA.\"\n\nShe closed her set with \"Black Girl Memoir\" from her debut album, Oh The Places You'll Go. Before performing, she shared, \"I wrote this song specifically for Black women. As a dark-skinned woman, there's a very unique experience I'm trying to internalize … This is dedicated to all the beautiful Black women in the room.\" While her star has been steadily on the rise since her debut, 2024 is shaping up to be the year Doechii cements herself as a household name.\n\nSET LIST\n\"BOOM BAP\"\n\"BOILED PEANUTS\"\n\"DENIAL IS A RIVER\"\n\"CATFISH\"\n\"NISSAN ALTIMA\"\n\"BULLFROG\"\n\"HIDE N SEEK\"\n\"Black Girl Memoir\"\n\nMUSICIANS\nDoechii: vocals\nTyler Victoria: guitar\nDee Simone: drums\nTatiana Tate: trumpeter, arrangement\nHammondgal: keyboards \nDJ Miss Milan: vocals\nBREN'NAE: background vocals\nEmmani: background vocals\nKeschia Potter : saxophone\nZuri Appleby: bassist\nSlimWav: musical direction\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Josh Newell\nVideographers: Joshua Bryant, Kara Frame, Sofia Seidel, Wendy Li\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Elle Mannion\nPhotographer: Alanté Serene\nTiny Desk Team: Maia Stern, Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #doechii \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Doechii: Tiny Desk Concert", 1420, false, "-91vymvIH0c", "https://www.youtube.com/watch?v=-91vymvIH0c", "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].mp4", false, 2, ~U[2024-12-06 17:00:06Z]] 14:14:42.672 [debug] QUERY OK source="sources" db=0.1ms idle=5.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.673 [debug] QUERY OK source="media_items" db=0.2ms idle=3.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-01-31 10:00:02Z], 2] 14:14:42.675 [debug] QUERY OK source="media_items" db=1.4ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Elle Mannion | January 31, 2025\nIf you want it, Faye Webster’s Tiny Desk can offer an escape. Featuring her longtime band and a string quartet, Webster guides us through a swooning and sweeping set culled from her quickly growing catalog. \n\nWebster’s Underdressed at the Symphony was inspired by just that: Buying last-minute tickets to the symphony orchestra in her hometown of Atlanta and finding the experience otherworldly. She performs “But Not Kiss” and the title track from that album. Webster is a gentle but captivating performer in this space, at times grooving with her locked-in band. But she also appears to be in a trance of her own, like on the Atlanta Millionaires Club cuts “Jonny” and its spoken-word reprise. The horns heard on those original recordings gave everything a brassy warmth, but here Trey Pollard’s string arrangements enhance this Tiny Desk’s dream-like quality. \n\nSET LIST\n“In A Good Way”\n“But Not Kiss”\n“Underdressed at the Symphony”\n“Jonny”\n“Jonny (Reprise)”\n\nMUSICIANS\nFaye Webster: vocals, guitar\nNoor Khan: bass, backing vocals\nMatthew Stoessel: guitar, pedal steel \nNick Rosen: piano\nCharles Garner: drums, percussion\nEllen Riccio: violin \nDanielle Wiebe Burke: viola \nStephanie Barrett: cello \nAnnie Leeth: violin\n\nTINY DESK TEAM\nProducer: Elle Mannion\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Sofia Seidel\nAudio Engineer: Andie Huether\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #fayewebster", "Faye Webster: Tiny Desk Concert", "3cd5cb4b-bdc0-45a0-bb63-5b46603b18ee", 1187, false, "1ul9aWg0AQo", "https://www.youtube.com/watch?v=1ul9aWg0AQo", 3, "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].mp4", false, false, false, 2, [], 1, ~U[2025-01-31 10:00:02Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Elle Mannion | January 31, 2025\nIf you want it, Faye Webster’s Tiny Desk can offer an escape. Featuring her longtime band and a string quartet, Webster guides us through a swooning and sweeping set culled from her quickly growing catalog. \n\nWebster’s Underdressed at the Symphony was inspired by just that: Buying last-minute tickets to the symphony orchestra in her hometown of Atlanta and finding the experience otherworldly. She performs “But Not Kiss” and the title track from that album. Webster is a gentle but captivating performer in this space, at times grooving with her locked-in band. But she also appears to be in a trance of her own, like on the Atlanta Millionaires Club cuts “Jonny” and its spoken-word reprise. The horns heard on those original recordings gave everything a brassy warmth, but here Trey Pollard’s string arrangements enhance this Tiny Desk’s dream-like quality. \n\nSET LIST\n“In A Good Way”\n“But Not Kiss”\n“Underdressed at the Symphony”\n“Jonny”\n“Jonny (Reprise)”\n\nMUSICIANS\nFaye Webster: vocals, guitar\nNoor Khan: bass, backing vocals\nMatthew Stoessel: guitar, pedal steel \nNick Rosen: piano\nCharles Garner: drums, percussion\nEllen Riccio: violin \nDanielle Wiebe Burke: viola \nStephanie Barrett: cello \nAnnie Leeth: violin\n\nTINY DESK TEAM\nProducer: Elle Mannion\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Sofia Seidel\nAudio Engineer: Andie Huether\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #fayewebster", "Faye Webster: Tiny Desk Concert", 1187, false, "1ul9aWg0AQo", "https://www.youtube.com/watch?v=1ul9aWg0AQo", "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].mp4", false, 2, ~U[2025-01-31 10:00:02Z]] 14:14:42.675 [debug] QUERY OK source="sources" db=0.1ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.676 [debug] QUERY OK source="media_items" db=0.3ms idle=3.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-12-12 17:00:06Z], 2] 14:14:42.678 [debug] QUERY OK source="media_items" db=1.3ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Anamaria Sayre | December 12, 2024\nSaudade is a Portuguese word that can be roughly defined as a feeling of melancholy, nostalgia or yearning for something that is beloved but not present. There's no perfect translation, but one of the closest English expressions of the word I've ever seen is Billie Eilish's Tiny Desk performance.\n\nYou'd think the Los Angeles-born singer invented the term. Every breath is so full of indulgent melancholy, hopeful regret, at 22 years old she's become a captivating fixture of what it means, or rather what it feels, to love and lose simultaneously.\n\nTrading belting vocals and rocking guitar for gentle piano and almost-breaking falsetto, she reimagines tracks like \"THE GREATEST\" in their most raw and honest form. In Eilish's world, love's purest forms are inherently terrifying. Therein lies her starpower – she effortlessly, relentlessly brings to the fore the trickier emotions many of us tuck away for fear of what the world might think.\n\n\"I don't know what I'm crying for, I don't think I could love you more,\" she sings on \"BIRDS OF A FEATHER.\" Turns out the world is made up of a lot of people who just want to be seen, and this stripped down set is the perfect space for Eilish to give listeners just that.\n\nSET LIST\n\"THE GREATEST\"\n\"L'AMOUR DE MA VIE\"\n\"i love you\"\n\"BIRDS OF A FEATHER\"\n\nMUSICIANS\nBillie Eilish: vocals\nFinneas: guitar\nAndrew Marshall: drums\nSolo Smith: bass\nAbe Nouri: piano\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Alanté Serene\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #billieeilish \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Billie Eilish: Tiny Desk Concert", "eba796d1-9165-46b7-94fd-45f6653e10d8", 1338, false, "fOAIrUZbOwo", "https://www.youtube.com/watch?v=fOAIrUZbOwo", 4, "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].mp4", false, false, false, 2, [], 1, ~U[2024-12-12 17:00:06Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Anamaria Sayre | December 12, 2024\nSaudade is a Portuguese word that can be roughly defined as a feeling of melancholy, nostalgia or yearning for something that is beloved but not present. There's no perfect translation, but one of the closest English expressions of the word I've ever seen is Billie Eilish's Tiny Desk performance.\n\nYou'd think the Los Angeles-born singer invented the term. Every breath is so full of indulgent melancholy, hopeful regret, at 22 years old she's become a captivating fixture of what it means, or rather what it feels, to love and lose simultaneously.\n\nTrading belting vocals and rocking guitar for gentle piano and almost-breaking falsetto, she reimagines tracks like \"THE GREATEST\" in their most raw and honest form. In Eilish's world, love's purest forms are inherently terrifying. Therein lies her starpower – she effortlessly, relentlessly brings to the fore the trickier emotions many of us tuck away for fear of what the world might think.\n\n\"I don't know what I'm crying for, I don't think I could love you more,\" she sings on \"BIRDS OF A FEATHER.\" Turns out the world is made up of a lot of people who just want to be seen, and this stripped down set is the perfect space for Eilish to give listeners just that.\n\nSET LIST\n\"THE GREATEST\"\n\"L'AMOUR DE MA VIE\"\n\"i love you\"\n\"BIRDS OF A FEATHER\"\n\nMUSICIANS\nBillie Eilish: vocals\nFinneas: guitar\nAndrew Marshall: drums\nSolo Smith: bass\nAbe Nouri: piano\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Alanté Serene\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #billieeilish \n\nSupport for NPR Music comes from Better Help, committed to making mental well-being a priority\nand offering support in taking on everything life demands. With therapists available to communicate via video, chat, or phone. At BetterHelp.com/TinyDesk.", "Billie Eilish: Tiny Desk Concert", 1338, false, "fOAIrUZbOwo", "https://www.youtube.com/watch?v=fOAIrUZbOwo", "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].mp4", false, 2, ~U[2024-12-12 17:00:06Z]] 14:14:42.678 [debug] QUERY OK source="sources" db=0.4ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.679 [debug] QUERY OK source="media_items" db=0.3ms idle=3.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-12-11 05:00:31Z], 2] 14:14:42.684 [debug] QUERY OK source="media_items" db=4.6ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Hazel Cills | December 11, 2023\nThe last time Olivia Rodrigo performed a Tiny Desk concert, it was two years ago, in a deserted DMV office, back when pandemic precautions meant artists sadly couldn't play the real Desk. But this year, the singer-songwriter returned, bringing a handful of songs from her wildly fun sophomore album to the NPR Music office. \"It's much cooler to be here,\" Rodrigo says. \"I was saying earlier, I've never been starstruck by a room before.\"\n\nMany of the songs on GUTS, which earned a special recommendation on NPR Music's Best Albums of 2023 list, blow out Rodrigo's sound into colorful, grungy pop-rock fit for a stadium, like \"love is embarrassing,\" performed here with Rodrigo on jangly acoustic guitar. But the artist builds her set out with GUTS cuts that fit the intimate setup, like the searing \"vampire,\" her backup vocalists cooing eerily around each of her lines, or the potent ode to female jealousy, \"lacy,\" which Rodrigo explains started out as a poetry exercise in a college class. By the end of her set, she's completely alone at the piano for the sobering \"making the bed,\" and it's not difficult to see why she's one of pop's most promising rising performers.\n\nSET LIST\n\"love is embarrassing\"\n\"vampire\"\n\"lacy\"\n\"making the bed\"\n\nMUSICIANS\nOlivia Rodrigo: piano, guitar\nHayley Brownell: drums\nMoa Munoz: bass\nDaisy Spencer: guitar\nAshley Morgan: vocals\nGaba: vocals\nJulia Gartha: vocals\n\nTINY DESK TEAM\nProducers: Suraya Mohamed, Bob Boilen\nDirector/Editor: Joshua Bryant\nAudio Engineer: Josh Rogosin\nSeries Producer: Bobby Carter \nVideographers: Joshua Bryant, Kara Frame, Elizabeth Gillis, Maia Stern\nAudio Assistant: Valentina Rodríguez Sánchez\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #oliviarodrigo", "Olivia Rodrigo: Tiny Desk Concert", "a5c0c7fa-b782-4aaa-9b74-b26448a3d87a", 1095, false, "jmh3iruf4RA", "https://www.youtube.com/watch?v=jmh3iruf4RA", 5, "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].mp4", false, false, false, 2, [], 1, ~U[2023-12-11 05:00:31Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Hazel Cills | December 11, 2023\nThe last time Olivia Rodrigo performed a Tiny Desk concert, it was two years ago, in a deserted DMV office, back when pandemic precautions meant artists sadly couldn't play the real Desk. But this year, the singer-songwriter returned, bringing a handful of songs from her wildly fun sophomore album to the NPR Music office. \"It's much cooler to be here,\" Rodrigo says. \"I was saying earlier, I've never been starstruck by a room before.\"\n\nMany of the songs on GUTS, which earned a special recommendation on NPR Music's Best Albums of 2023 list, blow out Rodrigo's sound into colorful, grungy pop-rock fit for a stadium, like \"love is embarrassing,\" performed here with Rodrigo on jangly acoustic guitar. But the artist builds her set out with GUTS cuts that fit the intimate setup, like the searing \"vampire,\" her backup vocalists cooing eerily around each of her lines, or the potent ode to female jealousy, \"lacy,\" which Rodrigo explains started out as a poetry exercise in a college class. By the end of her set, she's completely alone at the piano for the sobering \"making the bed,\" and it's not difficult to see why she's one of pop's most promising rising performers.\n\nSET LIST\n\"love is embarrassing\"\n\"vampire\"\n\"lacy\"\n\"making the bed\"\n\nMUSICIANS\nOlivia Rodrigo: piano, guitar\nHayley Brownell: drums\nMoa Munoz: bass\nDaisy Spencer: guitar\nAshley Morgan: vocals\nGaba: vocals\nJulia Gartha: vocals\n\nTINY DESK TEAM\nProducers: Suraya Mohamed, Bob Boilen\nDirector/Editor: Joshua Bryant\nAudio Engineer: Josh Rogosin\nSeries Producer: Bobby Carter \nVideographers: Joshua Bryant, Kara Frame, Elizabeth Gillis, Maia Stern\nAudio Assistant: Valentina Rodríguez Sánchez\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #oliviarodrigo", "Olivia Rodrigo: Tiny Desk Concert", 1095, false, "jmh3iruf4RA", "https://www.youtube.com/watch?v=jmh3iruf4RA", "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].mp4", false, 2, ~U[2023-12-11 05:00:31Z]] 14:14:42.684 [debug] QUERY OK source="sources" db=0.2ms idle=8.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.685 [debug] QUERY OK source="media_items" db=0.5ms idle=7.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-12-20 17:00:06Z], 2] 14:14:42.711 [debug] QUERY OK source="media_items" db=25.1ms idle=7.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ashley Pointer | December 20, 2024\nWhen I greeted Sabrina Carpenter at NPR HQ for her Tiny Desk debut, her charm was immediately disarming. Bubbling with excitement, she extended her hand, introduced herself and complimented my outfit with genuine warmth. You’d think this was one of her first “big time” gigs, not a regular performance for a pop veteran, having sold out arenas across the country touring her now six time Grammy-nominated sixth album, Short n’ Sweet. That humility made me love her even more. \n\nBut Carpenter delivers far more than just charm in this performance. Backed by her band, complimented with pedal steel and a string quartet, she reimagines her biggest hits from Short n’ Sweet, while sharing the stories in between songs of how these tracks came to life. Opening with “Taste,” strings serve up some playful pizzicato, before Carpenter and her band move into a lush, soulful version “Bed Chem.” Then everyone swaps their electric instruments for acoustic to perform “Please Please Please” and “Slim Pickins.” Finally, Carpenter closes with the viral favorite “Juno,” cheekily asking the audience, “Have you ever tried this one?” before sweeping her rear end across the windchimes, earning a laugh from the room. \n\n“When I first started [writing songs] it was kinda in a room like this — a room with very dry walls and there’s no reverb,” Carpenter reflects at the top of her performance. “But there’s something so real and special.” That authenticity set the tone for a memorable session with one of 2024’s biggest breakout superstars.\n\nSET LIST\n“Taste”\n“Bed Chem”\n“Please Please Please”\n“Slim Pickins”\n“Espresso”\n“Juno”\n\nMUSICIANS\nSabrina Carpenter: vocals\nHaeun “hani” You: piano, keyboards\nCaleb Nelson: guitar\nMatt Park: pedal steel guitar\nChris Johnson: drums\nAlexandra Simpson: viola\nSarena Hsu: violin\nYasmeen “YAS” Al-Mazeedi: violin\nBobby Wooten III: bass\nMarza Merophi Wilks: cello\nChristine Noel Smit: background vocals\nMIA MOR: background vocals\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Sofia Seidel, Wendy Li\nAudio Engineer: David Greenburg\nProduction Assistant: Elle Mannion\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #sabrinacarpenter #espresso #nprmusic \n\nSupport for NPR Music comes from Better Help, committed to helping clients with issues ranging from relationship challenges and goal-setting to grief and depression. Learn more at BetterHelp.com/TinyDesk\n\nSupport for NPR Music comes from Google and Year in Search 2024. Celebrating the breakout searches like Sabrina Carpenter, that defined the year and inspired the world to search on.", "Sabrina Carpenter: Tiny Desk Concert", "d058462c-72e4-41a9-acca-5eb4f06f0d96", 1570, false, "BEoGvTlJMyY", "https://www.youtube.com/watch?v=BEoGvTlJMyY", 6, "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].mp4", false, false, false, 2, [], 1, ~U[2024-12-20 17:00:06Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Ashley Pointer | December 20, 2024\nWhen I greeted Sabrina Carpenter at NPR HQ for her Tiny Desk debut, her charm was immediately disarming. Bubbling with excitement, she extended her hand, introduced herself and complimented my outfit with genuine warmth. You’d think this was one of her first “big time” gigs, not a regular performance for a pop veteran, having sold out arenas across the country touring her now six time Grammy-nominated sixth album, Short n’ Sweet. That humility made me love her even more. \n\nBut Carpenter delivers far more than just charm in this performance. Backed by her band, complimented with pedal steel and a string quartet, she reimagines her biggest hits from Short n’ Sweet, while sharing the stories in between songs of how these tracks came to life. Opening with “Taste,” strings serve up some playful pizzicato, before Carpenter and her band move into a lush, soulful version “Bed Chem.” Then everyone swaps their electric instruments for acoustic to perform “Please Please Please” and “Slim Pickins.” Finally, Carpenter closes with the viral favorite “Juno,” cheekily asking the audience, “Have you ever tried this one?” before sweeping her rear end across the windchimes, earning a laugh from the room. \n\n“When I first started [writing songs] it was kinda in a room like this — a room with very dry walls and there’s no reverb,” Carpenter reflects at the top of her performance. “But there’s something so real and special.” That authenticity set the tone for a memorable session with one of 2024’s biggest breakout superstars.\n\nSET LIST\n“Taste”\n“Bed Chem”\n“Please Please Please”\n“Slim Pickins”\n“Espresso”\n“Juno”\n\nMUSICIANS\nSabrina Carpenter: vocals\nHaeun “hani” You: piano, keyboards\nCaleb Nelson: guitar\nMatt Park: pedal steel guitar\nChris Johnson: drums\nAlexandra Simpson: viola\nSarena Hsu: violin\nYasmeen “YAS” Al-Mazeedi: violin\nBobby Wooten III: bass\nMarza Merophi Wilks: cello\nChristine Noel Smit: background vocals\nMIA MOR: background vocals\n\nTINY DESK TEAM\nProducers: Ashley Pointer, Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nVideographers: Maia Stern, Joshua Bryant, Sofia Seidel, Wendy Li\nAudio Engineer: David Greenburg\nProduction Assistant: Elle Mannion\nPhotographer: Zayrha Rodriguez\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #sabrinacarpenter #espresso #nprmusic \n\nSupport for NPR Music comes from Better Help, committed to helping clients with issues ranging from relationship challenges and goal-setting to grief and depression. Learn more at BetterHelp.com/TinyDesk\n\nSupport for NPR Music comes from Google and Year in Search 2024. Celebrating the breakout searches like Sabrina Carpenter, that defined the year and inspired the world to search on.", "Sabrina Carpenter: Tiny Desk Concert", 1570, false, "BEoGvTlJMyY", "https://www.youtube.com/watch?v=BEoGvTlJMyY", "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].mp4", false, 2, ~U[2024-12-20 17:00:06Z]] 14:14:42.712 [debug] QUERY OK source="sources" db=0.2ms idle=32.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.712 [debug] QUERY OK source="media_items" db=0.7ms idle=27.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2013-08-19 20:19:38Z], 2] 14:14:42.715 [debug] QUERY OK source="media_items" db=2.2ms idle=28.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["When I first saw The Front Bottoms, I was stunned, as 350-plus singing/shouting clubgoers repeating compassionate verse after complicated verse back at singer Brian Sella. And then it happened again at a hot sweaty club in Philadelphia, and later in D.C., and then again in Baltimore. The community that's formed around these songs, total strangers purging deep emotions in a public space. It's a beautiful phenomena, a testament to the passion and compassion that this band radiates. A testament to the nerve that's gets pinged with lines cried out, 'I wanna be stronger than your dad was for your mom' or the phrase in one of this years best songs 'Twin Sized Mattress' \"\n\nI wanna contribute to the chaos\n\nI don't wanna watch and then complain\n\n'Cause I am through finding blame\n\nThat is the decision that I have made\n\nAnd when you hear the music...uncomplicated but pretty memorable, you realize that the talent in this band isn't about instrument craft and years of playing scales...this is about the shortest distance from emotion, sometimes complex and storied emotion, from band to audience. At the Tiny Desk in the bright of day and with office lights on, it was a tough to get the call and response that happens in a darkened late night room, but it's not hard to look at the faces in this band, especially the sweet smile of Brian, to understand this band. Their new record Talon of the Hawk is certainly on my year end list for all these reasons. It's all about heart and soul, something frequently avoided and hard to convey. --BOB BOILEN\n\nSet List\n\n\"Au Revoir (Adios)\"\n\"Swear To God The Devil Made Me Do It\"\n\"The Feud\"\n\"Twin Size Mattress\"\n\nCredits\n\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The Front Bottoms: NPR Music Tiny Desk Concert", "bedb725c-5308-49a5-b5b0-8a26c4e23502", 939, false, "pc8U2VP92Vg", "https://www.youtube.com/watch?v=pc8U2VP92Vg", 7, "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].mp4", false, false, false, 2, [], 1, ~U[2013-08-19 20:19:38Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "When I first saw The Front Bottoms, I was stunned, as 350-plus singing/shouting clubgoers repeating compassionate verse after complicated verse back at singer Brian Sella. And then it happened again at a hot sweaty club in Philadelphia, and later in D.C., and then again in Baltimore. The community that's formed around these songs, total strangers purging deep emotions in a public space. It's a beautiful phenomena, a testament to the passion and compassion that this band radiates. A testament to the nerve that's gets pinged with lines cried out, 'I wanna be stronger than your dad was for your mom' or the phrase in one of this years best songs 'Twin Sized Mattress' \"\n\nI wanna contribute to the chaos\n\nI don't wanna watch and then complain\n\n'Cause I am through finding blame\n\nThat is the decision that I have made\n\nAnd when you hear the music...uncomplicated but pretty memorable, you realize that the talent in this band isn't about instrument craft and years of playing scales...this is about the shortest distance from emotion, sometimes complex and storied emotion, from band to audience. At the Tiny Desk in the bright of day and with office lights on, it was a tough to get the call and response that happens in a darkened late night room, but it's not hard to look at the faces in this band, especially the sweet smile of Brian, to understand this band. Their new record Talon of the Hawk is certainly on my year end list for all these reasons. It's all about heart and soul, something frequently avoided and hard to convey. --BOB BOILEN\n\nSet List\n\n\"Au Revoir (Adios)\"\n\"Swear To God The Devil Made Me Do It\"\n\"The Feud\"\n\"Twin Size Mattress\"\n\nCredits\n\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The Front Bottoms: NPR Music Tiny Desk Concert", 939, false, "pc8U2VP92Vg", "https://www.youtube.com/watch?v=pc8U2VP92Vg", "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].mp4", false, 2, ~U[2013-08-19 20:19:38Z]] 14:14:42.716 [debug] QUERY OK source="sources" db=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.716 [debug] QUERY OK source="media_items" db=0.4ms idle=5.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-10-10 13:00:05Z], 2] 14:14:42.718 [debug] QUERY OK source="media_items" db=1.2ms idle=4.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Oct. 2, 2017 | Lars Gotrich -- Paramore's After Laughter captures the moment between rapture and its comedown, the glitter wiped away, left with skin rubbed raw. It's a record, more than a decade into the band's career, that not only exposes the sparkling pop that's always lit Paramore's songs, but also deals with the ache of growing up and growing apart. When Hayley Williams sings, \"Tell my friends I'm coming down / We'll kick it when I hit the ground\" from the '80s-tastic jam \"Hard Times\" at the Tiny Desk, the stark dichotomy is laid bare by the band's stripped-down performance that still packs a small synth and Zac Farro's drum machine into its Afro-pop-flecked textures.\n\nBacked here only by guitarist Taylor York, \"26\" is Williams' letter to a younger self, to still believe in dreams, knowing its costs. Paramore's quieter songs have never quite shown this depth of understated devastation and determination, and Williams reflects that nuance in a voice that scales the end of the line, \"And they say that dreaming is free,\" with just the slightest trail of regret.\n\nThese songs extend After Laughter's themes, racing across the spectrum of hope, with \"Fake Happy\" as a soaring anthem to expressing your truest self (and calling out those playing pretend). At the Tiny Desk, the shimmering guitars and synths almost become tropical, as if the band's all taken a big swig of Drake's \"Passionfruit\" and started a lowkey jam among friends.\n\nSet List\n\n\"Hard Times\"\n\"26\"\n\"Fake Happy\"\n\nMUSICIANS\n\nHayley Williams (vocals), Taylor York (guitar), Zac Farro (drum machine), Logan MacKenzie (keys), Joseph Howard (bass), Justin York (guitar)\n\nCREDITS\n\nProducers: Lars Gotrich, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin; Videographers: Morgan Noelle Smith, Niki Walker, Maia Stern, Alyse Young; Production Assistant: Salvatore Maicki; Photo: Christina Ascani/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Paramore: NPR Music Tiny Desk Concert", "4f9485f3-7234-4e6a-87e5-2a6963f78334", 761, false, "_t-nRXwAL1k", "https://www.youtube.com/watch?v=_t-nRXwAL1k", 8, "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].mp4", false, false, false, 2, [], 1, ~U[2017-10-10 13:00:05Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Oct. 2, 2017 | Lars Gotrich -- Paramore's After Laughter captures the moment between rapture and its comedown, the glitter wiped away, left with skin rubbed raw. It's a record, more than a decade into the band's career, that not only exposes the sparkling pop that's always lit Paramore's songs, but also deals with the ache of growing up and growing apart. When Hayley Williams sings, \"Tell my friends I'm coming down / We'll kick it when I hit the ground\" from the '80s-tastic jam \"Hard Times\" at the Tiny Desk, the stark dichotomy is laid bare by the band's stripped-down performance that still packs a small synth and Zac Farro's drum machine into its Afro-pop-flecked textures.\n\nBacked here only by guitarist Taylor York, \"26\" is Williams' letter to a younger self, to still believe in dreams, knowing its costs. Paramore's quieter songs have never quite shown this depth of understated devastation and determination, and Williams reflects that nuance in a voice that scales the end of the line, \"And they say that dreaming is free,\" with just the slightest trail of regret.\n\nThese songs extend After Laughter's themes, racing across the spectrum of hope, with \"Fake Happy\" as a soaring anthem to expressing your truest self (and calling out those playing pretend). At the Tiny Desk, the shimmering guitars and synths almost become tropical, as if the band's all taken a big swig of Drake's \"Passionfruit\" and started a lowkey jam among friends.\n\nSet List\n\n\"Hard Times\"\n\"26\"\n\"Fake Happy\"\n\nMUSICIANS\n\nHayley Williams (vocals), Taylor York (guitar), Zac Farro (drum machine), Logan MacKenzie (keys), Joseph Howard (bass), Justin York (guitar)\n\nCREDITS\n\nProducers: Lars Gotrich, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin; Videographers: Morgan Noelle Smith, Niki Walker, Maia Stern, Alyse Young; Production Assistant: Salvatore Maicki; Photo: Christina Ascani/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Paramore: NPR Music Tiny Desk Concert", 761, false, "_t-nRXwAL1k", "https://www.youtube.com/watch?v=_t-nRXwAL1k", "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].mp4", false, 2, ~U[2017-10-10 13:00:05Z]] 14:14:42.718 [debug] QUERY OK source="sources" db=0.2ms idle=5.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.719 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-02-11 10:00:43Z], 2] 14:14:42.720 [debug] QUERY OK source="media_items" db=1.0ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | February 11, 2025\nArtists who play the Tiny Desk aren't always sure what they're getting into. \"I wasn't expecting it to be in a big building,\" girl in red's Marie Ulven tells the NPR crowd. \"I thought I was going to go into a little house or something.\"\n\nAny confusion aside, Ulven and her band deliver a set suitable for the kind of cozy space she imagined, one of genuine charm, good humor and unbridled joy — a vibe that girl in red has always cultivated through music. She can find cause for celebration even in life's bleakest moments, like when Ulven and the band deploy rapid-fire handclaps during a song about the emptiness of unrequited love (\"Phantom Pain\") or the way she says \"Depression!\" with a smile and a cheerleader's fist in the air just before \"Summer Depression.\" \"It's a normal thing to feel like this,\" she sings, offering a much-needed dose of warmth and empathy on what was an otherwise chilly, overcast day in Washington, D.C.\n\nSET LIST\n\"Phantom Pain\"\n\"Summer Depression\"\n\"Too Much\"\n\"I Wanna Be Your Girlfriend\" \n\nMUSICIANS\nMarie Ulven: vocals, guitar\nMartin Dybal: guitar, music director\nHenrik Bakken: bass\nBror Brorson: guitar\nErlend Hisdal: drums\nViljar Dunđerović: keys, piano\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Neil Tevault\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Zayrha Rodriguez\nAudio Engineer: Josh Newell\nProduction Assistant: Ashley Pointer\nPhotographer: Sofia Seidel\nTiny Desk Team: Lars Gotrich, Maia Stern\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #girlinred", "girl in red: Tiny Desk Concert", "4a5cc6f4-cd28-4c3d-8801-0d4ae9ff3966", 1026, false, "cXYgdCXkLMc", "https://www.youtube.com/watch?v=cXYgdCXkLMc", 9, "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].mp4", false, false, false, 2, [], 1, ~U[2025-02-11 10:00:43Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Robin Hilton | February 11, 2025\nArtists who play the Tiny Desk aren't always sure what they're getting into. \"I wasn't expecting it to be in a big building,\" girl in red's Marie Ulven tells the NPR crowd. \"I thought I was going to go into a little house or something.\"\n\nAny confusion aside, Ulven and her band deliver a set suitable for the kind of cozy space she imagined, one of genuine charm, good humor and unbridled joy — a vibe that girl in red has always cultivated through music. She can find cause for celebration even in life's bleakest moments, like when Ulven and the band deploy rapid-fire handclaps during a song about the emptiness of unrequited love (\"Phantom Pain\") or the way she says \"Depression!\" with a smile and a cheerleader's fist in the air just before \"Summer Depression.\" \"It's a normal thing to feel like this,\" she sings, offering a much-needed dose of warmth and empathy on what was an otherwise chilly, overcast day in Washington, D.C.\n\nSET LIST\n\"Phantom Pain\"\n\"Summer Depression\"\n\"Too Much\"\n\"I Wanna Be Your Girlfriend\" \n\nMUSICIANS\nMarie Ulven: vocals, guitar\nMartin Dybal: guitar, music director\nHenrik Bakken: bass\nBror Brorson: guitar\nErlend Hisdal: drums\nViljar Dunđerović: keys, piano\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Joshua Bryant\nAudio Technical Director: Neil Tevault\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Zayrha Rodriguez\nAudio Engineer: Josh Newell\nProduction Assistant: Ashley Pointer\nPhotographer: Sofia Seidel\nTiny Desk Team: Lars Gotrich, Maia Stern\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #girlinred", "girl in red: Tiny Desk Concert", 1026, false, "cXYgdCXkLMc", "https://www.youtube.com/watch?v=cXYgdCXkLMc", "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].mp4", false, 2, ~U[2025-02-11 10:00:43Z]] 14:14:42.721 [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" = ?) [2] 14:14:42.721 [debug] QUERY OK source="media_items" db=0.3ms idle=3.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-06-28 09:00:00Z], 2] 14:14:42.723 [debug] QUERY OK source="media_items" db=1.0ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Imogen Heap play \"Guitar Song\", \"Speeding Cars\" and \"Hide and Seek\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nJune 20, 2019 | Bob Boilen -- In the course of a few songs at the Tiny Desk, Imogen Heap took us through her many musical talents. The concert began with her old Frou Frou musical partner, Guy Sigsworth — and their first new song in 17 years — and ended with an extraordinary demonstration and performance of her high-tech musical gloves.\n\nImogen Heap not only has an enchanting voice but also the talents of a world-class audio engineer. She's completely engrossed in a technology she's helped to develop, one that makes it possible to alter sounds, create loops and compose tunes all with the wave of her glove-wearing hands. The high-tech gloves, now called Mi.Mu Gloves, were first shown at a TEDGlobal conference eight years ago. Her performances, with her sound-altering arm and hand gestures, resemble a summoning of spirits, a far more compelling live experience than what Imogen said used to look like she was standing behind her laptop checking email.\n\nAnd though there's not been a new Imogen Heap album since 2014, this Tiny Desk Concert includes a reworking of \"Hide and Seek,\" the song that made her a household name, and one she reimagined for the Broadway play, Harry Potter and the Cursed Child.\n\nIt's a thoroughly enchanting Tiny Desk Concert.\n\nSET LIST\nGuitar Song\nSpeeding Cars\nHide and Seek\n\nMUSICIANS\nImogen Heap: lead vocals, piano, Mi.Mu gloves; Guy Sigsworth: keys; Steve Jones: guitar; Zoë Keating: cello; Tim Keiper: drums, percussion\n\nCREDITS\nProducers: Bob Boilen, Colin Marshall; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin, Natasha Branch; Videographers: Colin Marshall, Nickolai Hammar, Kara Frame; Associate Producer: Bobby Carter; Photo: NPR", "Imogen Heap: NPR Music Tiny Desk Concert", "df1de92d-4649-4280-ad51-6e80060d3050", 1143, false, "3QtklTXbKUQ", "https://www.youtube.com/watch?v=3QtklTXbKUQ", 10, "/downloads/Tiny Desk/2019-06-28 Imogen Heap: NPR Music Tiny Desk Concert/Imogen Heap: NPR Music Tiny Desk Concert [3QtklTXbKUQ].mp4", false, false, false, 2, [], 1, ~U[2019-06-28 09:00:00Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Imogen Heap play \"Guitar Song\", \"Speeding Cars\" and \"Hide and Seek\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nJune 20, 2019 | Bob Boilen -- In the course of a few songs at the Tiny Desk, Imogen Heap took us through her many musical talents. The concert began with her old Frou Frou musical partner, Guy Sigsworth — and their first new song in 17 years — and ended with an extraordinary demonstration and performance of her high-tech musical gloves.\n\nImogen Heap not only has an enchanting voice but also the talents of a world-class audio engineer. She's completely engrossed in a technology she's helped to develop, one that makes it possible to alter sounds, create loops and compose tunes all with the wave of her glove-wearing hands. The high-tech gloves, now called Mi.Mu Gloves, were first shown at a TEDGlobal conference eight years ago. Her performances, with her sound-altering arm and hand gestures, resemble a summoning of spirits, a far more compelling live experience than what Imogen said used to look like she was standing behind her laptop checking email.\n\nAnd though there's not been a new Imogen Heap album since 2014, this Tiny Desk Concert includes a reworking of \"Hide and Seek,\" the song that made her a household name, and one she reimagined for the Broadway play, Harry Potter and the Cursed Child.\n\nIt's a thoroughly enchanting Tiny Desk Concert.\n\nSET LIST\nGuitar Song\nSpeeding Cars\nHide and Seek\n\nMUSICIANS\nImogen Heap: lead vocals, piano, Mi.Mu gloves; Guy Sigsworth: keys; Steve Jones: guitar; Zoë Keating: cello; Tim Keiper: drums, percussion\n\nCREDITS\nProducers: Bob Boilen, Colin Marshall; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin, Natasha Branch; Videographers: Colin Marshall, Nickolai Hammar, Kara Frame; Associate Producer: Bobby Carter; Photo: NPR", "Imogen Heap: NPR Music Tiny Desk Concert", 1143, false, "3QtklTXbKUQ", "https://www.youtube.com/watch?v=3QtklTXbKUQ", "/downloads/Tiny Desk/2019-06-28 Imogen Heap: NPR Music Tiny Desk Concert/Imogen Heap: NPR Music Tiny Desk Concert [3QtklTXbKUQ].mp4", false, 2, ~U[2019-06-28 09:00:00Z]] 14:14:42.723 [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] 14:14:42.724 [debug] QUERY OK source="media_items" db=0.4ms idle=3.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-06-22 09:00:19Z], 2] 14:14:42.726 [debug] QUERY OK source="media_items" db=1.5ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This performance was recorded on Feb. 12, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nJune 17, 2020 | Abby O'Neill -- On a brisk February morning, Alicia Keys, full of effervescence, entered NPR through the loading dock wearing a canary yellow faux fur coat. During our ride to the fourth floor, she joked about how she hadn't been invited to play at the Tiny Desk. That, of course, wasn't exactly true. We worked on and off for years to make this moment happen, and I can say wholeheartedly that it was worth the wait.\n\nAlicia Keys has an aura that you can sense the second she enters a room, or in my case, an elevator. She radiates compassion and kindness. This spirit is the key to Keys's songwriting, which is rooted in introspection and mindfulness.\n\nAs she approached her piano, a bit surprised at the amount of people in the room, she smiled and remarked over her shoulder, \"Gee, the Tiny Desk is tiny!\" She kicked off the set with an uncanny ode to combat the darkness of this moment in American history: \"Show Me Love,\" a single she released in 2019. No one could have predicted then how much her lyrics and musical healing would be crucial during this emotionally fraught time of unprecedented political and racial unrest, heightened by three months of quarantine due to a global pandemic.\n\nThe stand-out moment during her Tiny Desk was the premiere of \"Gramercy Park\", a song from her upcoming self-titled album, ALICIA, which is set to be released this fall. It's one of those timeless songs that will transcend radio formats and genres, with lyrics that address how utter selflessness and worrying about making everyone happy but yourself can throw your own center askew. The song's spiritual refrain is sure to be a sing-along moment for the rest of Keys's career.\n\nShe told the crowd after \"Gramercy Park\" that she's struggled with appeasing people her whole life, but she's trying harder now to set boundaries. Luckily for the Tiny Desk audience, that resolution didn't pertain to this concert. After wrapping up what was to be a three-song set with her latest single \"Underdog,\" which you may have seen her perform at this year's Grammys, the crowd begged for an encore. After crowdsourcing suggestions, she and her band delivered a riveting rendition of Keys's breakout 2001 single, \"Fallin'.\"\n\nThe world, now more than ever, needs more love, reflection and accountability – a mantra that's woven into every fiber of Alicia Keys's being and every lyric of her songs.\n\nSET LIST\n\"Show Me Love\"\n\"Gramercy Park\"\n\"Underdog\"\n\"Fallin'\"\n\nMUSICIANS\nAlicia Keys: vocals, piano; RAII & Whitney: vocals; Ant Parrish: bass; Curt Chambers: guitar; Mike Reid: drums; Omar Edwards: keys.\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith, Kara Frame; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, Natasha Branch; Videographers: Kara Frame, Maia Stern, Melany Rochester, Shanti Hands; Editor: Maia Stern; Associate Producer: Bobby Carter; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Kisha Ravi/NPR", "Alicia Keys: NPR Music Tiny Desk Concert", "181c1007-aec2-46ed-9dc9-e587a3e946bd", 1667, false, "uwUt1fVLb3E", "https://www.youtube.com/watch?v=uwUt1fVLb3E", 11, "/downloads/Tiny Desk/2020-06-22 Alicia Keys: NPR Music Tiny Desk Concert/Alicia Keys: NPR Music Tiny Desk Concert [uwUt1fVLb3E].mp4", false, false, false, 2, [], 1, ~U[2020-06-22 09:00:19Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "This performance was recorded on Feb. 12, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nJune 17, 2020 | Abby O'Neill -- On a brisk February morning, Alicia Keys, full of effervescence, entered NPR through the loading dock wearing a canary yellow faux fur coat. During our ride to the fourth floor, she joked about how she hadn't been invited to play at the Tiny Desk. That, of course, wasn't exactly true. We worked on and off for years to make this moment happen, and I can say wholeheartedly that it was worth the wait.\n\nAlicia Keys has an aura that you can sense the second she enters a room, or in my case, an elevator. She radiates compassion and kindness. This spirit is the key to Keys's songwriting, which is rooted in introspection and mindfulness.\n\nAs she approached her piano, a bit surprised at the amount of people in the room, she smiled and remarked over her shoulder, \"Gee, the Tiny Desk is tiny!\" She kicked off the set with an uncanny ode to combat the darkness of this moment in American history: \"Show Me Love,\" a single she released in 2019. No one could have predicted then how much her lyrics and musical healing would be crucial during this emotionally fraught time of unprecedented political and racial unrest, heightened by three months of quarantine due to a global pandemic.\n\nThe stand-out moment during her Tiny Desk was the premiere of \"Gramercy Park\", a song from her upcoming self-titled album, ALICIA, which is set to be released this fall. It's one of those timeless songs that will transcend radio formats and genres, with lyrics that address how utter selflessness and worrying about making everyone happy but yourself can throw your own center askew. The song's spiritual refrain is sure to be a sing-along moment for the rest of Keys's career.\n\nShe told the crowd after \"Gramercy Park\" that she's struggled with appeasing people her whole life, but she's trying harder now to set boundaries. Luckily for the Tiny Desk audience, that resolution didn't pertain to this concert. After wrapping up what was to be a three-song set with her latest single \"Underdog,\" which you may have seen her perform at this year's Grammys, the crowd begged for an encore. After crowdsourcing suggestions, she and her band delivered a riveting rendition of Keys's breakout 2001 single, \"Fallin'.\"\n\nThe world, now more than ever, needs more love, reflection and accountability – a mantra that's woven into every fiber of Alicia Keys's being and every lyric of her songs.\n\nSET LIST\n\"Show Me Love\"\n\"Gramercy Park\"\n\"Underdog\"\n\"Fallin'\"\n\nMUSICIANS\nAlicia Keys: vocals, piano; RAII & Whitney: vocals; Ant Parrish: bass; Curt Chambers: guitar; Mike Reid: drums; Omar Edwards: keys.\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith, Kara Frame; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, Natasha Branch; Videographers: Kara Frame, Maia Stern, Melany Rochester, Shanti Hands; Editor: Maia Stern; Associate Producer: Bobby Carter; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Kisha Ravi/NPR", "Alicia Keys: NPR Music Tiny Desk Concert", 1667, false, "uwUt1fVLb3E", "https://www.youtube.com/watch?v=uwUt1fVLb3E", " (truncated) 14:14:42.726 [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" = ?) [2] 14:14:42.727 [debug] QUERY OK source="media_items" db=0.3ms idle=4.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-12-09 10:00:09Z], 2] 14:14:42.729 [debug] QUERY OK source="media_items" db=1.1ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 9, 2020 | Lars Gotrich -- \"I've never done this without Paramore,\" Hayley Williams announces during her Tiny Desk (home) concert. For the first time in months, she's joined by a band, including friends and Tiny Desk alumnae Julien Baker and Becca Mancari. And from the moment the camera pans out of a literal tiny desk diorama, a jolt of energy leaps from Williams.\n\nPetals for Armor is a soul-cleansing exhale from years of holding her breath. Originally released in a series of EPs, her solo debut sings through heartache in a tangle of triumph and hard-earned wisdom. It's a pop album that knows sadness can simmer, but also shout over an ever-shifting sonic palette. During the pandemic and protests, Williams has played these songs from her couch with muted restraint, and self-serenaded with acoustic covers — sad songs really can be sympathetic companions during dark days. \n\nBut in her home, surrounded by blank canvases, Williams and friends splash a bottled-up energy. The joy is infectious, as \"Pure Love\" bursts from first bloom, \"Taken\" shows off Baker's jazzy-funk licks and Williams leans into the \"Dead Horse\" kiss-off with gleeful abandon. \n\nSET LIST\n\"Pure Love\"\n\"Taken\"\n\"Dead Horse\"\n\nMUSICIANS\nHayley Williams: vocals, keys, guitar\nAaron Steele: drums\nJoey Howard: bass\nBecca Mancari: synth, vocals\nJulien Baker: guitar\n\nCREDITS\nVideo: Mike Kluge, Jonny Kingsbury, Derec Dunn, Violeta Boix\nAudio: Travis Bing\nMiniature Art Director: Natalie Hosselton\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Hayley Williams: Tiny Desk (Home) Concert", "d79a13ed-0953-418d-b5d6-ead075cd867c", 609, false, "ZknTE5DPlAA", "https://www.youtube.com/watch?v=ZknTE5DPlAA", 12, "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].mp4", false, false, false, 2, [], 1, ~U[2020-12-09 10:00:09Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 9, 2020 | Lars Gotrich -- \"I've never done this without Paramore,\" Hayley Williams announces during her Tiny Desk (home) concert. For the first time in months, she's joined by a band, including friends and Tiny Desk alumnae Julien Baker and Becca Mancari. And from the moment the camera pans out of a literal tiny desk diorama, a jolt of energy leaps from Williams.\n\nPetals for Armor is a soul-cleansing exhale from years of holding her breath. Originally released in a series of EPs, her solo debut sings through heartache in a tangle of triumph and hard-earned wisdom. It's a pop album that knows sadness can simmer, but also shout over an ever-shifting sonic palette. During the pandemic and protests, Williams has played these songs from her couch with muted restraint, and self-serenaded with acoustic covers — sad songs really can be sympathetic companions during dark days. \n\nBut in her home, surrounded by blank canvases, Williams and friends splash a bottled-up energy. The joy is infectious, as \"Pure Love\" bursts from first bloom, \"Taken\" shows off Baker's jazzy-funk licks and Williams leans into the \"Dead Horse\" kiss-off with gleeful abandon. \n\nSET LIST\n\"Pure Love\"\n\"Taken\"\n\"Dead Horse\"\n\nMUSICIANS\nHayley Williams: vocals, keys, guitar\nAaron Steele: drums\nJoey Howard: bass\nBecca Mancari: synth, vocals\nJulien Baker: guitar\n\nCREDITS\nVideo: Mike Kluge, Jonny Kingsbury, Derec Dunn, Violeta Boix\nAudio: Travis Bing\nMiniature Art Director: Natalie Hosselton\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Hayley Williams: Tiny Desk (Home) Concert", 609, false, "ZknTE5DPlAA", "https://www.youtube.com/watch?v=ZknTE5DPlAA", "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].mp4", false, 2, ~U[2020-12-09 10:00:09Z]] 14:14:42.729 [debug] QUERY OK source="sources" db=0.2ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.729 [debug] QUERY OK source="media_items" db=0.2ms idle=3.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-05-24 09:00:51Z], 2] 14:14:42.731 [debug] QUERY OK source="media_items" db=1.2ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | May 24, 2024\nNelly Furtado’s career has spanned a quarter-century, not to mention tens of millions of records sold, so it’s tough to fit all the highlights into a single Tiny Desk concert. But damned if Furtado didn’t at least try: Her set featured a bunch of her biggest hits (“Promiscuous,” “Say It Right,” “I’m Like A Bird,” “Maneater”), her remix of Missy Elliott’s “Get Ur Freak On” and, yes, a brand-new single called “Love Bites.” In all, 11 tracks — some of them complete, some of them truncated into medleys — made the cut.\n\nFor this set, Furtado assembled eight of her favorite veteran collaborators, who joined her in organically re-creating her busy, glitchy pop sound without relying on backing tracks. That meant incorporating everything from a violin to cowbell to beatboxing to scratching courtesy of DJ Lil Jaz — Furtado and Lil Jaz have a daughter together, Nevis, who served as the set’s creative director — in a performance that felt like a victory lap, a greatest-hits reel and a homecoming all at once.\n\nSET LIST\n“Say It Right”\n“Explode”\n“Powerless (Say What You Want)”\n“Promiscuous”\n“All Good Things (Come To An End)”\n“I'm Like A Bird”\n“Get Ur Freak On (Remix)”\n“Love Bites”\n“Eat Your Man”\n“Give It To Me”\n“Maneater”\n\nMUSICIANS\nNelly Furtado: lead vocals\nHrag Sanbalian: keys, musical direction\nDaniel Stone: percussion\nWilliam Lamoureux: violin\nBrian West: guitar\nLionel Jarvis: bass\nJim Beanz: vocals\nAnjulie Persaud: vocals\nDJ Lil’ Jaz: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Michael Zamora\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #nellyfurtado", "Nelly Furtado: Tiny Desk Concert", "3a4895ea-8888-4d80-9092-6df4234d3b70", 1296, false, "y-PLr-BPxKU", "https://www.youtube.com/watch?v=y-PLr-BPxKU", 13, "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].mp4", false, false, false, 2, [], 1, ~U[2024-05-24 09:00:51Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Stephen Thompson | May 24, 2024\nNelly Furtado’s career has spanned a quarter-century, not to mention tens of millions of records sold, so it’s tough to fit all the highlights into a single Tiny Desk concert. But damned if Furtado didn’t at least try: Her set featured a bunch of her biggest hits (“Promiscuous,” “Say It Right,” “I’m Like A Bird,” “Maneater”), her remix of Missy Elliott’s “Get Ur Freak On” and, yes, a brand-new single called “Love Bites.” In all, 11 tracks — some of them complete, some of them truncated into medleys — made the cut.\n\nFor this set, Furtado assembled eight of her favorite veteran collaborators, who joined her in organically re-creating her busy, glitchy pop sound without relying on backing tracks. That meant incorporating everything from a violin to cowbell to beatboxing to scratching courtesy of DJ Lil Jaz — Furtado and Lil Jaz have a daughter together, Nevis, who served as the set’s creative director — in a performance that felt like a victory lap, a greatest-hits reel and a homecoming all at once.\n\nSET LIST\n“Say It Right”\n“Explode”\n“Powerless (Say What You Want)”\n“Promiscuous”\n“All Good Things (Come To An End)”\n“I'm Like A Bird”\n“Get Ur Freak On (Remix)”\n“Love Bites”\n“Eat Your Man”\n“Give It To Me”\n“Maneater”\n\nMUSICIANS\nNelly Furtado: lead vocals\nHrag Sanbalian: keys, musical direction\nDaniel Stone: percussion\nWilliam Lamoureux: violin\nBrian West: guitar\nLionel Jarvis: bass\nJim Beanz: vocals\nAnjulie Persaud: vocals\nDJ Lil’ Jaz: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Kara Frame\nAudio Technical Director: Neil Tevault\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Carleigh Strange\nProduction Assistant: Ashley Pointer\nPhotographer: Michael Zamora\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#tinydesk #nprmusic #nellyfurtado", "Nelly Furtado: Tiny Desk Concert", 1296, false, "y-PLr-BPxKU", "https://www.youtube.com/watch?v=y-PLr-BPxKU", "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].mp4", false, 2, ~U[2024-05-24 09:00:51Z]] 14:14:42.731 [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" = ?) [2] 14:14:42.732 [debug] QUERY OK source="media_items" db=0.4ms idle=3.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-03-15 16:00:06Z], 2] 14:14:42.734 [debug] QUERY OK source="media_items" db=1.5ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | March 15, 2024\nWalking into the room shortly before Justin Timberlake took our cramped stage, I overheard someone on his team wondering aloud if this was to be the most densely populated Tiny Desk concert in history — which is to say, the most musicians we've ever fit in a single frame. It's not, but we don't often find a way to cram in this many human beings (15 in all) and this much gear.\n\nTimberlake has never been one to give partial effort, but this is a production befitting the occasion: namely, a set timed to drop concurrently with the release of his new album, Everything I Thought It Was. Eschewing the rootsier feel of its predecessor, 2018's Man of the Woods, the new record is a throwback, an epic and a blowout — and so's this lavish set, which scales the Timberlake experience down to 25 minutes of maximalist celebration and, when the moment calls for it, chiller vibes.\n\nBacked by his band The Tennessee Kids, Timberlake's Tiny Desk debut leans heavily on his early solo catalog, as he kicks it off with two songs from 2002's classic Justified and weaves in three more from 2006's magnificent FutureSex/LoveSounds — including a set-closing \"SexyBack,\" which finds the singer trotting out a megaphone in a truly meme-worthy moment.\n\nBy the way, in case you're wondering, the all-time record for musicians behind the Tiny Desk is a whopping 23, a feat pulled off by the fantastic Mucca Pazza in 2015. But Timberlake and company rival that classic performance's energy — in both cases, the real triumph lies not in the Tetris of it all, but in the way that many people still find ways to move, buoyantly and as one mighty organism.\n\nSET LIST\n\"Señorita\"\n\"Rock Your Body\"\n\"Pusher Love Girl\"\n\"Until The End Of Time\"\n\"Selfish\"\n\"What Goes Around\"\n\"SexyBack\"\n\nMUSICIANS\nJustin Timberlake: lead vocals, guitar, keys\nRaVaughn Brown: vocals\nCamry: vocals\nErin Stevenson: vocals\nKenyon Dixon: vocals\nJustin Gilbert: keys\nMike Reid: drums\nElliot Ives: guitar\nDerrick Ray: bass\nLeon Silva: saxophone\nKevin Williams: trombone, flute\nDontae Winslow: trumpet\nSean Erick: trumpet\nAdam Blackstone: keys, percussion, music direction\nAndrew Hypes: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Neil Tevault\nVideographers: Maia Stern, Kara Frame, Joshua Bryant, Alanté Serene, Elizabeth Gillis\nAudio Engineers: Kwesi Lee, Adam Blackstone, Danny Cheung\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#justintimberlake #nprmusic #tinydesk \n\n0:15 Señorita\n2:20 Rock Your Body\n4:40 Pusher Love Girl\n7:30 Until The End Of Time\n12:44 Selfish\n16:40 What Goes Around\n19:56 SexyBack", "Justin Timberlake: Tiny Desk Concert", "c19f9702-9575-4e04-9c72-a0292223ac51", 1540, false, "cMIJsoaxRjk", "https://www.youtube.com/watch?v=cMIJsoaxRjk", 14, "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].mp4", false, false, false, 2, [], 1, ~U[2024-03-15 16:00:06Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Stephen Thompson | March 15, 2024\nWalking into the room shortly before Justin Timberlake took our cramped stage, I overheard someone on his team wondering aloud if this was to be the most densely populated Tiny Desk concert in history — which is to say, the most musicians we've ever fit in a single frame. It's not, but we don't often find a way to cram in this many human beings (15 in all) and this much gear.\n\nTimberlake has never been one to give partial effort, but this is a production befitting the occasion: namely, a set timed to drop concurrently with the release of his new album, Everything I Thought It Was. Eschewing the rootsier feel of its predecessor, 2018's Man of the Woods, the new record is a throwback, an epic and a blowout — and so's this lavish set, which scales the Timberlake experience down to 25 minutes of maximalist celebration and, when the moment calls for it, chiller vibes.\n\nBacked by his band The Tennessee Kids, Timberlake's Tiny Desk debut leans heavily on his early solo catalog, as he kicks it off with two songs from 2002's classic Justified and weaves in three more from 2006's magnificent FutureSex/LoveSounds — including a set-closing \"SexyBack,\" which finds the singer trotting out a megaphone in a truly meme-worthy moment.\n\nBy the way, in case you're wondering, the all-time record for musicians behind the Tiny Desk is a whopping 23, a feat pulled off by the fantastic Mucca Pazza in 2015. But Timberlake and company rival that classic performance's energy — in both cases, the real triumph lies not in the Tetris of it all, but in the way that many people still find ways to move, buoyantly and as one mighty organism.\n\nSET LIST\n\"Señorita\"\n\"Rock Your Body\"\n\"Pusher Love Girl\"\n\"Until The End Of Time\"\n\"Selfish\"\n\"What Goes Around\"\n\"SexyBack\"\n\nMUSICIANS\nJustin Timberlake: lead vocals, guitar, keys\nRaVaughn Brown: vocals\nCamry: vocals\nErin Stevenson: vocals\nKenyon Dixon: vocals\nJustin Gilbert: keys\nMike Reid: drums\nElliot Ives: guitar\nDerrick Ray: bass\nLeon Silva: saxophone\nKevin Williams: trombone, flute\nDontae Winslow: trumpet\nSean Erick: trumpet\nAdam Blackstone: keys, percussion, music direction\nAndrew Hypes: DJ\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Maia Stern\nAudio Technical Director: Neil Tevault\nVideographers: Maia Stern, Kara Frame, Joshua Bryant, Alanté Serene, Elizabeth Gillis\nAudio Engineers: Kwesi Lee, Adam Blackstone, Danny Cheung\nProduction Assistant: Ashley Pointer\nPhotographer: Estefania Mitre\nTiny Desk Copy Editor: Hazel Cills\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#justintimberlake #nprmusic #tinydesk \n\n0:15 Señorita\n2:20 Rock Your Body\n4:40 Pusher Love Girl\n7:30 Until The End Of Time\n12:44 Selfish\n16:40 What Goes Around\n19:56 SexyBack", "Justin Timberlake: Tiny Desk Concert", 1540, false, "cMIJsoaxRjk", "https://www.youtube.com/watch?v=cMIJsoaxRjk", "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].mp4", false, 2, ~U[2024-03-15 16:00:06Z]] 14:14:42.734 [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" = ?) [2] 14:14:42.735 [debug] QUERY OK source="media_items" db=0.5ms idle=3.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2018-08-08 09:00:03Z], 2] 14:14:42.737 [debug] QUERY OK source="media_items" db=1.6ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Mac Miller play \"Small Worlds\", \"What's the Use? (Feat. Thundercat)\" and \"2009\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nAug. 6, 2018 | Bobby Carter -- There was a shift in Mac Miller's boisterous demeanor as he started the third of his three-song Tiny Desk set. It's the first time he's performed tracks from his new album, Swimming, in front of an audience. On \"2009,\" he rubbed his chin with clinched eyes, looking like a young man who's beginning to crack the code. Backed by a piano loop and a string quartet, he reflected on his journey's peaks and valleys thus far.\n\nI ain't asking why no more\nI know I'll take it if it's mine\nI don't stay inside the lines\nIt ain't 2009 no more\nYeah, I know what's behind that door\n\nWith nearly a decade under his belt at 26 years old, these words ring like an artist twice his age.\n\nWe were introduced to Mac Miller via 2011's XXL Freshman Class, which featured a special crop of MCs such as Kendrick Lamar, Meek Mill and YG, all of whom are now considered in the upper echelon of hip-hop. After his big splash, he's been able to find a groove and consistently release quality rap records, ultimately keeping his name in the conversation with the other young greats. His 2011 album, Blue Slide Park, reached No. 1 on the Billboard 200, the first independently distributed debut album to do so since 1995's Dogg Food by Tha Dogg Pound. These consecutive triumphs amassed plenty of fame, fortune and insurmountable obstacles, causing a stumble here and there. Throughout the years, however, Mac has brushed himself off and put it in the music.\n\nFor this performance, Mac Miller invited frequent collaborator Thundercat, who graced the Tiny Desk last year and will join Mac on tour this fall. Thundercat put on a dazzling shaker routine and played the deep centerpiece bass line on \"What's The Use?\" These Swimming iterations don't veer far away from the recorded versions, but here, his lyrics seem easier to interpret under live instrumentation.\n\nSet List\n\"Small Worlds\"\n\"What's the Use? (Feat. Thundercat)\"\n\"2009\"\n\nMusicians\nMac Miller (Vocals), Thundercat (Bass), Justus West (Guitar), Klynik (Keys), Joe Cleveland (Bass), Kendall Lewis (Drums), Robin Fay-Massie (Violin), YaShauna Swan (2nd Violin), Lelia Walker (Viola), Melanie Hsu (Cello)\n\nCredits\nProducers: Bobby Carter, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Beck Harlan, Khun Minn Ohn; Production Assistants: Catherine Zhang, Téa Mottolese; Photo: Eslah Attar/NPR.\n\n0:00 Introduction\n0:16 Mac Miller Small Worlds\n5:44 Mac Miller feat. Thundercat What's the Use?\n11:42 Mac Miller 2009", "Mac Miller: NPR Music Tiny Desk Concert", "a4ef0b28-50bc-4eea-8057-4918cf100cea", 1029, false, "QrR_gm6RqCo", "https://www.youtube.com/watch?v=QrR_gm6RqCo", 15, "/downloads/Tiny Desk/2018-08-08 Mac Miller: NPR Music Tiny Desk Concert/Mac Miller: NPR Music Tiny Desk Concert [QrR_gm6RqCo].mp4", false, false, false, 2, [], 1, ~U[2018-08-08 09:00:03Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Mac Miller play \"Small Worlds\", \"What's the Use? (Feat. Thundercat)\" and \"2009\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nAug. 6, 2018 | Bobby Carter -- There was a shift in Mac Miller's boisterous demeanor as he started the third of his three-song Tiny Desk set. It's the first time he's performed tracks from his new album, Swimming, in front of an audience. On \"2009,\" he rubbed his chin with clinched eyes, looking like a young man who's beginning to crack the code. Backed by a piano loop and a string quartet, he reflected on his journey's peaks and valleys thus far.\n\nI ain't asking why no more\nI know I'll take it if it's mine\nI don't stay inside the lines\nIt ain't 2009 no more\nYeah, I know what's behind that door\n\nWith nearly a decade under his belt at 26 years old, these words ring like an artist twice his age.\n\nWe were introduced to Mac Miller via 2011's XXL Freshman Class, which featured a special crop of MCs such as Kendrick Lamar, Meek Mill and YG, all of whom are now considered in the upper echelon of hip-hop. After his big splash, he's been able to find a groove and consistently release quality rap records, ultimately keeping his name in the conversation with the other young greats. His 2011 album, Blue Slide Park, reached No. 1 on the Billboard 200, the first independently distributed debut album to do so since 1995's Dogg Food by Tha Dogg Pound. These consecutive triumphs amassed plenty of fame, fortune and insurmountable obstacles, causing a stumble here and there. Throughout the years, however, Mac has brushed himself off and put it in the music.\n\nFor this performance, Mac Miller invited frequent collaborator Thundercat, who graced the Tiny Desk last year and will join Mac on tour this fall. Thundercat put on a dazzling shaker routine and played the deep centerpiece bass line on \"What's The Use?\" These Swimming iterations don't veer far away from the recorded versions, but here, his lyrics seem easier to interpret under live instrumentation.\n\nSet List\n\"Small Worlds\"\n\"What's the Use? (Feat. Thundercat)\"\n\"2009\"\n\nMusicians\nMac Miller (Vocals), Thundercat (Bass), Justus West (Guitar), Klynik (Keys), Joe Cleveland (Bass), Kendall Lewis (Drums), Robin Fay-Massie (Violin), YaShauna Swan (2nd Violin), Lelia Walker (Viola), Melanie Hsu (Cello)\n\nCredits\nProducers: Bobby Carter, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Beck Harlan, Khun Minn Ohn; Production Assistants: Catherine Zhang, Téa Mottolese; Photo: Eslah Attar/NPR.\n\n0:00 Introduction\n0:16 Mac Miller Small Worlds\n5:44 Mac Miller feat. Thundercat What's the Use?\n11:42 Mac Miller 2009", "Mac Miller: NPR Music Tiny Desk Concert", 1029, false, "QrR_gm6RqCo", "https://www.youtube.com/watch?v=QrR_gm6RqCo", "/downloads/Tiny Desk/2018-08-08 Mac Miller: NPR Music Tiny Desk Concert/Mac Miller: NPR Music Tiny Desk Concert [QrR_gm6RqCo].mp4", false, 2, ~U[2018-08-08 09:00:03Z]] 14:14:42.738 [debug] QUERY OK source="sources" db=0.1ms idle=5.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.738 [debug] QUERY OK source="media_items" db=0.2ms idle=3.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-09-22 13:00:00Z], 2] 14:14:42.740 [debug] QUERY OK source="media_items" db=1.1ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sept. 15, 2017 | Lars Gotrich -- Snail Mail's sleepy songs have a way of waking you up. They rumble at a steady pace like a scrappy rock band playing to a small room, but then Lindsey Jordan, who just graduated from high school this past spring, drops a line like, \"So if you look death right in the face, don't thank him / Because there's nothing and there won't ever be.\" You can feel the room nod in solidarity, and you could feel the NPR Music office do the same when Snail Mail performed \"Slug.\"\n\nEncouraged by punks in the Baltimore scene, Jordan started Snail Mail at 15 and released the quietly stunning Habit EP via Priests' in-house label last year. She's quickly found fans in Helium and Ex Hex's Mary Timony (who also happens to be Jordan's guitar teacher) and just went on tour with Waxahatchee and Palehound. Oh, and she once made blueberry pancakes with me on a short-lived NPR cooking show because clearly my kitchen is the path to success.\n\nJordan's joined in this performance by what's become her consistent live band (drummer Ray Brown and bassist Alex Russell), giving weight to both \"Slug\" and the soaring coming-of-age anthem \"Thinning.\" Because we often ask bands to turn down for the office space, she jokes, \"I guess I don't really know what we sound like because we're so loud. Now we're quiet and Ray's using the mallets and my guitar's all the way down — I was like, 'We sound like this?'\"\n\nJordan closes the set solo with a new song, \"Anytime.\" It is, perhaps typically for Snail Mail, slow and sad, but the alternate guitar tuning and Jordan's drawled vocal performance gives this song about a crush an aerial motion, like acrobats sliding down a long sheet of fabric.\n\nHabit is out now via Sister Polygon. Snail Mail goes on tour with Beach Fossils in October.\n\nSet List\n\n\"Slug\"\n\"Thinning\"\n\"Anytime\"\n\nMUSICIANS\n\nLindsey Jordan (electric guitar, vocals); Raymond Brown (drums); Alex Russell (bass)\n\nCREDITS\n\nProducers: Bob Boilen, Niki Walker, Morgan Noelle Smith; Audio Engineers: James Willetts, Josh Rogosin; Videographers: Niki Walker, Tsering Bista; Production Assistant: Marissa Lorusso; Photo: Claire Harbage/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Snail Mail: NPR Music Tiny Desk Concert", "f71777a1-1e90-4a9f-91eb-312545efa383", 899, false, "21ix1OwPoY8", "https://www.youtube.com/watch?v=21ix1OwPoY8", 16, "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].mp4", false, false, false, 2, [], 1, ~U[2017-09-22 13:00:00Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Sept. 15, 2017 | Lars Gotrich -- Snail Mail's sleepy songs have a way of waking you up. They rumble at a steady pace like a scrappy rock band playing to a small room, but then Lindsey Jordan, who just graduated from high school this past spring, drops a line like, \"So if you look death right in the face, don't thank him / Because there's nothing and there won't ever be.\" You can feel the room nod in solidarity, and you could feel the NPR Music office do the same when Snail Mail performed \"Slug.\"\n\nEncouraged by punks in the Baltimore scene, Jordan started Snail Mail at 15 and released the quietly stunning Habit EP via Priests' in-house label last year. She's quickly found fans in Helium and Ex Hex's Mary Timony (who also happens to be Jordan's guitar teacher) and just went on tour with Waxahatchee and Palehound. Oh, and she once made blueberry pancakes with me on a short-lived NPR cooking show because clearly my kitchen is the path to success.\n\nJordan's joined in this performance by what's become her consistent live band (drummer Ray Brown and bassist Alex Russell), giving weight to both \"Slug\" and the soaring coming-of-age anthem \"Thinning.\" Because we often ask bands to turn down for the office space, she jokes, \"I guess I don't really know what we sound like because we're so loud. Now we're quiet and Ray's using the mallets and my guitar's all the way down — I was like, 'We sound like this?'\"\n\nJordan closes the set solo with a new song, \"Anytime.\" It is, perhaps typically for Snail Mail, slow and sad, but the alternate guitar tuning and Jordan's drawled vocal performance gives this song about a crush an aerial motion, like acrobats sliding down a long sheet of fabric.\n\nHabit is out now via Sister Polygon. Snail Mail goes on tour with Beach Fossils in October.\n\nSet List\n\n\"Slug\"\n\"Thinning\"\n\"Anytime\"\n\nMUSICIANS\n\nLindsey Jordan (electric guitar, vocals); Raymond Brown (drums); Alex Russell (bass)\n\nCREDITS\n\nProducers: Bob Boilen, Niki Walker, Morgan Noelle Smith; Audio Engineers: James Willetts, Josh Rogosin; Videographers: Niki Walker, Tsering Bista; Production Assistant: Marissa Lorusso; Photo: Claire Harbage/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Snail Mail: NPR Music Tiny Desk Concert", 899, false, "21ix1OwPoY8", "https://www.youtube.com/watch?v=21ix1OwPoY8", "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].mp4", false, 2, ~U[2017-09-22 13:00:00Z]] 14:14:42.740 [debug] QUERY OK source="sources" db=0.1ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.740 [debug] QUERY OK source="media_items" db=0.2ms idle=3.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-06-26 13:00:03Z], 2] 14:14:42.742 [debug] QUERY OK source="media_items" db=1.1ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Lars | June 19, 2017 — The new album from Tigers Jaw, spin, revels in quiet pleasures, even as its rich production pulls power from the band's open wounds. It's the major-label debut from a band that, at one point, made yelping and earnest pop-punk before finding its way to intricate, and melancholy, pop.\n\nAfter the lineup shake-up three years ago, Ben Walsh and Brianna Collins both step into larger roles as the primary songwriters and singers, here playing songs from spin stripped down to an acoustic guitar and keyboard. It's a strikingly intimate format that illuminates their close harmonies that tangle like garlands, and spare arrangements that open gingerly.\n\nSpin is available now:\niTunes: https://itunes.apple.com/us/album/spin/id1216756437\nAmazon: https://www.amazon.com/spin-Tigers-Jaw/dp/B06XTVJBTY\n\nSet List\n\"Guardian\"\n\"June\"\n\"Window\"\n\nMusicians\nBen Walsh (guitar, vocals); Brianna Collins (keyboard, vocals)\n\nCredits\nProducers: Lars Gotrich, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Beck Harlan; PA: CJ Riculan; Photo: Raquel Zaldivar/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Tigers Jaw: NPR Music Tiny Desk Concert", "4ac548ed-e217-472f-94a1-d7241d5f461f", 662, false, "OX-gMWH9qTQ", "https://www.youtube.com/watch?v=OX-gMWH9qTQ", 17, "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].mp4", false, false, false, 2, [], 1, ~U[2017-06-26 13:00:03Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Lars | June 19, 2017 — The new album from Tigers Jaw, spin, revels in quiet pleasures, even as its rich production pulls power from the band's open wounds. It's the major-label debut from a band that, at one point, made yelping and earnest pop-punk before finding its way to intricate, and melancholy, pop.\n\nAfter the lineup shake-up three years ago, Ben Walsh and Brianna Collins both step into larger roles as the primary songwriters and singers, here playing songs from spin stripped down to an acoustic guitar and keyboard. It's a strikingly intimate format that illuminates their close harmonies that tangle like garlands, and spare arrangements that open gingerly.\n\nSpin is available now:\niTunes: https://itunes.apple.com/us/album/spin/id1216756437\nAmazon: https://www.amazon.com/spin-Tigers-Jaw/dp/B06XTVJBTY\n\nSet List\n\"Guardian\"\n\"June\"\n\"Window\"\n\nMusicians\nBen Walsh (guitar, vocals); Brianna Collins (keyboard, vocals)\n\nCredits\nProducers: Lars Gotrich, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Beck Harlan; PA: CJ Riculan; Photo: Raquel Zaldivar/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Tigers Jaw: NPR Music Tiny Desk Concert", 662, false, "OX-gMWH9qTQ", "https://www.youtube.com/watch?v=OX-gMWH9qTQ", "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].mp4", false, 2, ~U[2017-06-26 13:00:03Z]] 14:14:42.742 [debug] QUERY OK source="sources" db=0.1ms idle=4.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.743 [debug] QUERY OK source="media_items" db=0.2ms idle=3.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-05-01 13:00:02Z], 2] 14:14:42.745 [debug] QUERY OK source="media_items" db=1.2ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Bob Boilen | April 24, 2017 — As the primary booker of the Tiny Desk Concerts, I have this self-imposed rule: No artist can come back for a second visit unless there's something wholly different about what they're doing. The first time alt-J played the Tiny Desk, in 2012, they came as a four-piece; electric guitar, bass, keyboards and drums. They were a pretty new band, their album had been out a few months and they were playing in clubs for a couple hundred people, not much more.\n\nIn the five years since the band visited it has found quite a few new fans. When I heard cuts from the newest album Relaxer a few months ago I flipped and tried to think of a way to bring them back. So I wrote them, saying I'd love to have them again but that it would have to be wholly, out-of-the-box different. I told them I'd hire a brass band, an African kora player if need be, a string section... They took up the challenge. They told me to find a cellist and two violinists.\n\nI wrote to my friend Carol Anne Bosco, a cellist, who turned out to be a huge fan of the band and helped find two violinists for the performance. About four days before the performance the band sent the string parts, written by their friend Will Gardner.\n\nOn Monday morning, the English band met the American string players and they all gathered behind my desk. As they worked their way through a first pass at \"Three Worn Words,\" I noticed them and relieved — alt-J had actually never heard the string arrangements, this was the first time. They sounded beautiful. By noon, NPR employees and friends gathered around my desk to witness this astonishing concert from alt-J, including two new songs and two old favorites. Magic.\n\nRelaxer is available for pre-order now:\niTunes: https://itunes.apple.com/us/album/relaxer/id1209198388\nAmazon: https://www.amazon.com/Relaxer-Alt-J/dp/B06XH2QX1D\n\nSet List\n\"3WW\"\n\"In Cold Blood\"\n\"Warm Foothills\"\n\"Taro\"\n\nMusicians\nJoe Newman (guitar, vocals); Thom Green (drums); Gus Unger-Hamilton (keys, vocals)\n\nString Arrangements\nWill Gardner\n\nGuest Musicians\nCarol Anne Bosco (cello); Kristin Bakkegard (violin); Paul Bagley (violin)\n\nCredits\nProducers: Bob Boilen, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Morgan Noelle Smith, Bronson Arcuri; Production Assistant: A Noah Harrison; Photo: Marian Carrasquero/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "alt-J: Tiny Desk Concert", "498bff2b-687e-42eb-8ba1-1db2588c6432", 1025, false, "8zHdLF3-coA", "https://www.youtube.com/watch?v=8zHdLF3-coA", 18, "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].mp4", false, false, false, 2, [], 1, ~U[2017-05-01 13:00:02Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Bob Boilen | April 24, 2017 — As the primary booker of the Tiny Desk Concerts, I have this self-imposed rule: No artist can come back for a second visit unless there's something wholly different about what they're doing. The first time alt-J played the Tiny Desk, in 2012, they came as a four-piece; electric guitar, bass, keyboards and drums. They were a pretty new band, their album had been out a few months and they were playing in clubs for a couple hundred people, not much more.\n\nIn the five years since the band visited it has found quite a few new fans. When I heard cuts from the newest album Relaxer a few months ago I flipped and tried to think of a way to bring them back. So I wrote them, saying I'd love to have them again but that it would have to be wholly, out-of-the-box different. I told them I'd hire a brass band, an African kora player if need be, a string section... They took up the challenge. They told me to find a cellist and two violinists.\n\nI wrote to my friend Carol Anne Bosco, a cellist, who turned out to be a huge fan of the band and helped find two violinists for the performance. About four days before the performance the band sent the string parts, written by their friend Will Gardner.\n\nOn Monday morning, the English band met the American string players and they all gathered behind my desk. As they worked their way through a first pass at \"Three Worn Words,\" I noticed them and relieved — alt-J had actually never heard the string arrangements, this was the first time. They sounded beautiful. By noon, NPR employees and friends gathered around my desk to witness this astonishing concert from alt-J, including two new songs and two old favorites. Magic.\n\nRelaxer is available for pre-order now:\niTunes: https://itunes.apple.com/us/album/relaxer/id1209198388\nAmazon: https://www.amazon.com/Relaxer-Alt-J/dp/B06XH2QX1D\n\nSet List\n\"3WW\"\n\"In Cold Blood\"\n\"Warm Foothills\"\n\"Taro\"\n\nMusicians\nJoe Newman (guitar, vocals); Thom Green (drums); Gus Unger-Hamilton (keys, vocals)\n\nString Arrangements\nWill Gardner\n\nGuest Musicians\nCarol Anne Bosco (cello); Kristin Bakkegard (violin); Paul Bagley (violin)\n\nCredits\nProducers: Bob Boilen, Niki Walker; Audio Engineer: Josh Rogosin; Videographers: Niki Walker, Morgan Noelle Smith, Bronson Arcuri; Production Assistant: A Noah Harrison; Photo: Marian Carrasquero/NPR.\n\nFor more Tiny Desk concerts, subscribe to our podcast: http://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "alt-J: Tiny Desk Concert", 1025, false, "8zHdLF3-coA", "https://www.youtube.com/watch?v=8zHdLF3-coA", "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].mp4", false, 2, ~U[2017-05-01 13:00:02Z]] 14:14:42.745 [debug] QUERY OK source="sources" db=0.6ms 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] 14:14:42.746 [debug] QUERY OK source="media_items" db=0.3ms idle=3.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-12-14 14:00:01Z], 2] 14:14:42.748 [debug] QUERY OK source="media_items" db=1.4ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Tyler, The Creator play \"Boredom\", \"See You Again\" and \"Glitter\"at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nContent advisory: The video above may contain language that is offensive to some.\n\nDec. 11, 2017 | Sidney Madden -- Tyler, The Creator's Tiny Desk performance was a first for many reasons. It was the Los Angeles rapper's first time performing at our offices, but moreover, it was the Tiny Desk's first nighttime performance, a special request from Tyler and his team in order to professionally light the \"stage\" themselves. Members of Tyler's lighting crew came to the office a day before to set it up, eventually bathing him and his band in shades of fuchsia, orange and blue — one for each song — during the early evening show.\n\nFlower Boy, Tyler's latest album, is much like this Tiny Desk performance; a surprising departure from the expected. Four albums in, he has matured as a producer, rapper and human being. Often equated to hip-hop's class clown, the 26-year-old peels back his own mask of immaturity to reveal a young adult grappling with anxiety, fear and uncertainty of self.\n\nAfter he was done, Tyler did something of a modified mic-drop, throwing his tambourine in celebration of what he and his band had accomplished. Always one to stay casually connected with his fans, Tyler made time — nearly an hour after the performance was done —- to pose for photos, sign merch and crack jokes with (and on) everyone around him.\n\nSet List\n\"Boredom\"\n\"See You Again\"\n\"Glitter\"\n\nMUSICIANS\nTyler Okonma (vocals, keys), Jaret Landon (MD/Keys) Dré Pinckney (Bass), Dalton Hodo (Drums), Kaye Fox (background vocals), Kiandra Richardson (background vocals)\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Lighting: Max McDougall; Videographers: Morgan Noelle Smith, Maia Stern, Beck Harlan, Alyse Young; Production Assistants: Paul Wichmann, Salvatore Maicki; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Tyler, The Creator: NPR Music Tiny Desk Concert", "f2231604-743e-4361-b99a-668020aae676", 1484, false, "N1w-hDiJ4dM", "https://www.youtube.com/watch?v=N1w-hDiJ4dM", 19, "/downloads/Tiny Desk/2017-12-14 Tyler, The Creator: NPR Music Tiny Desk Concert/Tyler, The Creator: NPR Music Tiny Desk Concert [N1w-hDiJ4dM].mp4", false, false, false, 2, [], 1, ~U[2017-12-14 14:00:01Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Tyler, The Creator play \"Boredom\", \"See You Again\" and \"Glitter\"at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nContent advisory: The video above may contain language that is offensive to some.\n\nDec. 11, 2017 | Sidney Madden -- Tyler, The Creator's Tiny Desk performance was a first for many reasons. It was the Los Angeles rapper's first time performing at our offices, but moreover, it was the Tiny Desk's first nighttime performance, a special request from Tyler and his team in order to professionally light the \"stage\" themselves. Members of Tyler's lighting crew came to the office a day before to set it up, eventually bathing him and his band in shades of fuchsia, orange and blue — one for each song — during the early evening show.\n\nFlower Boy, Tyler's latest album, is much like this Tiny Desk performance; a surprising departure from the expected. Four albums in, he has matured as a producer, rapper and human being. Often equated to hip-hop's class clown, the 26-year-old peels back his own mask of immaturity to reveal a young adult grappling with anxiety, fear and uncertainty of self.\n\nAfter he was done, Tyler did something of a modified mic-drop, throwing his tambourine in celebration of what he and his band had accomplished. Always one to stay casually connected with his fans, Tyler made time — nearly an hour after the performance was done —- to pose for photos, sign merch and crack jokes with (and on) everyone around him.\n\nSet List\n\"Boredom\"\n\"See You Again\"\n\"Glitter\"\n\nMUSICIANS\nTyler Okonma (vocals, keys), Jaret Landon (MD/Keys) Dré Pinckney (Bass), Dalton Hodo (Drums), Kaye Fox (background vocals), Kiandra Richardson (background vocals)\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Lighting: Max McDougall; Videographers: Morgan Noelle Smith, Maia Stern, Beck Harlan, Alyse Young; Production Assistants: Paul Wichmann, Salvatore Maicki; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Tyler, The Creator: NPR Music Tiny Desk Concert", 1484, false, "N1w-hDiJ4dM", "https://www.youtube.com/watch?v=N1w-hDiJ4dM", "/downloads/Tiny Desk/2017-12-14 Tyler, The Creator: NPR Music Tiny Desk Concert/Tyler, The Creator: NPR Music Tiny Desk Concert [N1w-hDiJ4dM].mp4", false, 2, ~U[2017-12-14 14:00:01Z]] 14:14:42.748 [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" = ?) [2] 14:14:42.749 [debug] QUERY OK source="media_items" db=0.3ms idle=4.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2017-12-04 14:00:00Z], 2] 14:14:42.751 [debug] QUERY OK source="media_items" db=1.1ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Nov. 27, 2017 | Stephen Thompson --Phoebe Bridgers' songs come laden with sly, finely detailed observations about unsuccessful flirtations with hypnotherapy, unsettling conversations about Jeffrey Dahmer, and everything in between. Her phrasing is impeccable — warm, cool, conversational, gently slurred — but her songs also swim in the self-aware obsessions and messy meanderings of an unquiet mind.\n\nJoined by Ethan Gruska and Rob Moose, Bridgers popped up at the Tiny Desk a couple weeks after the release of her full-length debut, Stranger In The Alps. Together, they celebrated the occasion with languid renditions of three of the album's best songs: the sad and seductive \"Demi Moore,\" a drastically muted \"Motion Sickness\" and a piano-driven take on Bridgers' first-ever single, \"Killer.\"\n\nSet List\n\n\"Demi Moore\"\n\n\"Motion Sickness\"\n\n\"Killer\"\n\nMUSICIANS\n\nPhoebe Bridgers (vocals and guitar); Ethan Gruska (piano); Rob Moose (violin)\n\nCREDITS\n\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, Alyse Young; Editor: Bronson Arcuri; Production Assistant: Niki Walker; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Phoebe Bridgers: NPR Music Tiny Desk Concert", "19fa1343-a9e9-4dae-aa2f-ee14dc4ddc67", 750, false, "-hLJNZSIwP8", "https://www.youtube.com/watch?v=-hLJNZSIwP8", 20, "/downloads/Tiny Desk/2017-12-04 Phoebe Bridgers: NPR Music Tiny Desk Concert/Phoebe Bridgers: NPR Music Tiny Desk Concert [-hLJNZSIwP8].mp4", false, false, false, 2, [], 1, ~U[2017-12-04 14:00:00Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Nov. 27, 2017 | Stephen Thompson --Phoebe Bridgers' songs come laden with sly, finely detailed observations about unsuccessful flirtations with hypnotherapy, unsettling conversations about Jeffrey Dahmer, and everything in between. Her phrasing is impeccable — warm, cool, conversational, gently slurred — but her songs also swim in the self-aware obsessions and messy meanderings of an unquiet mind.\n\nJoined by Ethan Gruska and Rob Moose, Bridgers popped up at the Tiny Desk a couple weeks after the release of her full-length debut, Stranger In The Alps. Together, they celebrated the occasion with languid renditions of three of the album's best songs: the sad and seductive \"Demi Moore,\" a drastically muted \"Motion Sickness\" and a piano-driven take on Bridgers' first-ever single, \"Killer.\"\n\nSet List\n\n\"Demi Moore\"\n\n\"Motion Sickness\"\n\n\"Killer\"\n\nMUSICIANS\n\nPhoebe Bridgers (vocals and guitar); Ethan Gruska (piano); Rob Moose (violin)\n\nCREDITS\n\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, Alyse Young; Editor: Bronson Arcuri; Production Assistant: Niki Walker; Photo: Jennifer Kerrigan/NPR\n\nFor more Tiny Desk concerts, subscribe to our podcast.", "Phoebe Bridgers: NPR Music Tiny Desk Concert", 750, false, "-hLJNZSIwP8", "https://www.youtube.com/watch?v=-hLJNZSIwP8", "/downloads/Tiny Desk/2017-12-04 Phoebe Bridgers: NPR Music Tiny Desk Concert/Phoebe Bridgers: NPR Music Tiny Desk Concert [-hLJNZSIwP8].mp4", false, 2, ~U[2017-12-04 14:00:00Z]] 14:14:42.751 [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] 14:14:42.751 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-08-15 16:00:08Z], 2] 14:14:42.757 [debug] QUERY OK source="media_items" db=5.0ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | August 15, 2023\nThe Tiny Desk has hosted plenty of major pop, rock and hip-hop stars in its 15-plus years, but you'd be hard-pressed to find one more agreeable or self-effacing than Austin Richard Post. Whether lamenting the state of his singing voice, joking about his nerves or sitting slack-jawed in awe of the fantastic band his people had assembled for this show, Post had the bearing of a lottery winner who wouldn't even give himself credit for buying a ticket.\n\nBefore, during and after the show, Post Malone was a joy to have around. But he also just happened to bring a few of the biggest pop hits of the 21st century: Set-opener \"Sunflower,\" for example, has been certified eighteen-times platinum by the RIAA since its release in 2018 — that's an all-time record — while the 2017 single \"I Fall Apart\" and 2019's \"Circles\" lag behind at a mere ten-times platinum apiece. \"Enough Is Enough,\" which closes this set, enjoys no such designation, but give it time: A track from Post Malone's new album Austin, it's only been out for a few weeks.\n\nSo enjoy this set for what it is: one of the world's biggest stars, performing a few of the world's biggest songs, each set to a luminous arrangement. Post Malone himself seems surprised by how great this Tiny Desk concert sounds, and that's not just the humility talking.\n\nSET LIST\n\"Sunflower\"\n\"I Fall Apart\"\n\"Circles\"\n\"Enough Is Enough\"\n\nMUSICIANS\nAustin Post: lead vocalist, guitar \nHannah Juliano: vocalist\nElliot Aguilar: vocalist\nChauncey Matthews: vocalist\nKola Rail: vocalist\nDestin Johnson: drums\nEmily Rosenfield: guitar \nBobby Wooten: bass \nLouis Bell: piano\nKevin Kuh: strings \nFrancesca Dardani: strings \nKiku Enomoto: strings\nKirin McElwain: strings\n\nTINY DESK TEAM\nProducers: Bobby Carter, Suraya Mohamed\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Zayrha Rodriguez, Sofia Seidel\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Catie Dull\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #postmalone", "Post Malone: Tiny Desk Concert", "81587378-b40a-4c02-8a67-072a895a532a", 1088, false, "oCcks-fwq2c", "https://www.youtube.com/watch?v=oCcks-fwq2c", 21, "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].mp4", false, false, false, 2, [], 1, ~U[2023-08-15 16:00:08Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Stephen Thompson | August 15, 2023\nThe Tiny Desk has hosted plenty of major pop, rock and hip-hop stars in its 15-plus years, but you'd be hard-pressed to find one more agreeable or self-effacing than Austin Richard Post. Whether lamenting the state of his singing voice, joking about his nerves or sitting slack-jawed in awe of the fantastic band his people had assembled for this show, Post had the bearing of a lottery winner who wouldn't even give himself credit for buying a ticket.\n\nBefore, during and after the show, Post Malone was a joy to have around. But he also just happened to bring a few of the biggest pop hits of the 21st century: Set-opener \"Sunflower,\" for example, has been certified eighteen-times platinum by the RIAA since its release in 2018 — that's an all-time record — while the 2017 single \"I Fall Apart\" and 2019's \"Circles\" lag behind at a mere ten-times platinum apiece. \"Enough Is Enough,\" which closes this set, enjoys no such designation, but give it time: A track from Post Malone's new album Austin, it's only been out for a few weeks.\n\nSo enjoy this set for what it is: one of the world's biggest stars, performing a few of the world's biggest songs, each set to a luminous arrangement. Post Malone himself seems surprised by how great this Tiny Desk concert sounds, and that's not just the humility talking.\n\nSET LIST\n\"Sunflower\"\n\"I Fall Apart\"\n\"Circles\"\n\"Enough Is Enough\"\n\nMUSICIANS\nAustin Post: lead vocalist, guitar \nHannah Juliano: vocalist\nElliot Aguilar: vocalist\nChauncey Matthews: vocalist\nKola Rail: vocalist\nDestin Johnson: drums\nEmily Rosenfield: guitar \nBobby Wooten: bass \nLouis Bell: piano\nKevin Kuh: strings \nFrancesca Dardani: strings \nKiku Enomoto: strings\nKirin McElwain: strings\n\nTINY DESK TEAM\nProducers: Bobby Carter, Suraya Mohamed\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Kara Frame, Maia Stern, Joshua Bryant, Zayrha Rodriguez, Sofia Seidel\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Catie Dull\nTiny Desk Team: Hazel Cills\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #postmalone", "Post Malone: Tiny Desk Concert", 1088, false, "oCcks-fwq2c", "https://www.youtube.com/watch?v=oCcks-fwq2c", "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].mp4", false, 2, ~U[2023-08-15 16:00:08Z]] 14:14:42.757 [debug] QUERY OK source="sources" db=0.1ms idle=8.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.758 [debug] QUERY OK source="media_items" db=0.2ms idle=7.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-04-10 16:00:10Z], 2] 14:14:42.760 [debug] QUERY OK source="media_items" db=1.3ms idle=6.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Teresa Xie | April 10, 2023\nWhen Fred again.. first proposed a Tiny Desk concert, it wasn't immediately clear how he was going to make it work — not because he lacked creativity, but because translating purely electronic music at the Desk is a daunting task for anyone. How would an artist, whose performances take the form of DJ sets in front of massive audiences, curate an intimate and unique experience? But what the British songwriter and producer came up with is a reminder of what a Tiny Desk is at its best: an opportunity for artists to challenge themselves in such a way that it almost feels like they're making new music, all while sticking to what feels true to them. For Fred again.. that meant re-learning the marimba, playing the vibraphone, singing at the piano and looping sounds and beats — all at the same time. He began his set with \"Kyle (i found you),\" recreating the song's melody on the marimba while clips of featured poet Kyle \"Guante\" Tran Myhre reciting the work \"Love In The Time of Undeath\" appeared on-screen. Sitting at the piano, he faded the remnants of \"Kyle (i found you)\" into \"Roze (forgive),\" which features Fred again.. triggering vocals sampled from the artist I am Roze, whose powerful facial expressions were magnified on a screen.In a surprising pivot, the primary vocals on the following track, \"Me (heavy),\" came from Fred again.. himself, with no manipulation, creating a vulnerable sense of intimacy in the space. A flurry of looped piano keys marked the transition to \"Delilah (pull me out of this),\" with guest vocals pulled from pop singer Delilah Montagu's 2021 track \"Lost Keys.\" By his set's end, concluding with \"Faisal (envelops me),\" Fred again.. was back at the piano finally resting after moving seamlessly through a jam-packed Tiny Desk.\n\nSET LIST\n\"Kyle (i found you)\"\n\"Roze (forgive)\"\n\"Adam (interlude)\"\n\"Me (heavy)\"\n\"Berwyn (interlude)\"\n\"Delilah (pull me out of this)\"\n\"Faisal (envelops me)\"\n\nMUSICIANS\nFred again..: vocals, piano, vibraphone, marimba, electronics\nSpecial thanks to: Guante, I Am Roze (they/them), Aminé, Delilah Montagu, Berwyn, Faisal, Lucy Hickling, Gareth Nunns, Jamie Tinsley, Tony Friend, Tobias Miorin\u00A0\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Sofia Seidel\u00A0\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Sofia Seidel, Kara Frame, Joshua Bryant\u00A0\nAudio Assistant: Kwesi Lee\nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Maia Stern, Marissa Lorusso, Hazel Cills, Ashley Pointer, Pilar Galván, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #fredagain", "Fred again..: Tiny Desk Concert", "ea3f7d05-8fc4-4c2b-8eb4-ed45cc11e723", 1604, false, "4iQmPv_dTI0", "https://www.youtube.com/watch?v=4iQmPv_dTI0", 22, "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].mp4", false, false, false, 2, [], 1, ~U[2023-04-10 16:00:10Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Teresa Xie | April 10, 2023\nWhen Fred again.. first proposed a Tiny Desk concert, it wasn't immediately clear how he was going to make it work — not because he lacked creativity, but because translating purely electronic music at the Desk is a daunting task for anyone. How would an artist, whose performances take the form of DJ sets in front of massive audiences, curate an intimate and unique experience? But what the British songwriter and producer came up with is a reminder of what a Tiny Desk is at its best: an opportunity for artists to challenge themselves in such a way that it almost feels like they're making new music, all while sticking to what feels true to them. For Fred again.. that meant re-learning the marimba, playing the vibraphone, singing at the piano and looping sounds and beats — all at the same time. He began his set with \"Kyle (i found you),\" recreating the song's melody on the marimba while clips of featured poet Kyle \"Guante\" Tran Myhre reciting the work \"Love In The Time of Undeath\" appeared on-screen. Sitting at the piano, he faded the remnants of \"Kyle (i found you)\" into \"Roze (forgive),\" which features Fred again.. triggering vocals sampled from the artist I am Roze, whose powerful facial expressions were magnified on a screen.In a surprising pivot, the primary vocals on the following track, \"Me (heavy),\" came from Fred again.. himself, with no manipulation, creating a vulnerable sense of intimacy in the space. A flurry of looped piano keys marked the transition to \"Delilah (pull me out of this),\" with guest vocals pulled from pop singer Delilah Montagu's 2021 track \"Lost Keys.\" By his set's end, concluding with \"Faisal (envelops me),\" Fred again.. was back at the piano finally resting after moving seamlessly through a jam-packed Tiny Desk.\n\nSET LIST\n\"Kyle (i found you)\"\n\"Roze (forgive)\"\n\"Adam (interlude)\"\n\"Me (heavy)\"\n\"Berwyn (interlude)\"\n\"Delilah (pull me out of this)\"\n\"Faisal (envelops me)\"\n\nMUSICIANS\nFred again..: vocals, piano, vibraphone, marimba, electronics\nSpecial thanks to: Guante, I Am Roze (they/them), Aminé, Delilah Montagu, Berwyn, Faisal, Lucy Hickling, Gareth Nunns, Jamie Tinsley, Tony Friend, Tobias Miorin\u00A0\n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector/Editor: Sofia Seidel\u00A0\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nVideographers: Sofia Seidel, Kara Frame, Joshua Bryant\u00A0\nAudio Assistant: Kwesi Lee\nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Maia Stern, Marissa Lorusso, Hazel Cills, Ashley Pointer, Pilar Galván, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #fredagain", "Fred again..: Tiny Desk Concert", 1604, false, "4iQmPv_dTI0", "https://www.youtube.com/watch?v=4iQmPv_dTI0", "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].mp4", false, 2, ~U[2023-04-10 16:00:10Z]] 14:14:42.760 [debug] QUERY OK source="sources" db=0.2ms idle=8.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.761 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-02-13 10:00:06Z], 2] 14:14:42.762 [debug] QUERY OK source="media_items" db=1.3ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Bobby Carter | February 13, 2023\n“I know producers don’t always get to do stuff like this,” Kenny Beats said as he wrapped up his Tiny Desk concert. “I’m very lucky I get to do a lot of stuff people with my job title don’t get to do.” His keen sense of gratitude was palpable and radiated throughout the space. Before the music started, he rushed over to explore the shelves behind the Desk, then added some of his trinkets. He then insisted the music had to be perfect as his dad would be listening. Kenny’s debut solo album, LOUIE, dedicated to his father, takes us on a journey through often inexplicable emotions regarding our parents. Kenny enlisted familiar voices to convey the feelings, sparingly incorporating their vocals over soulful beats. \n\nHe invited some of those vocalists, along with top-tier musicians including Nick Movshon and Leon Michels, to play something tailor-made for the Tiny Desk. For “Still,” rapper JPEGMAFIA finishes his thought through bars that we don’t hear on the album. His rambunctious energy juxtaposed with the band’s laid-back melodies is a bizarre sight, but it just works. When Remi Wolf sings, her powerful voice naturally cuts above everything else, and she stole the show on “Last Words.” Newcomer Nami’s falsetto brightened all of the harmonies, and he stepped up to close out with “Rotten.” \n\nKenny Beats is one of the most sought after producers in music and is most certainly the go-to for marrying different genres. Producer-hosted albums are famously frowned upon in hip-hop due to their lack of direction, but LOUIE is clearly saying something. This Tiny Desk feels like a part of that statement.\n\nSET LIST\n“Still”\n“Last Words” \n“Rotten” \n\nMUSICIANS\nKenny Beats: artist, drummer \nLeon Michels: keys, saxophone \nNick Movshon: bass \nNick Lee: horns \nAlexander Benjamin Goldblatt: guitar \nJacob Reske: effects, vocals\nJPEGMAFIA: vocals \nNami: vocals \nRemi Wolf: vocals \n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector: Kara Frame \nAudio Engineer: Josh Rogosin \nCreative Producer: Bob Boilen \nVideographers: Kara Frame, Joshua Bryant, Maia Stern, Sofia Seidel\nEditor: Sofia Seidel\nAudio Assistant: Josephine Nyounai \nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Ashley Pointer\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#kennybeats #nprmusic #tinydesk", "Kenny Beats: Tiny Desk Concert", "41f0d057-abf9-430a-9ab8-f237fda5b3f3", 663, false, "BPRVzA67Dbs", "https://www.youtube.com/watch?v=BPRVzA67Dbs", 23, "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].mp4", false, false, false, 2, [], 1, ~U[2023-02-13 10:00:06Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Bobby Carter | February 13, 2023\n“I know producers don’t always get to do stuff like this,” Kenny Beats said as he wrapped up his Tiny Desk concert. “I’m very lucky I get to do a lot of stuff people with my job title don’t get to do.” His keen sense of gratitude was palpable and radiated throughout the space. Before the music started, he rushed over to explore the shelves behind the Desk, then added some of his trinkets. He then insisted the music had to be perfect as his dad would be listening. Kenny’s debut solo album, LOUIE, dedicated to his father, takes us on a journey through often inexplicable emotions regarding our parents. Kenny enlisted familiar voices to convey the feelings, sparingly incorporating their vocals over soulful beats. \n\nHe invited some of those vocalists, along with top-tier musicians including Nick Movshon and Leon Michels, to play something tailor-made for the Tiny Desk. For “Still,” rapper JPEGMAFIA finishes his thought through bars that we don’t hear on the album. His rambunctious energy juxtaposed with the band’s laid-back melodies is a bizarre sight, but it just works. When Remi Wolf sings, her powerful voice naturally cuts above everything else, and she stole the show on “Last Words.” Newcomer Nami’s falsetto brightened all of the harmonies, and he stepped up to close out with “Rotten.” \n\nKenny Beats is one of the most sought after producers in music and is most certainly the go-to for marrying different genres. Producer-hosted albums are famously frowned upon in hip-hop due to their lack of direction, but LOUIE is clearly saying something. This Tiny Desk feels like a part of that statement.\n\nSET LIST\n“Still”\n“Last Words” \n“Rotten” \n\nMUSICIANS\nKenny Beats: artist, drummer \nLeon Michels: keys, saxophone \nNick Movshon: bass \nNick Lee: horns \nAlexander Benjamin Goldblatt: guitar \nJacob Reske: effects, vocals\nJPEGMAFIA: vocals \nNami: vocals \nRemi Wolf: vocals \n\nTINY DESK TEAM\nProducer: Bobby Carter\nDirector: Kara Frame \nAudio Engineer: Josh Rogosin \nCreative Producer: Bob Boilen \nVideographers: Kara Frame, Joshua Bryant, Maia Stern, Sofia Seidel\nEditor: Sofia Seidel\nAudio Assistant: Josephine Nyounai \nProduction Assistant: Jill Britton\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Ashley Pointer\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#kennybeats #nprmusic #tinydesk", "Kenny Beats: Tiny Desk Concert", 663, false, "BPRVzA67Dbs", "https://www.youtube.com/watch?v=BPRVzA67Dbs", "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].mp4", false, 2, ~U[2023-02-13 10:00:06Z]] 14:14:42.763 [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] 14:14:42.763 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2022-12-05 10:00:02Z], 2] 14:14:42.765 [debug] QUERY OK source="media_items" db=1.4ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Stephen Thompson | December 5, 2022\nBelgian dance-pop superstar Stromae puts on one of the best live shows in the world — here’s a two-song set from 2015, presented as evidence — but his stage presentation is tough to strip down. To say nothing of the light show, Stromae’s throbbingly impeccable arrangements involve the extensive use of pre-recorded tracks, all of which are frowned upon at the Tiny Desk. So, given a simple three-word assignment (“no preset sounds”), his team set about re-creating Stromae’s music so that it could be performed in real time.\n\nThis involved more gleaming tech than we could have ever imagined when we launched Tiny Desk concerts nearly 15 years ago — veritable banks of laptops, mixers and synthesizers, with multiple producers working out of frame — but damned if every sound in this set wasn’t crafted and played live on the spot. Stromae and his team had to come a day early for hours of setup and rehearsals, and even the band’s clothing was handpicked from the singer’s fashion line, but what they produced felt loose-limbed and organic in the spirit of the series.\n\nIt helps that, as heard on this year’s outstanding Multitude, Stromae’s songs draw from a deep well of lived emotion. Backed by three members of the Bulgarian women’s choir Yasna Voices, Stromae kicked off his set with “L’enfer,” a wrenching acknowledgement of suicidal thoughts. The song’s chorus, translated to English, reads, “Sometimes I’ve had suicidal thoughts and I’m not proud of it / Sometimes you feel it’d be the only way to silence them / All these thoughts putting me through hell.”\n\nFrom there, Stromae’s song selections conveyed lighter moods, but even his most danceable tracks contain undercurrents of darkness and conflict: “Santé” is a toast to those who can’t celebrate, “Alors on danse” (from 2009’s Cheese) embraces dancing as a way to drown out life’s hardships and “Mon amour” attempts to reassure a lover against a backdrop of infidelity and dysfunction. On its own, each track is a heady cocktail of painstaking craft and hard-won joy. Taken together, they form a portrait of a world-class showman at the height of his powers.\n\nSET LIST\n“L’enfer”\n“Santé”\n“Alors on danse”\n“Mon amour”\n\nMUSICIANS\nStromae: vocals\nManoli Avgoustinatos: keyboards, charango, vocals\nYoshi Masuda: keyboard, vocals\nSimon LeSaint: drums, vocals\nFlorian Rossi: keyboard, vocals\n\nYasna Voices NY Bulgarian Women’s Choir, directed by Vlada Tomova\nMimi Berkova\nLarkin Grimm\nVlada Tomova\n\nTINY DESK TEAM\nProducer: Bob Boilen\nDirector/Editor: Maia Stern\nAudio Engineer: Josh Rogosin \nSeries Producer: Bobby Carter\nVideographers: Joshua Bryant, Maia Stern, Pierre Kattar, Sofia Seidel\nProduction Assistants: Jill Britton, Alanté Serene\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Kara Frame, Ashley Pointer, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#stromae #tinydesk #nprmusic", "Stromae: Tiny Desk Concert", "bd6b6409-5ee9-4280-a4d2-eb56c8d0557d", 975, false, "6dkDepLX0rk", "https://www.youtube.com/watch?v=6dkDepLX0rk", 24, "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].mp4", false, false, false, 2, [], 1, ~U[2022-12-05 10:00:02Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Stephen Thompson | December 5, 2022\nBelgian dance-pop superstar Stromae puts on one of the best live shows in the world — here’s a two-song set from 2015, presented as evidence — but his stage presentation is tough to strip down. To say nothing of the light show, Stromae’s throbbingly impeccable arrangements involve the extensive use of pre-recorded tracks, all of which are frowned upon at the Tiny Desk. So, given a simple three-word assignment (“no preset sounds”), his team set about re-creating Stromae’s music so that it could be performed in real time.\n\nThis involved more gleaming tech than we could have ever imagined when we launched Tiny Desk concerts nearly 15 years ago — veritable banks of laptops, mixers and synthesizers, with multiple producers working out of frame — but damned if every sound in this set wasn’t crafted and played live on the spot. Stromae and his team had to come a day early for hours of setup and rehearsals, and even the band’s clothing was handpicked from the singer’s fashion line, but what they produced felt loose-limbed and organic in the spirit of the series.\n\nIt helps that, as heard on this year’s outstanding Multitude, Stromae’s songs draw from a deep well of lived emotion. Backed by three members of the Bulgarian women’s choir Yasna Voices, Stromae kicked off his set with “L’enfer,” a wrenching acknowledgement of suicidal thoughts. The song’s chorus, translated to English, reads, “Sometimes I’ve had suicidal thoughts and I’m not proud of it / Sometimes you feel it’d be the only way to silence them / All these thoughts putting me through hell.”\n\nFrom there, Stromae’s song selections conveyed lighter moods, but even his most danceable tracks contain undercurrents of darkness and conflict: “Santé” is a toast to those who can’t celebrate, “Alors on danse” (from 2009’s Cheese) embraces dancing as a way to drown out life’s hardships and “Mon amour” attempts to reassure a lover against a backdrop of infidelity and dysfunction. On its own, each track is a heady cocktail of painstaking craft and hard-won joy. Taken together, they form a portrait of a world-class showman at the height of his powers.\n\nSET LIST\n“L’enfer”\n“Santé”\n“Alors on danse”\n“Mon amour”\n\nMUSICIANS\nStromae: vocals\nManoli Avgoustinatos: keyboards, charango, vocals\nYoshi Masuda: keyboard, vocals\nSimon LeSaint: drums, vocals\nFlorian Rossi: keyboard, vocals\n\nYasna Voices NY Bulgarian Women’s Choir, directed by Vlada Tomova\nMimi Berkova\nLarkin Grimm\nVlada Tomova\n\nTINY DESK TEAM\nProducer: Bob Boilen\nDirector/Editor: Maia Stern\nAudio Engineer: Josh Rogosin \nSeries Producer: Bobby Carter\nVideographers: Joshua Bryant, Maia Stern, Pierre Kattar, Sofia Seidel\nProduction Assistants: Jill Britton, Alanté Serene\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Kara Frame, Ashley Pointer, Teresa Xie\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#stromae #tinydesk #nprmusic", "Stromae: Tiny Desk Concert", 975, false, "6dkDepLX0rk", "https://www.youtube.com/watch?v=6dkDepLX0rk", "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].mp4", false, 2, ~U[2022-12-05 10:00:02Z]] 14:14:42.766 [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" = ?) [2] 14:14:42.766 [debug] QUERY OK source="media_items" db=0.2ms idle=3.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2022-06-29 11:00:26Z], 2] 14:14:42.768 [debug] QUERY OK source="media_items" db=1.5ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This year, NPR Music is celebrating Black Music Month with an array of brand new Tiny Desk concerts — both from home and from behind our beloved Desk. Together, these artists represent the past, present and future of Black music. This month of carefully curated shows is a celebration of Black artists expressing themselves in ways we've never seen before, and of the Tiny Desk's unique way of showcasing that talent.\n\nAshley Pointer | June 29, 2022\nAfter taking a sip of his tea towards the end of his six-song set, Denzel Curry turns to his band and exclaims: “We lowkey breezed through this b****! That’s great for two rehearsals!” \n\nFrom the moment Curry and his people stepped foot into NPR headquarters to record their Tiny Desk concert, the vibes were right. With a 10-piece configuration — consisting of drums, bass, keys, guitar, horns and percussion — the rapper put on a flawless and inspired live performance of songs off his latest LP as well as some of his biggest hits, all freshly arranged for the Tiny Desk. \n\nOver the course of a decade, Curry has released a number of albums and EPs, becoming one of the most versatile emcees in hip-hop today. His sixth studio album, Melt My Eyez See Your Future, marked a new artistic beginning for him: infusing neo-soul, jazz and traditional hip-hop influences into the album, with less “rah” and more mature introspection. Throughout this concert, you get a little bit of both. \n\nCurry and the Cold-Blooded Soul Band open their set with “Melt Session #1,” a feel-good neo-soul groove where Curry’s introspective lyrics flow beautifully, taking center stage. Then kicking it up a notch, Curry performs “Walkin” and “Troubles” with an assist from DJ POSHtronaut, employing some serious bounce complimented by catchy horn lines. In the second half of his set, Curry takes us back with “DIET_.” Evoking instant head-bops as bass and drums smoothly lock in, Curry charms our audience with his improvised rhymes and exuberant personality. \n\nAs Curry and the band closed out the concert going absolutely bonkers with “RICKY,” I could feel how light the room had gotten as everyone in the audience fed off Curry’s infectious energy fueled by distorted guitar and bass and punchy horns. “You know I killed that s***. You know I murked that s***!” Yes, Denzel Curry. Yes you did. \n\nSET LIST\n“Melt Session #1”\n“Walkin”\n“Troubles”\n“DIET_”\n“CLOUT COBAIN | CLOUT CO13A1N”\n“RICKY”\n\nMUSICIANS\nDenzel Curry: vocals\nDJ POSHtronaut: vocals\nMarcus Paul: trumpet \nBrandyn Phillips: trumpet\nTim McKay: saxophone/flute\nAlex Csillag: trombone\nBrian Gazo: percussion\nBrian Patterson: drums\nJay Winfield: keys\nJack Siegel: guitar\nDavid McKinzie: bass\n\n\nTINY DESK TEAM\nProducer: Bobby Carter\nAudio Recording & Mix Engineer: Josh Rogosin\nDirector: Joshua Bryant\nEditor: Kara Frame\nSeries Creator: Bob Boilen\nVideographers: Kara Frame, Joshua Bryant, Michael Zamora, Pierre Kattar, Alanté Serene\nProduction Assistant: Ashley Pointer\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Jill Britton, Maia Stern\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #BMM #denzelcurry", "Denzel Curry: Tiny Desk Concert", "e8e25fb6-f7ed-4358-943b-8dfabcc7c7c2", 1184, false, "glHqWvkpRqo", "https://www.youtube.com/watch?v=glHqWvkpRqo", 25, "/downloads/Tiny Desk/2022-06-29 Denzel Curry: Tiny Desk Concert/Denzel Curry: Tiny Desk Concert [glHqWvkpRqo].mp4", false, false, false, 2, [], 1, ~U[2022-06-29 11:00:26Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "This year, NPR Music is celebrating Black Music Month with an array of brand new Tiny Desk concerts — both from home and from behind our beloved Desk. Together, these artists represent the past, present and future of Black music. This month of carefully curated shows is a celebration of Black artists expressing themselves in ways we've never seen before, and of the Tiny Desk's unique way of showcasing that talent.\n\nAshley Pointer | June 29, 2022\nAfter taking a sip of his tea towards the end of his six-song set, Denzel Curry turns to his band and exclaims: “We lowkey breezed through this b****! That’s great for two rehearsals!” \n\nFrom the moment Curry and his people stepped foot into NPR headquarters to record their Tiny Desk concert, the vibes were right. With a 10-piece configuration — consisting of drums, bass, keys, guitar, horns and percussion — the rapper put on a flawless and inspired live performance of songs off his latest LP as well as some of his biggest hits, all freshly arranged for the Tiny Desk. \n\nOver the course of a decade, Curry has released a number of albums and EPs, becoming one of the most versatile emcees in hip-hop today. His sixth studio album, Melt My Eyez See Your Future, marked a new artistic beginning for him: infusing neo-soul, jazz and traditional hip-hop influences into the album, with less “rah” and more mature introspection. Throughout this concert, you get a little bit of both. \n\nCurry and the Cold-Blooded Soul Band open their set with “Melt Session #1,” a feel-good neo-soul groove where Curry’s introspective lyrics flow beautifully, taking center stage. Then kicking it up a notch, Curry performs “Walkin” and “Troubles” with an assist from DJ POSHtronaut, employing some serious bounce complimented by catchy horn lines. In the second half of his set, Curry takes us back with “DIET_.” Evoking instant head-bops as bass and drums smoothly lock in, Curry charms our audience with his improvised rhymes and exuberant personality. \n\nAs Curry and the band closed out the concert going absolutely bonkers with “RICKY,” I could feel how light the room had gotten as everyone in the audience fed off Curry’s infectious energy fueled by distorted guitar and bass and punchy horns. “You know I killed that s***. You know I murked that s***!” Yes, Denzel Curry. Yes you did. \n\nSET LIST\n“Melt Session #1”\n“Walkin”\n“Troubles”\n“DIET_”\n“CLOUT COBAIN | CLOUT CO13A1N”\n“RICKY”\n\nMUSICIANS\nDenzel Curry: vocals\nDJ POSHtronaut: vocals\nMarcus Paul: trumpet \nBrandyn Phillips: trumpet\nTim McKay: saxophone/flute\nAlex Csillag: trombone\nBrian Gazo: percussion\nBrian Patterson: drums\nJay Winfield: keys\nJack Siegel: guitar\nDavid McKinzie: bass\n\n\nTINY DESK TEAM\nProducer: Bobby Carter\nAudio Recording & Mix Engineer: Josh Rogosin\nDirector: Joshua Bryant\nEditor: Kara Frame\nSeries Creator: Bob Boilen\nVideographers: Kara Frame, Joshua Bryant, Michael Zamora, Pierre Kattar, Alanté Serene\nProduction Assistant: Ashley Pointer\nTiny Desk Team: Suraya Mohamed, Marissa Lorusso, Hazel Cills, Jill Britton, Maia Stern\nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #BMM #denzelcurry", "Denzel Curry: Tiny Desk Concert", 1184, false, "glHqWvkpRqo", "https://www.youtube.com/watch?v=glHqWvkpRqo", "/downloads/Tiny Desk/2022-06-29 Denzel Curry: Tiny Desk Concert/Denzel Curry: Tiny Desk Concert [glHqWvkpRqo].mp4", false, 2, ~U[2022-06-29 11:00:26Z]] 14:14:42.769 [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" = ?) [2] 14:14:42.769 [debug] QUERY OK source="media_items" db=0.2ms idle=3.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-03-16 09:00:30Z], 2] 14:14:42.771 [debug] QUERY OK source="media_items" db=1.5ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This performance was recorded on January 23, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nWatch Coldplay play \"Cry Cry Cry\", \"Viva La Vida\", \"Broken\", \"1999\" (Prince cover) and \"Champion Of The World\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nMarch 12, 2020 | Robin Hilton -- Shortly into Coldplay's soundcheck, singer Chris Martin cut off the opening song, \"Cry Cry Cry,\" right in the middle. His band had brought along a nine-piece choir, and he asked them to take \"Cry Cry Cry\" one more time. When one of the singers asked if there was a problem, Martin replied, \"No, I'm just in f****** heaven right now!\"\n\nThat feeling was obvious throughout the performance. Watching Martin at the keys, with the For Love Choir behind him and Coldplay guitarist Jonny Buckland at his side, you'd be forgiven for thinking it was the happiest day of his life. Laughing, bouncing to the music and playing off the crowd, Martin and company gave one of the most jubilant, uplifting and memorable performances we've ever had at the Tiny Desk.\n\nWatching their gospel-infused take on \"Viva La Vida,\" it was hard not to beam with joy; hearing their stirring cover of Prince's \"1999\" brought on a mass urge to leap up and dance. The entire set was a perfectly executed showcase of the band's creative spirit and love of community through music.\n\n\"Viva La Vida\" was the only older track Coldplay performed, in addition to the surprise Prince cover. (The band had just performed at a Prince tribute show in January.) The other three songs — \"Cry Cry Cry,\" \"Broken\" and \"Champion of the World\" — are all from the band's stellar new album, Everyday Life, which was recorded with some of the singers on hand for the Tiny Desk. Martin joked that, \"In a very real way, they've Photoshopped our songs to be much better than they actually are.\" Whether or not that's true, for at least this one sunny afternoon at the NPR Music offices, the choir — and Coldplay's inspired reworking of its own music — felt transcendent.\n\nSET LIST\n\"Cry Cry Cry\"\n\"Viva La Vida\"\n\"Broken\"\n\"1999\" (Prince cover)\n\"Champion Of The World\"\n\nMUSICIANS\nChris Martin: vocals, keys; Jonny Buckland: guitar; Denise Green: vocals; Shaneka Hamilton: vocals; Dorian Holley: vocals; Stephen Mackey: vocals; Lamarcus Eldridge: vocals; Lawrence Young: vocals; Surrenity Xyz: vocals; Tiffany Smith: vocals; Mabvuto Carpenter: vocals\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith, Maia Stern; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, James Willetts; Editor: Maia Stern; Videographers: Maia Stern, Morgan Noelle Smith, CJ Riculan, Jack Corbett, Melany Rochester; Associate Producer: Bobby Carter; Production Assistant: Shanti Hands; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Emily Bogle/NPR", "Coldplay: NPR Music Tiny Desk Concert", "2a9d242b-fa1a-4863-bb38-ea2dceefd440", 1093, false, "j82L3pLjb_0", "https://www.youtube.com/watch?v=j82L3pLjb_0", 26, "/downloads/Tiny Desk/2020-03-16 Coldplay: NPR Music Tiny Desk Concert/Coldplay: NPR Music Tiny Desk Concert [j82L3pLjb_0].mp4", false, false, false, 2, [], 1, ~U[2020-03-16 09:00:30Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "This performance was recorded on January 23, 2020. We will continue releasing Tiny Desk videos of shows that had already been taped. In light of current events, NPR is postponing new live tapings of Tiny Desk Concerts. In the meantime, check out Tiny Desk (home) concerts! They’re recorded by the artists in their home. It’s the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nWatch Coldplay play \"Cry Cry Cry\", \"Viva La Vida\", \"Broken\", \"1999\" (Prince cover) and \"Champion Of The World\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nMarch 12, 2020 | Robin Hilton -- Shortly into Coldplay's soundcheck, singer Chris Martin cut off the opening song, \"Cry Cry Cry,\" right in the middle. His band had brought along a nine-piece choir, and he asked them to take \"Cry Cry Cry\" one more time. When one of the singers asked if there was a problem, Martin replied, \"No, I'm just in f****** heaven right now!\"\n\nThat feeling was obvious throughout the performance. Watching Martin at the keys, with the For Love Choir behind him and Coldplay guitarist Jonny Buckland at his side, you'd be forgiven for thinking it was the happiest day of his life. Laughing, bouncing to the music and playing off the crowd, Martin and company gave one of the most jubilant, uplifting and memorable performances we've ever had at the Tiny Desk.\n\nWatching their gospel-infused take on \"Viva La Vida,\" it was hard not to beam with joy; hearing their stirring cover of Prince's \"1999\" brought on a mass urge to leap up and dance. The entire set was a perfectly executed showcase of the band's creative spirit and love of community through music.\n\n\"Viva La Vida\" was the only older track Coldplay performed, in addition to the surprise Prince cover. (The band had just performed at a Prince tribute show in January.) The other three songs — \"Cry Cry Cry,\" \"Broken\" and \"Champion of the World\" — are all from the band's stellar new album, Everyday Life, which was recorded with some of the singers on hand for the Tiny Desk. Martin joked that, \"In a very real way, they've Photoshopped our songs to be much better than they actually are.\" Whether or not that's true, for at least this one sunny afternoon at the NPR Music offices, the choir — and Coldplay's inspired reworking of its own music — felt transcendent.\n\nSET LIST\n\"Cry Cry Cry\"\n\"Viva La Vida\"\n\"Broken\"\n\"1999\" (Prince cover)\n\"Champion Of The World\"\n\nMUSICIANS\nChris Martin: vocals, keys; Jonny Buckland: guitar; Denise Green: vocals; Shaneka Hamilton: vocals; Dorian Holley: vocals; Stephen Mackey: vocals; Lamarcus Eldridge: vocals; Lawrence Young: vocals; Surrenity Xyz: vocals; Tiffany Smith: vocals; Mabvuto Carpenter: vocals\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith, Maia Stern; Creative director: Bob Boilen; Audio engineers: Josh Rogosin, James Willetts; Editor: Maia Stern; Videographers: Maia Stern, Morgan Noelle Smith, CJ Riculan, Jack Corbett, Melany Rochester; Associate Producer: Bobby Carter; Production Assistant: Shanti Hands; Executive producer: Lauren Onkey; VP, programming: Anya Grundmann; Photo: Emily Bogle/NPR", "Coldplay: NPR Music Tiny Desk Concert", 1093, false, "j82L3pLjb_0", "https://www.youtube.com/watch?v=j82L3pLjb_0", "/downloads/Tiny Desk/2020-03-16 Coldplay: NP (truncated) 14:14:42.772 [debug] QUERY OK source="sources" db=0.2ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.772 [debug] QUERY OK source="media_items" db=0.3ms idle=3.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-12-09 10:00:04Z], 2] 14:14:42.774 [debug] QUERY OK source="media_items" db=1.7ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Megan Thee Stallion play at the Tiny Desk Fest.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nThis Tiny Desk concert was part of Tiny Desk Fest, a four-night series of extended concerts performed in front of a live audience and streamed live on YouTube, Twitter and Facebook.\n\nDec. 2, 2019 | Sidney Madden -- \"I'm gonna get real comfortable with y'all, so I'm need y'all to get real comfortable with me,\" Megan Thee Stallion told the excited Tiny Desk Fest crowd as soon as she assumed her position behind the desk. After promptly switching out her patent leather heels for some fuzzy Louis Vuitton slippers, she let the room know, \"Now, don't be scared to get ratchet.\"\n\nFrom there, the Houston rapper wasted no time demonstrating why she's a superstar in the making. Megan exuded irresistible charisma, cracking jokes with the crowd and rattling off explicit bars from her award-winning mixtape, Fever, for the live audience watching on YouTube and social media.\n\nFrom \"Hot Girl Summer\" to the platinum-selling \"Cash S***,\" Hot Girl Meg's raunchy hits took on new life thanks to a live backing band, Brooklyn's Phony Ppl, who seamlessly blend jazz, R&B and hip-hop. Midway through the spirited set, Megan and Phony Ppl surprised the audience by premiering an unreleased collaboration, a bouncy banger titled \"F***** Around.\" After the first verse/chorus, the adoring crowd was singing along as if they'd known the song for years.\n\nIt was the first time Megan performed with a live band in public, but then again, there's been a lot of firsts over the past year. This time last fall, Megan was rapping her heart out at local shows, balancing classes at Texas Southern University and occasionally dropping a fire freestyle video from a suburban cul-de-sac driveway. Since then, the brilliant and bodacious rapper ascended to major festival stages, became one of the most sought-after features on other stars' songs, and electrified late-night television audiences.\n\nThough she's dubbed herself a stallion because of her tall and voluptuous frame (Meg stands 5 feet 10 inches without heels,) the 24-year-old rapper has proven herself to be a workhorse when it comes to consistency. Her viral 2019 freestyles shot her online exposure through the roof and whichever alter ego she chooses in the moment — Tina Snow, Hot Girl Meg, Stalli — she's maintained the spotlight all year thanks to a steady stream of new music, an engaging personality and her own viral social media campaign, Hot Girl Summer.\n\nThough she's usually known for extensive twerking during her stage performances, at the Tiny Desk, Meg played up a different skill set: impeccable timing and lung capacity. \"Yall talk about Meg's knees but sis breath control is pretty impressive too,\" one viewer tweeted out during the live video stream.\n\nMegan's lyrical content lies in subverting established sexual dynamics and no matter the level of raunch she deploys, empowering women remains the artist's manifesto. Co-signs from all across hip-hop, from Q-Tip to Nicki Minaj to Chance the Rapper, have only bolstered her appeal and validated her bars in the eyes of the genre's cultural gatekeepers.\n\nSET LIST\n\"Realer\"\n\"Freak Nasty\"\n\"Cash S***\"\n\"Big Ole Freak\"\n\"Hot Girl Summer\"\n\"F****** Around\"\n\"Money Good\"\n\nMUSICIANS\nMegan Thee Stallion: vocals; Elbee Thrie: vocal, percussion; Elijah Rawk: guitar; Maffyuu: drums; Aja Grant: keys; Bari Bass: bass; Ebony Joi: vocals\n\nCREDITS\nProducers: Sidney Madden, Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts; Videographers: Morgan Noelle Smith, Maia Stern, Kara Frame, CJ Riculan, Jack Corbett; Associate Producer: Bobby Carter; Production Assistant: Tsering Bista; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Laura Beltran Villamizar/NPR\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.co" <> ..., "Megan Thee Stallion: NPR Music Tiny Desk Concert", "399fef2b-75b3-44d6-976c-c4c698da8b72", 1559, false, "GYJ03MIPoIk", "https://www.youtube.com/watch?v=GYJ03MIPoIk", 27, "/downloads/Tiny Desk/2019-12-09 Megan Thee Stallion: NPR Music Tiny Desk Concert/Megan Thee Stallion: NPR Music Tiny Desk Concert [GYJ03MIPoIk].mp4", false, false, false, 2, [], 1, ~U[2019-12-09 10:00:04Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Megan Thee Stallion play at the Tiny Desk Fest.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nThis Tiny Desk concert was part of Tiny Desk Fest, a four-night series of extended concerts performed in front of a live audience and streamed live on YouTube, Twitter and Facebook.\n\nDec. 2, 2019 | Sidney Madden -- \"I'm gonna get real comfortable with y'all, so I'm need y'all to get real comfortable with me,\" Megan Thee Stallion told the excited Tiny Desk Fest crowd as soon as she assumed her position behind the desk. After promptly switching out her patent leather heels for some fuzzy Louis Vuitton slippers, she let the room know, \"Now, don't be scared to get ratchet.\"\n\nFrom there, the Houston rapper wasted no time demonstrating why she's a superstar in the making. Megan exuded irresistible charisma, cracking jokes with the crowd and rattling off explicit bars from her award-winning mixtape, Fever, for the live audience watching on YouTube and social media.\n\nFrom \"Hot Girl Summer\" to the platinum-selling \"Cash S***,\" Hot Girl Meg's raunchy hits took on new life thanks to a live backing band, Brooklyn's Phony Ppl, who seamlessly blend jazz, R&B and hip-hop. Midway through the spirited set, Megan and Phony Ppl surprised the audience by premiering an unreleased collaboration, a bouncy banger titled \"F***** Around.\" After the first verse/chorus, the adoring crowd was singing along as if they'd known the song for years.\n\nIt was the first time Megan performed with a live band in public, but then again, there's been a lot of firsts over the past year. This time last fall, Megan was rapping her heart out at local shows, balancing classes at Texas Southern University and occasionally dropping a fire freestyle video from a suburban cul-de-sac driveway. Since then, the brilliant and bodacious rapper ascended to major festival stages, became one of the most sought-after features on other stars' songs, and electrified late-night television audiences.\n\nThough she's dubbed herself a stallion because of her tall and voluptuous frame (Meg stands 5 feet 10 inches without heels,) the 24-year-old rapper has proven herself to be a workhorse when it comes to consistency. Her viral 2019 freestyles shot her online exposure through the roof and whichever alter ego she chooses in the moment — Tina Snow, Hot Girl Meg, Stalli — she's maintained the spotlight all year thanks to a steady stream of new music, an engaging personality and her own viral social media campaign, Hot Girl Summer.\n\nThough she's usually known for extensive twerking during her stage performances, at the Tiny Desk, Meg played up a different (truncated) 14:14:42.775 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.775 [debug] QUERY OK source="media_items" db=0.2ms idle=4.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-12-02 10:00:02Z], 2] 14:14:42.777 [debug] QUERY OK source="media_items" db=1.2ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Carly Rae Jepsen play \"Now That I Found You\", \"Want You In My Room\" and \"The Sound\" at the Tiny Desk.\n\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nNov. 25, 2019 | Lyndsey McKenna and Marissa Lorusso -- From the moment Carly Rae Jepsen arrived at NPR HQ for her Tiny Desk concert, she brought an obvious sense of joy. Take, for example, her sound check: Working with her band of longtime collaborators, she seemed downright delighted, beaming at the musicians as she gave notes after each meticulous run-through. It's that attention to detail that's helped build her a devoted fanbase ready to make memes of her every move.\n\nHer performance was a long time coming: In 2012, Jepsen's No. 1 hit \"Call Me Maybe\" was inescapable, and her 2015 album E-MO-TION made her a critical darling. An extremely high proportion of NPR employees also happen to be fans of the left-of-center pop star; despite the nonstop impeachment hearing coverage happening just down the hall, Jepsen commanded a considerable and captivated crowd at the Tiny Desk.\n\nFor the performance, Jepsen and her band played three songs from her latest album, Dedicated, modulating the album's sparkling pop-disco vibe to fit our sun-filled office. From the smiling swagger of \"Want You In My Room\" to the head-rush of a new crush on \"Now That I Found You,\" to \"The Sound,\" Jepsen and her band even shared a few laughs during the set — and the whole crowd left smiling a little bit bigger.\n\nSET LIST\n\"Now That I Found You\"\n\"Want You In My Room\"\n\"The Sound\"\n\nMUSICIANS\nCarly Rae Jepsen: vocals; Tavish Crowe: guitar; Nik Pešut\u200F: drums; Jared Manierka: keys; Adam Siska: bass; Sophi Bairley: vocals\n\nCREDITS\nProducers: Bob Boilen, Marissa Lorusso, Lyndsey McKenna, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts, Patrick Boyd; Videographers: Morgan Noelle Smith, Jack Corbett, Maia Stern, Kara Frame ; Associate Producer: Bobby Carter; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Mhari Shaw/NPR", "Carly Rae Jepsen: NPR Music Tiny Desk Concert", "6ecf9189-5256-48c6-9a6e-f5f1278e48de", 607, false, "NGsgb8m0Yns", "https://www.youtube.com/watch?v=NGsgb8m0Yns", 28, "/downloads/Tiny Desk/2019-12-02 Carly Rae Jepsen: NPR Music Tiny Desk Concert/Carly Rae Jepsen: NPR Music Tiny Desk Concert [NGsgb8m0Yns].mp4", false, false, false, 2, [], 1, ~U[2019-12-02 10:00:02Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Carly Rae Jepsen play \"Now That I Found You\", \"Want You In My Room\" and \"The Sound\" at the Tiny Desk.\n\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nNov. 25, 2019 | Lyndsey McKenna and Marissa Lorusso -- From the moment Carly Rae Jepsen arrived at NPR HQ for her Tiny Desk concert, she brought an obvious sense of joy. Take, for example, her sound check: Working with her band of longtime collaborators, she seemed downright delighted, beaming at the musicians as she gave notes after each meticulous run-through. It's that attention to detail that's helped build her a devoted fanbase ready to make memes of her every move.\n\nHer performance was a long time coming: In 2012, Jepsen's No. 1 hit \"Call Me Maybe\" was inescapable, and her 2015 album E-MO-TION made her a critical darling. An extremely high proportion of NPR employees also happen to be fans of the left-of-center pop star; despite the nonstop impeachment hearing coverage happening just down the hall, Jepsen commanded a considerable and captivated crowd at the Tiny Desk.\n\nFor the performance, Jepsen and her band played three songs from her latest album, Dedicated, modulating the album's sparkling pop-disco vibe to fit our sun-filled office. From the smiling swagger of \"Want You In My Room\" to the head-rush of a new crush on \"Now That I Found You,\" to \"The Sound,\" Jepsen and her band even shared a few laughs during the set — and the whole crowd left smiling a little bit bigger.\n\nSET LIST\n\"Now That I Found You\"\n\"Want You In My Room\"\n\"The Sound\"\n\nMUSICIANS\nCarly Rae Jepsen: vocals; Tavish Crowe: guitar; Nik Pešut\u200F: drums; Jared Manierka: keys; Adam Siska: bass; Sophi Bairley: vocals\n\nCREDITS\nProducers: Bob Boilen, Marissa Lorusso, Lyndsey McKenna, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, James Willetts, Patrick Boyd; Videographers: Morgan Noelle Smith, Jack Corbett, Maia Stern, Kara Frame ; Associate Producer: Bobby Carter; Executive Producer: Lauren Onkey; VP, Programming: Anya Grundmann; Photo: Mhari Shaw/NPR", "Carly Rae Jepsen: NPR Music Tiny Desk Concert", 607, false, "NGsgb8m0Yns", "https://www.youtube.com/watch?v=NGsgb8m0Yns", "/downloads/Tiny Desk/2019-12-02 Carly Rae Jepsen: NPR Music Tiny Desk Concert/Carly Rae Jepsen: NPR Music Tiny Desk Concert [NGsgb8m0Yns].mp4", false, 2, ~U[2019-12-02 10:00:02Z]] 14:14:42.778 [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" = ?) [2] 14:14:42.778 [debug] QUERY OK source="media_items" db=0.3ms idle=3.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-10-28 09:00:02Z], 2] 14:14:42.780 [debug] QUERY OK source="media_items" db=1.6ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Taylor Swift play \"The Man\", \"Lover\", \"Death by a Thousand Cuts\" and \"All Too Well\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nOct. 15, 2019 | Lyndsey McKenna -- As Taylor Swift settled in for her Tiny Desk, she looked out at the 300-plus NPR employees and guests. \"Wow! This is a lot of people in a tiny office!\" she said. \"I love it!\" Then, after introducing herself, she explained her objective: \"I just decided to take this as an opportunity to show you guys how the songs sounded when I first wrote them.\"\n\nIt should come as no surprise that someone who commands stadium stages could hold court in NPR Music's corner of our Washington, D.C., office — specifically, behind Bob Boilen's desk — but Swift was truly at home in stripped-down, solo-session mode. (\"It's just me. There's no dancers, unfortunately,\" she quipped.)\n\nOpening with an acoustic rendition of \"The Man,\" from her 2019 album, Lover, Swift delivered a critique of gender double standards with a sense of humor (and a perfectly deployed hair toss), Leonardo DiCaprio name check and all. Turning to the piano with a smile for Lover's title track, she explained the guitar-string scars of the song's bridge. Picking up the guitar again for \"Death by a Thousand Cuts,\" Swift confronted a question that she says has haunted her career: What will you ever do if you get happy? Across the song's run-on thoughts and relentless searching, Swift offered an answer: She'll continue to excel at crafting superb story-songs.\n\nThough most Tiny Desk concerts stop at three songs, we couldn't turn down the chance to hear \"All Too Well\" from Swift's 2012 album, Red. Routinely cited by critics and fans alike as a favorite, the beloved track has become the stuff of Swiftie legends, striking in its specificity (that scarf!) and relatable in a way that anyone who has loved and lost can understand.\n\nThat sense of connection is at the heart of it all. Some 800 Tiny Desk concerts since we published our very first back in April 2008, the aim remains the same: In the midst of meetings and conference calls, Tiny Desk concerts offer respite from the workday and opportunities to see artists reimagine their work in a strange setting. It's always special, but on some days, it feels downright magical. Watching Taylor Swift perform — and then interact with co-workers and guests who have grown up with her — was simply enchanting.\n\nSET LIST\n\"The Man\"\n\"Lover\"\n\"Death by a Thousand Cuts\"\n\"All Too Well\"\n\nMUSICIAN\nTaylor Swift: vocals, guitar, piano\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, Natasha Branch; Videographers: Morgan Noelle Smith, Kara Frame, Maia Stern; Associate Producer: Bobby Carter; Production Assistants: Jack Corbett, Mito Habe-Evans; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann; Photo: Bob Boilen/NPR", "Taylor Swift: NPR Music Tiny Desk Concert", "d7a5c666-5eda-46a8-8a37-92027b98cb22", 1739, false, "FvVnP8G6ITs", "https://www.youtube.com/watch?v=FvVnP8G6ITs", 29, "/downloads/Tiny Desk/2019-10-28 Taylor Swift: NPR Music Tiny Desk Concert/Taylor Swift: NPR Music Tiny Desk Concert [FvVnP8G6ITs].mp4", false, false, false, 2, [], 1, ~U[2019-10-28 09:00:02Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Taylor Swift play \"The Man\", \"Lover\", \"Death by a Thousand Cuts\" and \"All Too Well\" at the Tiny Desk.\n\nMore from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\nOct. 15, 2019 | Lyndsey McKenna -- As Taylor Swift settled in for her Tiny Desk, she looked out at the 300-plus NPR employees and guests. \"Wow! This is a lot of people in a tiny office!\" she said. \"I love it!\" Then, after introducing herself, she explained her objective: \"I just decided to take this as an opportunity to show you guys how the songs sounded when I first wrote them.\"\n\nIt should come as no surprise that someone who commands stadium stages could hold court in NPR Music's corner of our Washington, D.C., office — specifically, behind Bob Boilen's desk — but Swift was truly at home in stripped-down, solo-session mode. (\"It's just me. There's no dancers, unfortunately,\" she quipped.)\n\nOpening with an acoustic rendition of \"The Man,\" from her 2019 album, Lover, Swift delivered a critique of gender double standards with a sense of humor (and a perfectly deployed hair toss), Leonardo DiCaprio name check and all. Turning to the piano with a smile for Lover's title track, she explained the guitar-string scars of the song's bridge. Picking up the guitar again for \"Death by a Thousand Cuts,\" Swift confronted a question that she says has haunted her career: What will you ever do if you get happy? Across the song's run-on thoughts and relentless searching, Swift offered an answer: She'll continue to excel at crafting superb story-songs.\n\nThough most Tiny Desk concerts stop at three songs, we couldn't turn down the chance to hear \"All Too Well\" from Swift's 2012 album, Red. Routinely cited by critics and fans alike as a favorite, the beloved track has become the stuff of Swiftie legends, striking in its specificity (that scarf!) and relatable in a way that anyone who has loved and lost can understand.\n\nThat sense of connection is at the heart of it all. Some 800 Tiny Desk concerts since we published our very first back in April 2008, the aim remains the same: In the midst of meetings and conference calls, Tiny Desk concerts offer respite from the workday and opportunities to see artists reimagine their work in a strange setting. It's always special, but on some days, it feels downright magical. Watching Taylor Swift perform — and then interact with co-workers and guests who have grown up with her — was simply enchanting.\n\nSET LIST\n\"The Man\"\n\"Lover\"\n\"Death by a Thousand Cuts\"\n\"All Too Well\"\n\nMUSICIAN\nTaylor Swift: vocals, guitar, piano\n\nCREDITS\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineers: Josh Rogosin, Natasha Branch; Videographers: Morgan Noelle Smith, Kara Frame, Maia Stern; Associate Producer: Bobby Carter; Production Assistants: Jack Corbett, Mito Habe-Evans; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann; Photo: Bob Boilen/NPR", "Taylor Swift: NPR Music Tiny Desk Concert", 1739, false, "FvVnP8G6ITs", "https://www.youtube.com/watch?v=FvVnP8G6ITs", "/downloads/Tiny Desk/2019-10-28 Taylor Swift: NPR Music Tiny Desk Concert/Taylor Swift: NPR Music Tiny Desk Concert [FvVnP8G6ITs].mp4", false, 2, ~U[2019-10-28 09:00:02Z]] 14:14:42.781 [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" = ?) [2] 14:14:42.781 [debug] QUERY OK source="media_items" db=0.2ms idle=3.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-07-17 09:00:04Z], 2] 14:14:42.783 [debug] QUERY OK source="media_items" db=1.3ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch Sting And Shaggy play \"Englishman in New York\", \"Don't Make Me Wait\" and \"Shape of My Heart/Lucid Dreams\" at the Tiny Desk.\n\nWatch Tiny Desk Concerts ONE WEEK before they go on YouTube at https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\n\nJuly 10, 2019 | Josh Rogosin -- Sting and Shaggy might not be the most likely musical pairing. But one thing is certain, they love playing each other's music. On a bright autumn morning, the legends arrived at the NPR Music office bleary-eyed yet excited to play for the diverse staff of Shaggy and Sting fans. What surprised many of my NPR colleagues is just how well the collaboration works.\n\nTheir success as a duo shouldn't come as a total shock. After all, pulsing through many Police songs (Sting's famed band of the '70s and '80s) is a Reggae backbeat. It's impossible not to hear the influence in classics like \"Walking On The Moon\" and \"So Lonely.\"\n\nShaggy (zoinks! - his nom de guerre comes from the Scooby-Doo cartoon character) was born in Kingston, Jamaica. He moved to New York when he was 18 and his music evokes only good vibes. The positive energy he brought to their opening song, \"Englishman [and Jamaican] In New York,\" had everyone in the room grinning ear to ear, \"early morning Reggae style,\" as he put it. After the tune, Sting announced \"I never sang that song before 8 PM... Ever!\"\n\nSting's familiar, raspy voice was accompanied by his battered 1957 Fender Precision bass he's plucked for over 25 years. His long-time guitarist and collaborator, Dominic Miller, strummed Reggae offbeats on acoustic guitar and co-wrote the hauntingly beautiful \"Shape Of My Heart.\" That song is mashed-up with Juice Wrld's \"Lucid Dream,\" sung by Gene Noble, offering a refreshing counter to Sting's nuanced melody.\n\nShaggy affectionately refers to his collaborator as \"Stingy,\" putting his arm around him mid-performance. It's easy to see the comradery that being on the road together affords these veteran musicians, to say nothing of the breath of fresh air they bring to each other's music.\n\nSET LIST\n\"Englishman in New York\"\n\"Don't Make Me Wait\"\n\"Shape of My Heart/Lucid Dreams\"\n\nMUSICIANS\nSting: vocals, bass, guitar; Shaggy: vocals; Dominic Miller: guitar; Gene Noble: vocals; Melissa Musique: vocals\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Beck Harlan; Editor: Kaylee Domzalski; Associate Producer: Bobby Carter; Photo: Cameron Pollack/NPR", "Sting And Shaggy: NPR Music Tiny Desk Concert", "03078a83-f6da-4e6f-9146-57dfdb425ccb", 875, false, "bdneye4pzMw", "https://www.youtube.com/watch?v=bdneye4pzMw", 30, "/downloads/Tiny Desk/2019-07-17 Sting And Shaggy: NPR Music Tiny Desk Concert/Sting And Shaggy: NPR Music Tiny Desk Concert [bdneye4pzMw].mp4", false, false, false, 2, [], 1, ~U[2019-07-17 09:00:04Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch Sting And Shaggy play \"Englishman in New York\", \"Don't Make Me Wait\" and \"Shape of My Heart/Lucid Dreams\" at the Tiny Desk.\n\nWatch Tiny Desk Concerts ONE WEEK before they go on YouTube at https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\n\n\nJuly 10, 2019 | Josh Rogosin -- Sting and Shaggy might not be the most likely musical pairing. But one thing is certain, they love playing each other's music. On a bright autumn morning, the legends arrived at the NPR Music office bleary-eyed yet excited to play for the diverse staff of Shaggy and Sting fans. What surprised many of my NPR colleagues is just how well the collaboration works.\n\nTheir success as a duo shouldn't come as a total shock. After all, pulsing through many Police songs (Sting's famed band of the '70s and '80s) is a Reggae backbeat. It's impossible not to hear the influence in classics like \"Walking On The Moon\" and \"So Lonely.\"\n\nShaggy (zoinks! - his nom de guerre comes from the Scooby-Doo cartoon character) was born in Kingston, Jamaica. He moved to New York when he was 18 and his music evokes only good vibes. The positive energy he brought to their opening song, \"Englishman [and Jamaican] In New York,\" had everyone in the room grinning ear to ear, \"early morning Reggae style,\" as he put it. After the tune, Sting announced \"I never sang that song before 8 PM... Ever!\"\n\nSting's familiar, raspy voice was accompanied by his battered 1957 Fender Precision bass he's plucked for over 25 years. His long-time guitarist and collaborator, Dominic Miller, strummed Reggae offbeats on acoustic guitar and co-wrote the hauntingly beautiful \"Shape Of My Heart.\" That song is mashed-up with Juice Wrld's \"Lucid Dream,\" sung by Gene Noble, offering a refreshing counter to Sting's nuanced melody.\n\nShaggy affectionately refers to his collaborator as \"Stingy,\" putting his arm around him mid-performance. It's easy to see the comradery that being on the road together affords these veteran musicians, to say nothing of the breath of fresh air they bring to each other's music.\n\nSET LIST\n\"Englishman in New York\"\n\"Don't Make Me Wait\"\n\"Shape of My Heart/Lucid Dreams\"\n\nMUSICIANS\nSting: vocals, bass, guitar; Shaggy: vocals; Dominic Miller: guitar; Gene Noble: vocals; Melissa Musique: vocals\n\nCREDITS\nProducers: Abby O'Neill, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Beck Harlan; Editor: Kaylee Domzalski; Associate Producer: Bobby Carter; Photo: Cameron Pollack/NPR", "Sting And Shaggy: NPR Music Tiny Desk Concert", 875, false, "bdneye4pzMw", "https://www.youtube.com/watch?v=bdneye4pzMw", "/downloads/Tiny Desk/2019-07-17 Sting And Shaggy: NPR Music Tiny Desk Concert/Sting And Shaggy: NPR Music Tiny Desk Concert [bdneye4pzMw].mp4", false, 2, ~U[2019-07-17 09:00:04Z]] 14:14:42.783 [debug] QUERY OK source="sources" db=0.2ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.784 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2019-04-09 09:00:07Z], 2] 14:14:42.785 [debug] QUERY OK source="media_items" db=1.2ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["April 1, 2019 | Robin Hilton -- This is probably the loosest you'll ever see Weezer. Known for meticulously produced — and electric — live shows, frontman Rivers Cuomo and the rest of the band settled in behind the Tiny Desk for an entirely acoustic set without the in-ear monitors, click track or vocal separation they usually employ to stay locked-in and tight for bigger performances. The result is surprisingly intimate, with songs that feel lived-in and rumpled, like an old flannel shirt from the '90s.\n\nWeezer opened with one of the band's rarer songs: \"Longtime Sunshine,\" a 1994 track that's only appeared as a Rivers Cuomo home recording on bootlegs and compilations, and on the deluxe edition of Pinkerton. Then the band performed a stripped-down version of its electro-pop song \"Living in L.A.,\" from Weezer's new self-titled \"Black Album,\" followed by another deep cut, \"Across the Sea.\" It's a song Cuomo originally wrote in his early 20s, inspired by a fan letter he'd received from a young woman in Japan. While beloved by many Gen-Xers who'd first heard it on 1996's Pinkerton, the song's lyrics haven't aged terribly well.\n\nWeezer returned to its newest material to close the set with \"High as a Kite,\" from the new album. A song of innocence and escapism, Cuomo sings about daydreaming and how he wants to disappear — which is exactly what the band did once the song was over, but not before Cuomo told the crowd, \"We are Weezer, from the planet Earth. Have a nice life!\"\n\nSET LIST\n\"Long Time Sunshine\"\n\"Living in L.A.\"\n\"Across the Sea\"\n\"High as a Kite\"\n\nMUSICIANS\nRivers Cuomo: lead vocals, guitar; Brian Bell: guitar, vocals, keys; Scott Shriner: bass guitar; Patrick Wilson: drums\n\nCREDITS\nProducers: Robin Hilton, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Beck Harlan, Kimani Oletu; Associate Producer: Bobby Carter; Production Assistant: Adelaide Sandstrom; Photo: Amr Alfiky/NPR", "Weezer: NPR Music Tiny Desk Concert", "9ede5f34-25f1-4262-bc32-aa48baa7f760", 952, false, "t8UKQJZsv4o", "https://www.youtube.com/watch?v=t8UKQJZsv4o", 31, "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].mp4", false, false, false, 2, [], 1, ~U[2019-04-09 09:00:07Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "April 1, 2019 | Robin Hilton -- This is probably the loosest you'll ever see Weezer. Known for meticulously produced — and electric — live shows, frontman Rivers Cuomo and the rest of the band settled in behind the Tiny Desk for an entirely acoustic set without the in-ear monitors, click track or vocal separation they usually employ to stay locked-in and tight for bigger performances. The result is surprisingly intimate, with songs that feel lived-in and rumpled, like an old flannel shirt from the '90s.\n\nWeezer opened with one of the band's rarer songs: \"Longtime Sunshine,\" a 1994 track that's only appeared as a Rivers Cuomo home recording on bootlegs and compilations, and on the deluxe edition of Pinkerton. Then the band performed a stripped-down version of its electro-pop song \"Living in L.A.,\" from Weezer's new self-titled \"Black Album,\" followed by another deep cut, \"Across the Sea.\" It's a song Cuomo originally wrote in his early 20s, inspired by a fan letter he'd received from a young woman in Japan. While beloved by many Gen-Xers who'd first heard it on 1996's Pinkerton, the song's lyrics haven't aged terribly well.\n\nWeezer returned to its newest material to close the set with \"High as a Kite,\" from the new album. A song of innocence and escapism, Cuomo sings about daydreaming and how he wants to disappear — which is exactly what the band did once the song was over, but not before Cuomo told the crowd, \"We are Weezer, from the planet Earth. Have a nice life!\"\n\nSET LIST\n\"Long Time Sunshine\"\n\"Living in L.A.\"\n\"Across the Sea\"\n\"High as a Kite\"\n\nMUSICIANS\nRivers Cuomo: lead vocals, guitar; Brian Bell: guitar, vocals, keys; Scott Shriner: bass guitar; Patrick Wilson: drums\n\nCREDITS\nProducers: Robin Hilton, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Beck Harlan, Kimani Oletu; Associate Producer: Bobby Carter; Production Assistant: Adelaide Sandstrom; Photo: Amr Alfiky/NPR", "Weezer: NPR Music Tiny Desk Concert", 952, false, "t8UKQJZsv4o", "https://www.youtube.com/watch?v=t8UKQJZsv4o", "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].mp4", false, 2, ~U[2019-04-09 09:00:07Z]] 14:14:42.786 [debug] QUERY OK source="sources" db=0.1ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.786 [debug] QUERY OK source="media_items" db=0.2ms idle=3.1ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2018-10-22 09:00:02Z], 2] 14:14:42.788 [debug] QUERY OK source="media_items" db=1.3ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Oct. 16, 2018 | Josh Rogosin -- Her nervousness was palpable and stood in stark contrast to her fully produced stage show. \"I'm sorry I'm shy,\" Florence Welch told the crowd of NPR family and friends gathered for her Tiny Desk performance. \"If this was a big gig, I'd probably be climbing all over here and running around.\"\n\nOpening with the song \"June,\" from Florence + the Machine's 2018 album High As Hope, Florence performed with her eyes closed. By the end of the three-song set, she fully embraced the experience and gave in to the rapturous audience. Within seconds of hearing her first note, the raw power of her un-amplified voice was chilling.\n\nIt's impossible to talk about Florence without her backing band. Tom Monger adds exquisite ethereal textures to the songs with his stunning mastery of the pedal harp. Hazel Mill's backing vocals and anthemic power chords on the keys accentuate the poignancy of the lyrics at just the right moments. And Robert Ackroyd's rhythmic, steady acoustic guitar drives the music forward.\n\nBut the intensity of the musicality is almost secondary to the message in her lyrics. Ear-worm melodies coupled with repetitive phrases create universal, awe-inspiring anthems. At the end of her first song, Florence implored the crowd to hold on to each other. In \"Patricia,\" she insisted it's such a wonderful thing to love. After 14 enchanting minutes, it's impossible to disagree.\n\nSet List\n\"June\"\n\"Patricia\"\n\"Ship to Wreck\"\n\nMusicians\nFlorence Welch (Vocals), Tom Monger (Pedal Harp), Hazel Mills (Keyboard and Vocals), Robert Ackroyd (Guitar)\n\nCredits\nProducers: Bob Boilen, Josh Rogosin, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Kaylee Domzalski; Production Assistant: Brie Martin; Photo: Heather Kim/NPR", "Florence + the Machine: NPR Music Tiny Desk Concert", "e6430a3d-24ab-4cd3-b3be-30ef5677b97a", 842, false, "EkPrXL-H5Qc", "https://www.youtube.com/watch?v=EkPrXL-H5Qc", 32, "/downloads/Tiny Desk/2018-10-22 Florence + the Machine: NPR Music Tiny Desk Concert/Florence + the Machine: NPR Music Tiny Desk Concert [EkPrXL-H5Qc].mp4", false, false, false, 2, [], 1, ~U[2018-10-22 09:00:02Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Oct. 16, 2018 | Josh Rogosin -- Her nervousness was palpable and stood in stark contrast to her fully produced stage show. \"I'm sorry I'm shy,\" Florence Welch told the crowd of NPR family and friends gathered for her Tiny Desk performance. \"If this was a big gig, I'd probably be climbing all over here and running around.\"\n\nOpening with the song \"June,\" from Florence + the Machine's 2018 album High As Hope, Florence performed with her eyes closed. By the end of the three-song set, she fully embraced the experience and gave in to the rapturous audience. Within seconds of hearing her first note, the raw power of her un-amplified voice was chilling.\n\nIt's impossible to talk about Florence without her backing band. Tom Monger adds exquisite ethereal textures to the songs with his stunning mastery of the pedal harp. Hazel Mill's backing vocals and anthemic power chords on the keys accentuate the poignancy of the lyrics at just the right moments. And Robert Ackroyd's rhythmic, steady acoustic guitar drives the music forward.\n\nBut the intensity of the musicality is almost secondary to the message in her lyrics. Ear-worm melodies coupled with repetitive phrases create universal, awe-inspiring anthems. At the end of her first song, Florence implored the crowd to hold on to each other. In \"Patricia,\" she insisted it's such a wonderful thing to love. After 14 enchanting minutes, it's impossible to disagree.\n\nSet List\n\"June\"\n\"Patricia\"\n\"Ship to Wreck\"\n\nMusicians\nFlorence Welch (Vocals), Tom Monger (Pedal Harp), Hazel Mills (Keyboard and Vocals), Robert Ackroyd (Guitar)\n\nCredits\nProducers: Bob Boilen, Josh Rogosin, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, CJ Riculan, Maia Stern, Kaylee Domzalski; Production Assistant: Brie Martin; Photo: Heather Kim/NPR", "Florence + the Machine: NPR Music Tiny Desk Concert", 842, false, "EkPrXL-H5Qc", "https://www.youtube.com/watch?v=EkPrXL-H5Qc", "/downloads/Tiny Desk/2018-10-22 Florence + the Machine: NPR Music Tiny Desk Concert/Florence + the Machine: NPR Music Tiny Desk Concert [EkPrXL-H5Qc].mp4", false, 2, ~U[2018-10-22 09:00:02Z]] 14:14:42.789 [debug] QUERY OK source="sources" db=0.4ms 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] 14:14:42.789 [debug] QUERY OK source="media_items" db=0.4ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2018-09-19 09:00:00Z], 2] 14:14:42.791 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sept. 12, 2018 | Bob Boilen -- Hobo Johnson and the Lovemakers accomplished something remarkable this year with their Tiny Desk Contest entry. They made a simple backyard video - a single camera shoot - that's now been seen almost 10 million times on YouTube. And the song they played, \"Peach Scone,\" has unlocked a door to a dream - to play a Tiny Desk Concert and be heard. The song is a tale of one-sided love - a tale of kindness in the face of loneliness and depression. Now, \"a couple of kids - five I guess\" as its lyrics go, get to bring their creative, urgent and somewhat nervous energy from Sacramento, Calif. to play \"Peach Scone\" and more to millions of other listeners.\n\nThis is a band always on the verge of emotional explosions, all while Frank Lopes, aka Hobo Johnson, is quoting Shakespeare and making references to Jay-Z, The Front Bottoms song \"Twin Size Mattress\" and so much more.\n\nThe directness in their music, with its chorus shouts (\"Damn I love those sandwiches!\") and the little asides (\"I got a duvet the other day - how do you wash a blanket? In a washer? That's what I found out\") make for a remarkably personal performance. At times it's as much a storytelling session or personal confession than a musical performance, and for me it conjures feelings of empathy and understanding and compassion.\n\nSet List\n\"Romeo & Juliet\"\n\"Sex in the City\"\n\"Peach Scone\"\n\"Creve Coeur 1\"\n\nCredits\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, CJ Riculan; Editor: Production Assistant: Ema Sagner; Photo: John Poole", "Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert", "2f90c1c0-533b-49f9-9bda-812a5e74f4e2", 921, false, "A8a2EosJIbM", "https://www.youtube.com/watch?v=A8a2EosJIbM", 33, "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].mp4", false, false, false, 2, [], 1, ~U[2018-09-19 09:00:00Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Sept. 12, 2018 | Bob Boilen -- Hobo Johnson and the Lovemakers accomplished something remarkable this year with their Tiny Desk Contest entry. They made a simple backyard video - a single camera shoot - that's now been seen almost 10 million times on YouTube. And the song they played, \"Peach Scone,\" has unlocked a door to a dream - to play a Tiny Desk Concert and be heard. The song is a tale of one-sided love - a tale of kindness in the face of loneliness and depression. Now, \"a couple of kids - five I guess\" as its lyrics go, get to bring their creative, urgent and somewhat nervous energy from Sacramento, Calif. to play \"Peach Scone\" and more to millions of other listeners.\n\nThis is a band always on the verge of emotional explosions, all while Frank Lopes, aka Hobo Johnson, is quoting Shakespeare and making references to Jay-Z, The Front Bottoms song \"Twin Size Mattress\" and so much more.\n\nThe directness in their music, with its chorus shouts (\"Damn I love those sandwiches!\") and the little asides (\"I got a duvet the other day - how do you wash a blanket? In a washer? That's what I found out\") make for a remarkably personal performance. At times it's as much a storytelling session or personal confession than a musical performance, and for me it conjures feelings of empathy and understanding and compassion.\n\nSet List\n\"Romeo & Juliet\"\n\"Sex in the City\"\n\"Peach Scone\"\n\"Creve Coeur 1\"\n\nCredits\nProducers: Bob Boilen, Morgan Noelle Smith; Creative Director: Bob Boilen; Audio Engineer: Josh Rogosin; Videographers: Morgan Noelle Smith, Bronson Arcuri, CJ Riculan; Editor: Production Assistant: Ema Sagner; Photo: John Poole", "Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert", 921, false, "A8a2EosJIbM", "https://www.youtube.com/watch?v=A8a2EosJIbM", "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].mp4", false, 2, ~U[2018-09-19 09:00:00Z]] 14:14:42.791 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.791 [debug] QUERY OK source="media_items" db=0.2ms idle=3.3ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-10-13 16:00:07Z], 2] 14:14:42.793 [debug] QUERY OK source="media_items" db=1.2ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This Latinx Heritage Month Tiny Desk is celebrating with an 'El Tiny' takeover, featuring a wide array of artists from all corners of Latinidad.\n\nFelix Contreras | October 13, 2023\nThe Tiny Desk had a considerable pop sheen when vocalist Becky G took her place alongside a backing band featuring a string quartet. The stripped down sound of some of her biggest hits offered a rare view of her artistry.\n\n\"BAILÉ CON MI EX\" is the perfect example of an unforgettable hook. It had the NPR staff audience bopping in place for what she described as a \"warm up\" for the rest of her set. \"MAMII\" was originally recorded with Karol G, but performed alone, and the Tiny Desk version was no less a scorcher. Here, interplay with guitarist Justice West at the beginning set the temperature for a slow burn.\n\nThe showstopper is her duet with vocalist DannyLux, \"CRIES IN SPANISH,\" a song they did together on her latest album, Esquinas. I have to admit that when he started his part of the song, it was apparent that their voices were kind of made for eachother. And by the time she obliged us with her Tiny Desk concert take on \"Shower,\" she had cast her spell: I ended up singing that chorus for the rest of the day.\n\nSET LIST\n\"BAILÉ CON MI EX\"\n\"MAMIII\"\n\"CRIES IN SPANISH\" (feat. DannyLux)\n\"Shower\"\n\nMUSICIANS\nBecky G: lead vocals\nMarcus Thomas: drums\nJustus West: guitar\nJames Morales: keys\nEric Whatley: bass\nOlivia Tapia: vocals\nCrystal Osorio: vocals\nNjioma Grevious: violin\nRyo Usami: violin\nBethlehem Hadgu: viola\nMaxfield Fisher: cello\n\nTINY DESK TEAM\nProducer: Anamaria Sayre\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Elizabeth Gillis, Zayrha Rodriguez\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Keren Carrión\nTiny Desk Team: Suraya Mohamed, Joshua Bryant, Hazel Cills \nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #beckyg", "Becky G: Tiny Desk Concert", "31072fee-c5fb-41e4-bc2c-c9bb591187d9", 1261, false, "FftvVi42U4o", "https://www.youtube.com/watch?v=FftvVi42U4o", 34, "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].mp4", false, false, false, 2, [], 1, ~U[2023-10-13 16:00:07Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "This Latinx Heritage Month Tiny Desk is celebrating with an 'El Tiny' takeover, featuring a wide array of artists from all corners of Latinidad.\n\nFelix Contreras | October 13, 2023\nThe Tiny Desk had a considerable pop sheen when vocalist Becky G took her place alongside a backing band featuring a string quartet. The stripped down sound of some of her biggest hits offered a rare view of her artistry.\n\n\"BAILÉ CON MI EX\" is the perfect example of an unforgettable hook. It had the NPR staff audience bopping in place for what she described as a \"warm up\" for the rest of her set. \"MAMII\" was originally recorded with Karol G, but performed alone, and the Tiny Desk version was no less a scorcher. Here, interplay with guitarist Justice West at the beginning set the temperature for a slow burn.\n\nThe showstopper is her duet with vocalist DannyLux, \"CRIES IN SPANISH,\" a song they did together on her latest album, Esquinas. I have to admit that when he started his part of the song, it was apparent that their voices were kind of made for eachother. And by the time she obliged us with her Tiny Desk concert take on \"Shower,\" she had cast her spell: I ended up singing that chorus for the rest of the day.\n\nSET LIST\n\"BAILÉ CON MI EX\"\n\"MAMIII\"\n\"CRIES IN SPANISH\" (feat. DannyLux)\n\"Shower\"\n\nMUSICIANS\nBecky G: lead vocals\nMarcus Thomas: drums\nJustus West: guitar\nJames Morales: keys\nEric Whatley: bass\nOlivia Tapia: vocals\nCrystal Osorio: vocals\nNjioma Grevious: violin\nRyo Usami: violin\nBethlehem Hadgu: viola\nMaxfield Fisher: cello\n\nTINY DESK TEAM\nProducer: Anamaria Sayre\nDirector/Editor: Kara Frame\nAudio Engineer: Josh Rogosin\nCreative Director: Bob Boilen\nSeries Producer: Bobby Carter\nVideographers: Kara Frame, Maia Stern, Elizabeth Gillis, Zayrha Rodriguez\nAudio Assistant: Hannah Gluvna\nProduction Assistant: Ashley Pointer\nPhotographer: Keren Carrión\nTiny Desk Team: Suraya Mohamed, Joshua Bryant, Hazel Cills \nVP, Visuals and Music: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #beckyg", "Becky G: Tiny Desk Concert", 1261, false, "FftvVi42U4o", "https://www.youtube.com/watch?v=FftvVi42U4o", "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].mp4", false, 2, ~U[2023-10-13 16:00:07Z]] 14:14:42.793 [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] 14:14:42.794 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2015-11-09 19:36:11Z], 2] 14:14:42.795 [debug] QUERY OK source="media_items" db=0.9ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["November 09, 2015 by BOB BOILEN The first time I saw Aurora sing, it appeared so new to her that each note, and each hand gesture accompanying each note, seemed like a discovery and an adventure for the singer. She was 18 when I first saw her in New York City, and now the Norwegian singer is 19; take a look at this Tiny Desk Concert, and her sense of innocence and discovery still rings as true as ever.\n\nAurora has just one EP and some singles out so far, and ever since seeing her at CMJ in 2014, I've been eager for her debut album. Early next year, we should finally have it — as well as more chances to see Aurora live, as she plans on touring the U.S. in the spring.\n\nRunning With The Wolves is available now. iTunes:\nhttps://itunes.apple.com/us/album/running-with-the-wolves-ep/id987008667\nAmazon: http://www.amazon.com/Running-With-Wolves-Ep-AURORA/dp/B00WTJK47Y\n\nSet List\n\"Runaway\"\n\"Murder Song (5, 4, 3, 2, 1)\"\n\"Running With The Wolves\"\n\nCredits\nProducers: Bob Boilen, Morgan Walker; Audio Engineer: Brian Jarboe; Videographers: Morgan Walker, Morgan McCloy; Production Assistant: Lani Milton; Photo by Hadas/NPR\n\nFor more Tiny Desks, subscribe to our podcast:\nhttp://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Aurora: NPR Music Tiny Desk Concert", "5cb41d4c-e79a-4b40-a008-79070b8c0bc9", 801, false, "evBgLWQwAFA", "https://www.youtube.com/watch?v=evBgLWQwAFA", 35, "/downloads/Tiny Desk/2015-11-09 Aurora: NPR Music Tiny Desk Concert/Aurora: NPR Music Tiny Desk Concert [evBgLWQwAFA].mp4", false, false, false, 2, [], 1, ~U[2015-11-09 19:36:11Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "November 09, 2015 by BOB BOILEN The first time I saw Aurora sing, it appeared so new to her that each note, and each hand gesture accompanying each note, seemed like a discovery and an adventure for the singer. She was 18 when I first saw her in New York City, and now the Norwegian singer is 19; take a look at this Tiny Desk Concert, and her sense of innocence and discovery still rings as true as ever.\n\nAurora has just one EP and some singles out so far, and ever since seeing her at CMJ in 2014, I've been eager for her debut album. Early next year, we should finally have it — as well as more chances to see Aurora live, as she plans on touring the U.S. in the spring.\n\nRunning With The Wolves is available now. iTunes:\nhttps://itunes.apple.com/us/album/running-with-the-wolves-ep/id987008667\nAmazon: http://www.amazon.com/Running-With-Wolves-Ep-AURORA/dp/B00WTJK47Y\n\nSet List\n\"Runaway\"\n\"Murder Song (5, 4, 3, 2, 1)\"\n\"Running With The Wolves\"\n\nCredits\nProducers: Bob Boilen, Morgan Walker; Audio Engineer: Brian Jarboe; Videographers: Morgan Walker, Morgan McCloy; Production Assistant: Lani Milton; Photo by Hadas/NPR\n\nFor more Tiny Desks, subscribe to our podcast:\nhttp://www.npr.org/podcasts/510292/tiny-desk-concerts-video", "Aurora: NPR Music Tiny Desk Concert", 801, false, "evBgLWQwAFA", "https://www.youtube.com/watch?v=evBgLWQwAFA", "/downloads/Tiny Desk/2015-11-09 Aurora: NPR Music Tiny Desk Concert/Aurora: NPR Music Tiny Desk Concert [evBgLWQwAFA].mp4", false, 2, ~U[2015-11-09 19:36:11Z]] 14:14:42.795 [debug] QUERY OK source="sources" db=0.1ms idle=3.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.796 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2014-10-29 16:03:32Z], 2] 14:14:42.801 [debug] QUERY OK source="media_items" db=4.5ms idle=2.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch T-Pain play \"Buy U A Drank (Shawty Snappin')\", \"Up Down (Do This All Day)\" and \"Drankin' Patna\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nT-Pain's fingerprints are all over pop and R&B and hip-hop. He wasn't the first musician to use Auto-Tune as an instrument — he noticed it on a Jennifer Lopez remix, and remembers \"Deep\" well — but it was, as he says, his style. For a while, in the mid-2000s, he lived at the top of the charts. He dominated that brief moment of our lives when ringtones were a thing. He was celebrated as an innovator, and he happily took his talents where he was invited, which was everywhere.\n\nBut somewhere along the way, somebody got it twisted. \"People felt like I was using it to sound good,\" says T-Pain, in an interview that will air on All Things Considered. \"But I was just using it to sound different.”\n\nHe just turned 30, but T-Pain has already done enough to drop a greatest hits album next week. We asked him if he'd grace the Tiny Desk without any embellishment or effects to show what's really made his career: his voice, and those songs.--FRANNIE KELLEY \n\nSET LIST\n\"Buy U A Drank (Shawty Snappin')\"\n\"Up Down (Do This All Day)\"\n\"Drankin' Patna\"\n\nCREDITS\nProducers: Frannie Kelley, Maggie Starbard; Editor: Maggie Starbard; Audio Engineer: Kevin Wait; Videographers: Colin Marshall, Maggie Starbard; Production Assistant: Susan Hale Thomas; photo by Maggie Starbard/NPR", "T-Pain: NPR Music Tiny Desk Concert", "6fe159cf-ad2d-49e8-b34d-16ab96cbd384", 828, false, "CIjXUg1s5gc", "https://www.youtube.com/watch?v=CIjXUg1s5gc", 36, "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].mp4", false, false, false, 2, [], 1, ~U[2014-10-29 16:03:32Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Watch T-Pain play \"Buy U A Drank (Shawty Snappin')\", \"Up Down (Do This All Day)\" and \"Drankin' Patna\" at the Tiny Desk.\n\nDid you know you can watch new Tiny Desk Concerts on npr.org ONE WEEK before they go up on YouTube? Click here: https://www.npr.org/tinydesk\n\nFollow NPR Music:\nTwitter: https://twitter.com/nprmusic\nInstagram: https://www.instagram.com/nprmusic\n\nT-Pain's fingerprints are all over pop and R&B and hip-hop. He wasn't the first musician to use Auto-Tune as an instrument — he noticed it on a Jennifer Lopez remix, and remembers \"Deep\" well — but it was, as he says, his style. For a while, in the mid-2000s, he lived at the top of the charts. He dominated that brief moment of our lives when ringtones were a thing. He was celebrated as an innovator, and he happily took his talents where he was invited, which was everywhere.\n\nBut somewhere along the way, somebody got it twisted. \"People felt like I was using it to sound good,\" says T-Pain, in an interview that will air on All Things Considered. \"But I was just using it to sound different.”\n\nHe just turned 30, but T-Pain has already done enough to drop a greatest hits album next week. We asked him if he'd grace the Tiny Desk without any embellishment or effects to show what's really made his career: his voice, and those songs.--FRANNIE KELLEY \n\nSET LIST\n\"Buy U A Drank (Shawty Snappin')\"\n\"Up Down (Do This All Day)\"\n\"Drankin' Patna\"\n\nCREDITS\nProducers: Frannie Kelley, Maggie Starbard; Editor: Maggie Starbard; Audio Engineer: Kevin Wait; Videographers: Colin Marshall, Maggie Starbard; Production Assistant: Susan Hale Thomas; photo by Maggie Starbard/NPR", "T-Pain: NPR Music Tiny Desk Concert", 828, false, "CIjXUg1s5gc", "https://www.youtube.com/watch?v=CIjXUg1s5gc", "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].mp4", false, 2, ~U[2014-10-29 16:03:32Z]] 14:14:42.801 [debug] QUERY OK source="sources" db=0.1ms idle=7.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.802 [debug] QUERY OK source="media_items" db=0.2ms idle=6.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2013-09-10 14:49:03Z], 2] 14:14:42.803 [debug] QUERY OK source="media_items" db=0.8ms idle=6.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["As lead singer of the youthful Manchester band The 1975, Matthew Healy has cranked out a batch of enjoyably wiry songs, most notably the singles \"Chocolate\" and \"Sex\" — each of which has attracted more than a million YouTube plays. The group has been bubbling up, here and in the U.K., for the last year or two, as it's toured with Muse and released an album and four EPs full of brash-but-winsome, electronics-tinged pop-rock.\n\nSo The 1975 knows its way around bigness. But, when asked to strip his band's sound down to fit the intimate confines of the Tiny Desk, Healy didn't hesitate to transform both his songs and himself. Performing solo with a guitar — he even goes fully acoustic for his two hits — he's reborn as an earnest troubadour, while his songs now register as melancholy musings. They're remarkably sturdy in any form, as this bit of left-field sweetness amply demonstrates. --STEPHEN THOMPSON\n\nSet List\n\"Sex\"\n\"Chocolate\"\n\"Woman\"\n\nCredits\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The 1975: NPR Music Tiny Desk Concert", "528a98e9-ca9a-4dbc-9fd0-6d2974f78eba", 651, false, "5bIlkpQRyTM", "https://www.youtube.com/watch?v=5bIlkpQRyTM", 37, "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].mp4", false, false, false, 2, [], 1, ~U[2013-09-10 14:49:03Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "As lead singer of the youthful Manchester band The 1975, Matthew Healy has cranked out a batch of enjoyably wiry songs, most notably the singles \"Chocolate\" and \"Sex\" — each of which has attracted more than a million YouTube plays. The group has been bubbling up, here and in the U.K., for the last year or two, as it's toured with Muse and released an album and four EPs full of brash-but-winsome, electronics-tinged pop-rock.\n\nSo The 1975 knows its way around bigness. But, when asked to strip his band's sound down to fit the intimate confines of the Tiny Desk, Healy didn't hesitate to transform both his songs and himself. Performing solo with a guitar — he even goes fully acoustic for his two hits — he's reborn as an earnest troubadour, while his songs now register as melancholy musings. They're remarkably sturdy in any form, as this bit of left-field sweetness amply demonstrates. --STEPHEN THOMPSON\n\nSet List\n\"Sex\"\n\"Chocolate\"\n\"Woman\"\n\nCredits\nProducers: Bob Boilen, Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Parker Miles Blohm, Denise DeBelius, Erica Yoon", "The 1975: NPR Music Tiny Desk Concert", 651, false, "5bIlkpQRyTM", "https://www.youtube.com/watch?v=5bIlkpQRyTM", "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].mp4", false, 2, ~U[2013-09-10 14:49:03Z]] 14:14:42.804 [debug] QUERY OK source="sources" db=0.2ms idle=7.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.804 [debug] QUERY OK source="media_items" db=0.5ms idle=3.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2012-12-03 19:51:47Z], 2] 14:14:42.806 [debug] QUERY OK source="media_items" db=1.0ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Tears and laughter in the span of about 15 minutes — that's what's so astonishing about these Macklemore & Ryan Lewis songs.\n\nThe first time I heard \"Same Love,\" it brought tears to the eyes of a roomful of people, myself included. The song is about equality, specifically gay rights, with an unambiguous message: \"It's human rights for everybody / There is no difference.\" Then, in a flip of a backing-track beat, Macklemore (a.k.a. Ben Haggerty) sings about wearing a velour jumpsuit and some house slippers, \"grandpa style.\"\n\nThe contrast in these songs, \"Same Love\" and \"Thrift Shop,\" makes the levity all that much memorable; as producer, Ryan Lewis is a master at the hook and clever with the melody. But this Tiny Desk Concert didn't end there: The live, sweet, soulful sounds of singer Ray Dalton belting, \"Like the ceiling can't hold us\" had Macklemore standing on my desk and shaking the dust off the ceiling tiles. Watching this video fills me with that inspirational feeling we shared watching it happen: I'm still cleaning dust around my desk, but it only makes me smile. --BOB BOILEN\n\nSet List\n\"Same Love\"\n\"Thrift Shop\"\n\"Can't Hold Us\"\n\nCredits\nProducer: Bob Boilen; Editor: Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Denise DeBelius, Christopher Parks, Lauren Rock; photo by Lauren Rock/NPR", "Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert", "23370548-c68f-4f2d-883d-3c75fe9d9a68", 885, false, "JrEJmvuKSwo", "https://www.youtube.com/watch?v=JrEJmvuKSwo", 38, "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].mp4", false, false, false, 2, [], 1, ~U[2012-12-03 19:51:47Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Tears and laughter in the span of about 15 minutes — that's what's so astonishing about these Macklemore & Ryan Lewis songs.\n\nThe first time I heard \"Same Love,\" it brought tears to the eyes of a roomful of people, myself included. The song is about equality, specifically gay rights, with an unambiguous message: \"It's human rights for everybody / There is no difference.\" Then, in a flip of a backing-track beat, Macklemore (a.k.a. Ben Haggerty) sings about wearing a velour jumpsuit and some house slippers, \"grandpa style.\"\n\nThe contrast in these songs, \"Same Love\" and \"Thrift Shop,\" makes the levity all that much memorable; as producer, Ryan Lewis is a master at the hook and clever with the melody. But this Tiny Desk Concert didn't end there: The live, sweet, soulful sounds of singer Ray Dalton belting, \"Like the ceiling can't hold us\" had Macklemore standing on my desk and shaking the dust off the ceiling tiles. Watching this video fills me with that inspirational feeling we shared watching it happen: I'm still cleaning dust around my desk, but it only makes me smile. --BOB BOILEN\n\nSet List\n\"Same Love\"\n\"Thrift Shop\"\n\"Can't Hold Us\"\n\nCredits\nProducer: Bob Boilen; Editor: Denise DeBelius; Audio Engineer: Kevin Wait; Videographers: Denise DeBelius, Christopher Parks, Lauren Rock; photo by Lauren Rock/NPR", "Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert", 885, false, "JrEJmvuKSwo", "https://www.youtube.com/watch?v=JrEJmvuKSwo", "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].mp4", false, 2, ~U[2012-12-03 19:51:47Z]] 14:14:42.807 [debug] QUERY OK source="sources" db=1.0ms 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] 14:14:42.808 [debug] QUERY OK source="media_items" db=0.7ms idle=4.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2011-09-13 03:53:16Z], 2] 14:14:42.809 [debug] QUERY OK source="media_items" db=0.7ms idle=4.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Armed with the summer song of 2011, the band brings \"Pumped Up Kicks\" and more to NPR Music.\n\nSet List:\n\"Houdini\"\n\"Helena Beat\"\n\"Pumped Up Kicks\"\n\nFor more videos and to subscribe to the Tiny Desk Concerts podcast, visit npr.org/tinydeskconcerts.", "Foster The People: NPR Music Tiny Desk Concert", "1e0ccdf7-4fa0-46af-9d74-7c17fcc3e5b4", 637, false, "kMnDHUKGMWs", "https://www.youtube.com/watch?v=kMnDHUKGMWs", 39, "/downloads/Tiny Desk/2011-09-13 Foster The People: NPR Music Tiny Desk Concert/Foster The People: NPR Music Tiny Desk Concert [kMnDHUKGMWs].mp4", false, false, false, 2, [], 1, ~U[2011-09-13 03:53:16Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Armed with the summer song of 2011, the band brings \"Pumped Up Kicks\" and more to NPR Music.\n\nSet List:\n\"Houdini\"\n\"Helena Beat\"\n\"Pumped Up Kicks\"\n\nFor more videos and to subscribe to the Tiny Desk Concerts podcast, visit npr.org/tinydeskconcerts.", "Foster The People: NPR Music Tiny Desk Concert", 637, false, "kMnDHUKGMWs", "https://www.youtube.com/watch?v=kMnDHUKGMWs", "/downloads/Tiny Desk/2011-09-13 Foster The People: NPR Music Tiny Desk Concert/Foster The People: NPR Music Tiny Desk Concert [kMnDHUKGMWs].mp4", false, 2, ~U[2011-09-13 03:53:16Z]] 14:14:42.810 [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" = ?) [2] 14:14:42.810 [debug] QUERY OK source="media_items" db=0.4ms idle=4.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2009-11-02 20:48:16Z], 2] 14:14:42.811 [debug] QUERY OK source="media_items" db=0.8ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Edward Sharpe & The Magnetic Zeros can't exactly slip into an office building unnoticed: Clad in the same clothes they'd worn at a concert the night before, the L.A. band's 10 ragtag misfits would have fit in far more seamlessly at, say, Burning Man. Seeming to exist in a blissed-out alternate universe — during the wonderful \"Home,\" singer Jade Castrinos exclaims, \"Good morning, everybody!\" as the clock behind her reads 2:10 p.m. — this is a band whose performances beg to be seen as well as heard, not to mention shot through a wide-angle lens.\r\n\r\nThe biggest band to play a Tiny Desk Concert - the 10 members of The Magnetic Zeroes played three songs from their debut album (Up From Below).\r\n\r\nThe set included:\r\n - Janglin\r\n - Home\r\n - 40 Day Daydream", "Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert", "95cd8cf5-148b-4f20-b5b7-1467f239d095", 884, false, "XWIvfE01J0k", "https://www.youtube.com/watch?v=XWIvfE01J0k", 40, "/downloads/Tiny Desk/2009-11-02 Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert/Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert [XWIvfE01J0k].mp4", false, false, false, 2, [], 1, ~U[2009-11-02 20:48:16Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Edward Sharpe & The Magnetic Zeros can't exactly slip into an office building unnoticed: Clad in the same clothes they'd worn at a concert the night before, the L.A. band's 10 ragtag misfits would have fit in far more seamlessly at, say, Burning Man. Seeming to exist in a blissed-out alternate universe — during the wonderful \"Home,\" singer Jade Castrinos exclaims, \"Good morning, everybody!\" as the clock behind her reads 2:10 p.m. — this is a band whose performances beg to be seen as well as heard, not to mention shot through a wide-angle lens.\r\n\r\nThe biggest band to play a Tiny Desk Concert - the 10 members of The Magnetic Zeroes played three songs from their debut album (Up From Below).\r\n\r\nThe set included:\r\n - Janglin\r\n - Home\r\n - 40 Day Daydream", "Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert", 884, false, "XWIvfE01J0k", "https://www.youtube.com/watch?v=XWIvfE01J0k", "/downloads/Tiny Desk/2009-11-02 Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert/Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert [XWIvfE01J0k].mp4", false, 2, ~U[2009-11-02 20:48:16Z]] 14:14:42.812 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [2] 14:14:42.813 [debug] QUERY OK source="media_items" db=0.4ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-12-01 10:00:18Z], 2] 14:14:42.815 [debug] QUERY OK source="media_items" db=1.3ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBob Boilen | December 1, 2021\nNo other band has brought me more joy in 2021 than Wet Leg, and I truly needed joy in 2021. When \"Chaise Longue,\" came out in June, it felt like a gift. It's rare to hear a band's very first song sound as perfect as this one did, but that's part of the magic that Wet Leg exudes. Two dear friends – Rhian Teasdale and Hester Chambers — making music to make each other smile, then watching that smile spread as audiences catch on.\n\nThat song has a few deadpan lines lifted from the film Mean Girls: \"Is your muffin buttered? Would you like us to assign someone to butter your muffin?\" There's a golden moment in this Tiny Desk (home) concert when Rhian turns to Hester with the line, \"Excuse me,\" while Hester responds dryly, \"What?\" Setting off a knowing smile back and forth made me love the band even more. They were gathered together at The Ventnor Exchange, a creative arts space/record shop/bar/venue on the Isle of Wight, their home turf. And their band – Henry Holmes on drums, Ellis Durand on bass and Josh Mobaraki on guitar and synth – amplify the rock and droll sound Rhian and Hester personify.\n\nThey've just announced the April 8 release date for their debut album, more tour dates, and shared two new songs, which you'll also hear them perform here. The new songs don't stray far from the two they'd previously released, which bookend this Tiny Desk (home) concert. Part of the footage was filmed on VHS tape, a bit of a wink toward their sound, which has roots in the '70s. It's not nostalgic, but it is playfully wistful.\n\nSET LIST\n\"Chaise Longue\"\n\"Too Late Now\"\n\"Oh No\"\n\"Wet Dream\"\n\nMUSICIANS\nHester Chambers: vocals, guitar\nRhian Teasdale: guitar, backup vocals\nHenry Holmes: drums\nEllis Durand: bass\nJosh Mobaraki: guitar, synth\n\nCREDITS\nVideo: Joey Julliard, Oliver Bury, Josh Mobaraki\nAudio: Patrick Lee, Josh Mobaraki\nSpecial thanks: The Ventnor Exchange, Ventnor, Isle of Wight\n\nTINY DESK TEAM\nProducer: Bob Boilen\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bobby Carter, Kara Frame, Sofie Hernandez-Simeonidis\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #wetleg", "Wet Leg: Tiny Desk (Home) Concert", "31172c5a-ad65-4864-a593-419fbf22feff", 783, false, "bJUUnXZVIfY", "https://www.youtube.com/watch?v=bJUUnXZVIfY", 41, "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].mp4", false, false, false, 2, [], 1, ~U[2021-12-01 10:00:18Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBob Boilen | December 1, 2021\nNo other band has brought me more joy in 2021 than Wet Leg, and I truly needed joy in 2021. When \"Chaise Longue,\" came out in June, it felt like a gift. It's rare to hear a band's very first song sound as perfect as this one did, but that's part of the magic that Wet Leg exudes. Two dear friends – Rhian Teasdale and Hester Chambers — making music to make each other smile, then watching that smile spread as audiences catch on.\n\nThat song has a few deadpan lines lifted from the film Mean Girls: \"Is your muffin buttered? Would you like us to assign someone to butter your muffin?\" There's a golden moment in this Tiny Desk (home) concert when Rhian turns to Hester with the line, \"Excuse me,\" while Hester responds dryly, \"What?\" Setting off a knowing smile back and forth made me love the band even more. They were gathered together at The Ventnor Exchange, a creative arts space/record shop/bar/venue on the Isle of Wight, their home turf. And their band – Henry Holmes on drums, Ellis Durand on bass and Josh Mobaraki on guitar and synth – amplify the rock and droll sound Rhian and Hester personify.\n\nThey've just announced the April 8 release date for their debut album, more tour dates, and shared two new songs, which you'll also hear them perform here. The new songs don't stray far from the two they'd previously released, which bookend this Tiny Desk (home) concert. Part of the footage was filmed on VHS tape, a bit of a wink toward their sound, which has roots in the '70s. It's not nostalgic, but it is playfully wistful.\n\nSET LIST\n\"Chaise Longue\"\n\"Too Late Now\"\n\"Oh No\"\n\"Wet Dream\"\n\nMUSICIANS\nHester Chambers: vocals, guitar\nRhian Teasdale: guitar, backup vocals\nHenry Holmes: drums\nEllis Durand: bass\nJosh Mobaraki: guitar, synth\n\nCREDITS\nVideo: Joey Julliard, Oliver Bury, Josh Mobaraki\nAudio: Patrick Lee, Josh Mobaraki\nSpecial thanks: The Ventnor Exchange, Ventnor, Isle of Wight\n\nTINY DESK TEAM\nProducer: Bob Boilen\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bobby Carter, Kara Frame, Sofie Hernandez-Simeonidis\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #wetleg", "Wet Leg: Tiny Desk (Home) Concert", 783, false, "bJUUnXZVIfY", "https://www.youtube.com/watch?v=bJUUnXZVIfY", "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].mp4", false, 2, ~U[2021-12-01 10:00:18Z]] 14:14:42.815 [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" = ?) [2] 14:14:42.815 [debug] QUERY OK source="media_items" db=0.2ms idle=3.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-10-26 16:00:10Z], 2] 14:14:42.817 [debug] QUERY OK source="media_items" db=1.3ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | October 26, 2021\nDecked in a hoodie, cargo pants and coveted sneakers, a slimmed-down and clean-shaven Ed Sheeran stands surrounded by bookshelves and a host of world-class musicians. He’s flanked by music director to the stars, Adam Blackstone, who assembled the band and handled bass guitar duties. After opening this Tiny Desk (home) concert with his latest single, “Shivers,” Sheeran introduces himself and proceeds with more hits, new tunes, and a surprise throwback. \n\nThe English singer-songwriter may appear acclimated to a live band, but it’s a pretty rare occasion. For more than a decade, Sheeran’s become revered for ripping down stadiums, but usually (and remarkably) it’s just him, a guitar and loop pedals.\n\nThe material released so far from his upcoming album, = (out Oct. 29), leans heavily into the ’80s pop sphere and provides glimpses into Sheeran’s personal life during his time away. Here, he debuts “Overpass Graffiti,” an uptempo ode to the endurance of long love. “Visiting Hours” is a heartfelt dedication to his close friend and mentor, Australian record executive Michael Gudinski, who passed away in March. \n\nAlthough most of the setlist honors =, Sheeran veers momentarily to take us to church with 2014’s “Make It Rain” from the TV show Sons of Anarchy. The choir only takes up a smidgen of physical real estate, but their voices manage to engulf the entire space, propelling the song to another stratosphere. He closes the performance with a quiet storm version of his summer single “Bad Habits.”\n\nSET LIST\n* “Shivers”\n* “Make It Rain”\n* “Overpass Graffiti”\n* “Visiting Hours”\n* “Bad Habits”\n\nMUSICIANS\n* Adam Blackstone: musical director/bass\n* Terence Vaughn: keys\n* Tim Stewart: guitar\n* Clay Sears: guitar\n* Brian Frasier-Moore: drums\n* Rayfield Holloman: pedal steel guitar\n* Whitney Smith: vocals\n* Raphael Smith: vocals\n* Melissa Best: vocals\n* Antia Coach: vocals\n* Melany Watson: vocals\n* Kyron Elcock: vocals\n* Raymond Mason: trombone\n* Michael Leonhart: trumpet\n* Sam Greenfield: saxophone\n\nCREDITS\n* Video: Chadrick Fellers, Jeremy Ivory-Chambers, Porous Porousfreak\n* Audio: Tyrell Ace Clark, James Hardy-Martin, Douglas Touré Harris\n\nTINY DESK TEAM\n* Producer: Bobby Carter\n* Video Producer: Kara Frame\n* Audio Mastering: Josh Rogosin\n* Tiny Production Team: Bob Boilen, Bobby Carter, Maia Stern, Sofie Hernandez-Simeonidis\n* Executive Producer: Keith Jenkins\n* Senior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #edsheeran", "Ed Sheeran: Tiny Desk (Home) Concert", "9a7c128f-3ace-42de-9ef3-cf682daece6e", 1357, false, "4MsoqUv5gv4", "https://www.youtube.com/watch?v=4MsoqUv5gv4", 42, "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].mp4", false, false, false, 2, [], 1, ~U[2021-10-26 16:00:10Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | October 26, 2021\nDecked in a hoodie, cargo pants and coveted sneakers, a slimmed-down and clean-shaven Ed Sheeran stands surrounded by bookshelves and a host of world-class musicians. He’s flanked by music director to the stars, Adam Blackstone, who assembled the band and handled bass guitar duties. After opening this Tiny Desk (home) concert with his latest single, “Shivers,” Sheeran introduces himself and proceeds with more hits, new tunes, and a surprise throwback. \n\nThe English singer-songwriter may appear acclimated to a live band, but it’s a pretty rare occasion. For more than a decade, Sheeran’s become revered for ripping down stadiums, but usually (and remarkably) it’s just him, a guitar and loop pedals.\n\nThe material released so far from his upcoming album, = (out Oct. 29), leans heavily into the ’80s pop sphere and provides glimpses into Sheeran’s personal life during his time away. Here, he debuts “Overpass Graffiti,” an uptempo ode to the endurance of long love. “Visiting Hours” is a heartfelt dedication to his close friend and mentor, Australian record executive Michael Gudinski, who passed away in March. \n\nAlthough most of the setlist honors =, Sheeran veers momentarily to take us to church with 2014’s “Make It Rain” from the TV show Sons of Anarchy. The choir only takes up a smidgen of physical real estate, but their voices manage to engulf the entire space, propelling the song to another stratosphere. He closes the performance with a quiet storm version of his summer single “Bad Habits.”\n\nSET LIST\n* “Shivers”\n* “Make It Rain”\n* “Overpass Graffiti”\n* “Visiting Hours”\n* “Bad Habits”\n\nMUSICIANS\n* Adam Blackstone: musical director/bass\n* Terence Vaughn: keys\n* Tim Stewart: guitar\n* Clay Sears: guitar\n* Brian Frasier-Moore: drums\n* Rayfield Holloman: pedal steel guitar\n* Whitney Smith: vocals\n* Raphael Smith: vocals\n* Melissa Best: vocals\n* Antia Coach: vocals\n* Melany Watson: vocals\n* Kyron Elcock: vocals\n* Raymond Mason: trombone\n* Michael Leonhart: trumpet\n* Sam Greenfield: saxophone\n\nCREDITS\n* Video: Chadrick Fellers, Jeremy Ivory-Chambers, Porous Porousfreak\n* Audio: Tyrell Ace Clark, James Hardy-Martin, Douglas Touré Harris\n\nTINY DESK TEAM\n* Producer: Bobby Carter\n* Video Producer: Kara Frame\n* Audio Mastering: Josh Rogosin\n* Tiny Production Team: Bob Boilen, Bobby Carter, Maia Stern, Sofie Hernandez-Simeonidis\n* Executive Producer: Keith Jenkins\n* Senior VP, Programming: Anya Grundmann\n\n#tinydesk #nprmusic #edsheeran", "Ed Sheeran: Tiny Desk (Home) Concert", 1357, false, "4MsoqUv5gv4", "https://www.youtube.com/watch?v=4MsoqUv5gv4", "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].mp4", false, 2, ~U[2021-10-26 16:00:10Z]] 14:14:42.818 [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] 14:14:42.818 [debug] QUERY OK source="media_items" db=0.5ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-09-03 09:00:24Z], 2] 14:14:42.820 [debug] QUERY OK source="media_items" db=1.4ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nSidney Madden | September 3, 2021\n\"I like having a band,\" Rico Nasty says with a giggle midway through her Tiny Desk (home) concert. \"Especially when it's all girls.\"\n\nAs an artist known to mash up the genres of rap, rock and pop — and create a safe space for women to do the same — Rico has rarely gotten the chance to put this full artistic collision on display. For her Tiny Desk debut, Rico takes every opportunity to flex her rage and range.\n\nDressed as if she's the main character out of a Tim Burton adaptation of Candyland, Rico bounces around her varied discography, never letting the audience get too comfortable with one sound. Starting off with one of her most recent cuts, the soft, surf rock-inspired \"Magic,\" the magnetic performer pulls a switch-up on viewers by jumping into some of her more raucous bangers, the type that would normally incite a sweaty mosh pit at her concerts. Of course, she closes the set with a shredding version of her breakout single, the primal scream mantra of \"Smack A Bitch.\" The high-energy display evokes childlike joy and confection just as much as it does unapologetic savagery. \"I don't know where you at, where you watching this,\" Rico smirks at one point. \"You better break some s***.\"\n\nSince her early mixtape days all the way up to her 2020 debut album, Nightmare Vacation, Rico has waded in sonic dichotomy to blend her signature sound, deemed \"sugar trap,\" and in the process, became a beacon for women in rap to eloquently express their anger. As one of the DMV's most formidable forces, Rico always compels her fans to jump up, take charge and never apologize for what they feel.\n\nSET LIST\n\"Magic\"\n\"Rage\"\n\"OHFR?\"\n\"Trust Issues\"\n\"Smack a Bitch\"\n\nMUSICIANS\nRico Nasty: vocals\nLanita Smith: keys\nTiffani Walker: drummer\nKyla Wright: bassist\nLiso Lee: guitarist\nRodney Jones Jr.: MD\n\nCREDITS\nVideo: Lia B, Evan Avtal, Denis Rudchenko, Benjamin Meserve, Wayan Palmieri\nAudio: Cole Nystrom\n\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Bobby Carter, Kara Frame, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #riconasty", "Rico Nasty: Tiny Desk (Home) Concert", "c0386df5-a01c-4bf7-8a07-2f8a0b42c95d", 817, false, "z3ZFoo4-TdU", "https://www.youtube.com/watch?v=z3ZFoo4-TdU", 43, "/downloads/Tiny Desk/2021-09-03 Rico Nasty: Tiny Desk (Home) Concert/Rico Nasty: Tiny Desk (Home) Concert [z3ZFoo4-TdU].mp4", false, false, false, 2, [], 1, ~U[2021-09-03 09:00:24Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nSidney Madden | September 3, 2021\n\"I like having a band,\" Rico Nasty says with a giggle midway through her Tiny Desk (home) concert. \"Especially when it's all girls.\"\n\nAs an artist known to mash up the genres of rap, rock and pop — and create a safe space for women to do the same — Rico has rarely gotten the chance to put this full artistic collision on display. For her Tiny Desk debut, Rico takes every opportunity to flex her rage and range.\n\nDressed as if she's the main character out of a Tim Burton adaptation of Candyland, Rico bounces around her varied discography, never letting the audience get too comfortable with one sound. Starting off with one of her most recent cuts, the soft, surf rock-inspired \"Magic,\" the magnetic performer pulls a switch-up on viewers by jumping into some of her more raucous bangers, the type that would normally incite a sweaty mosh pit at her concerts. Of course, she closes the set with a shredding version of her breakout single, the primal scream mantra of \"Smack A Bitch.\" The high-energy display evokes childlike joy and confection just as much as it does unapologetic savagery. \"I don't know where you at, where you watching this,\" Rico smirks at one point. \"You better break some s***.\"\n\nSince her early mixtape days all the way up to her 2020 debut album, Nightmare Vacation, Rico has waded in sonic dichotomy to blend her signature sound, deemed \"sugar trap,\" and in the process, became a beacon for women in rap to eloquently express their anger. As one of the DMV's most formidable forces, Rico always compels her fans to jump up, take charge and never apologize for what they feel.\n\nSET LIST\n\"Magic\"\n\"Rage\"\n\"OHFR?\"\n\"Trust Issues\"\n\"Smack a Bitch\"\n\nMUSICIANS\nRico Nasty: vocals\nLanita Smith: keys\nTiffani Walker: drummer\nKyla Wright: bassist\nLiso Lee: guitarist\nRodney Jones Jr.: MD\n\nCREDITS\nVideo: Lia B, Evan Avtal, Denis Rudchenko, Benjamin Meserve, Wayan Palmieri\nAudio: Cole Nystrom\n\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Bobby Carter, Kara Frame, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #riconasty", "Rico Nasty: Tiny Desk (Home) Concert", 817, false, "z3ZFoo4-TdU", "https://www.youtube.com/watch?v=z3ZFoo4-TdU", "/downloads/Tiny Desk/2021-09-03 Rico Nasty: Tiny Desk (Home) Concert/Rico Nasty: Tiny Desk (Home) Concert [z3ZFoo4-TdU].mp4", false, 2, ~U[2021-09-03 09:00:24Z]] 14:14:42.821 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.821 [debug] QUERY OK source="media_items" db=0.2ms idle=3.8ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-07-23 16:00:27Z], 2] 14:14:42.823 [debug] QUERY OK source="media_items" db=1.4ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | July 23, 2021\nAt the midpoint of Vince Staples' Tiny Desk (home) concert, he gazes through the sun-soaked windows of his Hollywood Hills location and pauses. \"You should see this view – I don't live here,\" he exclaims with pride. \"I would never live here.\" As to why he wouldn't give in to the spoils of success and relocate to a fancy spot in the Hills or Calabasas, he explains in the lyrics of the song that follows, \"THE SHINING\": I could never do it / I'm too active. That sentiment, the push-pull relationship with his North Long Beach home base, is a dominant theme of his new self-titled album, which he tells NPR is \"the clearest expression yet of who he is.\"\n\nDespite years-long demand from our audience on YouTube, this was the perfect time for a Vince Staples Tiny Desk performance. We've very rarely seen him perform with a band in the past. Then there's the sound of his new work – Kenny Beats, seen playing bass, handled the bulk of the production of the album, Staples' most melodic to date. The band, outfitted in blue khaki suits, was able to recreate the sound of Vince Staples seamlessly (it's mostly made up of players from the album), and coast wonderfully through this four-song set, punctuated by Vince's signature, tongue-in-cheek humor between songs. Always willing to share the spotlight with future stars (see Snoh Aalegra), he closes with the assistance of another on the horizon, the singer Fousheé, on \"TAKE ME HOME.\"\n\nSET LIST\n\"LAW OF AVERAGES\"\n\"SUNDOWN TOWN\"\n\"THE SHINING\"\n\"TAKE ME HOME\" (featuring Fousheé)\n\nMUSICIANS\nVince Staples: vocals\nKenny Beats: bass\nGio \"Dutchboi\" Ligeon: guitar, vocals\nReske: keys, vocals\nDavid Meyers Jr.: drums\nFousheé: vocals\n\nCREDITS\nVideo: Keaton Kinnaman, Jak Bannon, and Jess Colquhoun\nAudio: Tyler Page\nExecutive Producer: Corey \"Blacksmith\" Smyth\nProducer: Emily Hillgren\nCreative Directors: Travis Brothers and Bryan Rivera\nDirector of Photography: Charlie Owens\nProduction Assistants: Meghan Matthews and Colin Martin\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producer: Maia Stern\nAudio Mastering: Alex Drewenskus\nTiny Production Team: Bob Boilen, Kara Frame, Josh Rogosin, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #vincestaples", "Vince Staples: Tiny Desk (Home) Concert", "df8e9157-70f2-43ce-9ba1-d167267bc192", 718, false, "yN0I5xTjaGo", "https://www.youtube.com/watch?v=yN0I5xTjaGo", 44, "/downloads/Tiny Desk/2021-07-23 Vince Staples: Tiny Desk (Home) Concert/Vince Staples: Tiny Desk (Home) Concert [yN0I5xTjaGo].mp4", false, false, false, 2, [], 1, ~U[2021-07-23 16:00:27Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | July 23, 2021\nAt the midpoint of Vince Staples' Tiny Desk (home) concert, he gazes through the sun-soaked windows of his Hollywood Hills location and pauses. \"You should see this view – I don't live here,\" he exclaims with pride. \"I would never live here.\" As to why he wouldn't give in to the spoils of success and relocate to a fancy spot in the Hills or Calabasas, he explains in the lyrics of the song that follows, \"THE SHINING\": I could never do it / I'm too active. That sentiment, the push-pull relationship with his North Long Beach home base, is a dominant theme of his new self-titled album, which he tells NPR is \"the clearest expression yet of who he is.\"\n\nDespite years-long demand from our audience on YouTube, this was the perfect time for a Vince Staples Tiny Desk performance. We've very rarely seen him perform with a band in the past. Then there's the sound of his new work – Kenny Beats, seen playing bass, handled the bulk of the production of the album, Staples' most melodic to date. The band, outfitted in blue khaki suits, was able to recreate the sound of Vince Staples seamlessly (it's mostly made up of players from the album), and coast wonderfully through this four-song set, punctuated by Vince's signature, tongue-in-cheek humor between songs. Always willing to share the spotlight with future stars (see Snoh Aalegra), he closes with the assistance of another on the horizon, the singer Fousheé, on \"TAKE ME HOME.\"\n\nSET LIST\n\"LAW OF AVERAGES\"\n\"SUNDOWN TOWN\"\n\"THE SHINING\"\n\"TAKE ME HOME\" (featuring Fousheé)\n\nMUSICIANS\nVince Staples: vocals\nKenny Beats: bass\nGio \"Dutchboi\" Ligeon: guitar, vocals\nReske: keys, vocals\nDavid Meyers Jr.: drums\nFousheé: vocals\n\nCREDITS\nVideo: Keaton Kinnaman, Jak Bannon, and Jess Colquhoun\nAudio: Tyler Page\nExecutive Producer: Corey \"Blacksmith\" Smyth\nProducer: Emily Hillgren\nCreative Directors: Travis Brothers and Bryan Rivera\nDirector of Photography: Charlie Owens\nProduction Assistants: Meghan Matthews and Colin Martin\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producer: Maia Stern\nAudio Mastering: Alex Drewenskus\nTiny Production Team: Bob Boilen, Kara Frame, Josh Rogosin, Gabrielle Pierre\nExecutive Producer: Keith Jenkins\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #vincestaples", "Vince Staples: Tiny Desk (Home) Concert", 718, false, "yN0I5xTjaGo", "https://www.youtube.com/watch?v=yN0I5xTjaGo", "/downloads/Tiny Desk/2021-07-23 Vince Staples: Tiny Desk (Home) Concert/Vince Staples: Tiny Desk (Home) Concert [yN0I5xTjaGo].mp4", false, 2, ~U[2021-07-23 16:00:27Z]] 14:14:42.823 [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" = ?) [2] 14:14:42.824 [debug] QUERY OK source="media_items" db=0.2ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-04-14 16:00:12Z], 2] 14:14:42.826 [debug] QUERY OK source="media_items" db=1.3ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nLyndsey McKenna | April 14, 2021\nA few years ago, some of us on the NPR Music team stumbled upon a copy of Demi Lovato's 2013 book, Staying Strong: 365 Days A Year. Reading Lovato's heartfelt daily reflections became a workday habit; her transparency and vulnerability made us ardent admirers who wanted nothing but the very best for Demi.\n\nWe made it our mission to get Demi to the Tiny Desk, and though the pandemic had other plans, Lovato's Tiny Desk (home) concert was worth the wait. Recorded on a sunny spring day in her Los Angeles backyard, Lovato begins with a moving rendition of \"Tell Me You Love Me\" from her 2017 record of the same name, accompanied by subtle, sparse keys. She continues her set with the title tracks from her recently-released studio album, Dancing With The Devil...The Art Of Starting Over. On both tracks, Lovato's voice feels stabilizing and grounding; there's a sense of clarity and purpose in its power.\n\nWhen interviewed by NPR's Ailsa Chang back in 2017, Demi Lovato said, \"I think I've lived a lot of life.\" Through both her struggles and successes, Lovato's shown all sides of herself – the confident and unapologetic star, but also the complexities of recovery – inviting us on her journey in a deeply personal way. Her intimate (home) concert feels like a natural extension of that sincerity.\n\nSET LIST\n\"Tell Me You Love Me\"\n\"The Art Of Starting Over\"\n\"Dancing With The Devil\"\n\nMUSICIANS\nDemi Lovato: vocals\nSteven \"Styles\" Rodriguez: keys\n\nCREDITS\nDirector: Mike Drew\nEditor: Aaron Kroger\nEngineer/Shader: David Vega\nCamera Operator: Austin Wavra\nCamera Operator: Noel Galan\nCamera Operator: Drew Welker\nAssistant Camera: Lawrence Montemayor\nAudio : Steven \"Styles\" Rodriguez\n\nTINY DESK TEAM\nProducers: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Kara Frame, Bob Boilen\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #demilovato", "Demi Lovato: Tiny Desk (Home) Concert", "7e5dd213-dd8a-4a82-9c6b-d69b8db9a5a3", 729, false, "Ehw07lXL1AY", "https://www.youtube.com/watch?v=Ehw07lXL1AY", 45, "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].mp4", false, false, false, 2, [], 1, ~U[2021-04-14 16:00:12Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nLyndsey McKenna | April 14, 2021\nA few years ago, some of us on the NPR Music team stumbled upon a copy of Demi Lovato's 2013 book, Staying Strong: 365 Days A Year. Reading Lovato's heartfelt daily reflections became a workday habit; her transparency and vulnerability made us ardent admirers who wanted nothing but the very best for Demi.\n\nWe made it our mission to get Demi to the Tiny Desk, and though the pandemic had other plans, Lovato's Tiny Desk (home) concert was worth the wait. Recorded on a sunny spring day in her Los Angeles backyard, Lovato begins with a moving rendition of \"Tell Me You Love Me\" from her 2017 record of the same name, accompanied by subtle, sparse keys. She continues her set with the title tracks from her recently-released studio album, Dancing With The Devil...The Art Of Starting Over. On both tracks, Lovato's voice feels stabilizing and grounding; there's a sense of clarity and purpose in its power.\n\nWhen interviewed by NPR's Ailsa Chang back in 2017, Demi Lovato said, \"I think I've lived a lot of life.\" Through both her struggles and successes, Lovato's shown all sides of herself – the confident and unapologetic star, but also the complexities of recovery – inviting us on her journey in a deeply personal way. Her intimate (home) concert feels like a natural extension of that sincerity.\n\nSET LIST\n\"Tell Me You Love Me\"\n\"The Art Of Starting Over\"\n\"Dancing With The Devil\"\n\nMUSICIANS\nDemi Lovato: vocals\nSteven \"Styles\" Rodriguez: keys\n\nCREDITS\nDirector: Mike Drew\nEditor: Aaron Kroger\nEngineer/Shader: David Vega\nCamera Operator: Austin Wavra\nCamera Operator: Noel Galan\nCamera Operator: Drew Welker\nAssistant Camera: Lawrence Montemayor\nAudio : Steven \"Styles\" Rodriguez\n\nTINY DESK TEAM\nProducers: Abby O'Neill\nVideo Producer: Maia Stern\nAudio Mastering: Josh Rogosin\nAssociate Producer: Bobby Carter\nTiny Production Team: Kara Frame, Bob Boilen\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#nprmusic #tinydesk #demilovato", "Demi Lovato: Tiny Desk (Home) Concert", 729, false, "Ehw07lXL1AY", "https://www.youtube.com/watch?v=Ehw07lXL1AY", "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].mp4", false, 2, ~U[2021-04-14 16:00:12Z]] 14:14:42.826 [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] 14:14:42.827 [debug] QUERY OK source="media_items" db=0.2ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-03-22 16:00:11Z], 2] 14:14:42.828 [debug] QUERY OK source="media_items" db=1.2ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAbby O’Neill | March 22, 2021\nMusic icon\u00A0Sting\u00A0returns to Tiny Desk with a new collaborator in tow, and the story is heartwarming. During the pandemic, Beninese pop star\u00A0Shirazee\u00A0adapted his own rendition of Sting's classic \"Englishman in New York\" into \"African in New York.\" His version made its way to Sting, who loved it so much that he asked Shirazee to lend his voice to his Tiny Desk (home) concert and record for his new\u00A0Duets\u00A0album.\n\nTheir chemistry feels natural and just as comforting as this long overdue sunshine after a grueling winter. Shot in a lounge in NYC where Sting's presently recording another album, these two gentlemen share a touching moment between songs, expressing their mutual admiration and discussing the sheer joy about a simple concept – performing in a room together after 12 long months of isolation and virtual collaborations.\n\nAs a follow up, Sting jumps into a stunning acoustic performance of \"If I Ever Lose My Faith in You,\" another one of his many classics. The timbre of his voice conjures a sense of carefree familiarity, reminiscent of times with more levity and peace. His finale, \"Sister Moon,\" is a gem from his 1987 solo album,\u00A0Nothing Like the Sun,\u00A0that rarely gets performed live.\n\nSET LIST\n • \"Englishman/African in New York\"\n • \"If I Ever Lose My Faith in You\"\n • \"Sister Moon\"\n\nMUSICIANS\n • Sting: vocals, guitar\n • Shirazee: vocals\n\nCREDITS\n • Video:\u00A0Modern Day Auteur, Franz Brun, Martin Kierszenbaum\n • Audio: Tony Lake\n\nTINY DESK TEAM\n • Producer: Abby O'Neill\n • Video Producer: Maia Stern\n • Audio Mastering: Josh Rogosin\n • Associate Producer: Bobby Carter\n • Tiny Production Team: Bob Boilen, Kara Frame\n • Executive Producer: Lauren Onkey\n • Senior VP, Programming: Anya Grundmann\n\n#sting #tinydesk #nprmusic", "Sting: Tiny Desk (Home) Concert", "eacb627d-aebf-47db-b54e-eba8ad4500ef", 741, false, "87_1W4P1F2A", "https://www.youtube.com/watch?v=87_1W4P1F2A", 46, "/downloads/Tiny Desk/2021-03-22 Sting: Tiny Desk (Home) Concert/Sting: Tiny Desk (Home) Concert [87_1W4P1F2A].mp4", false, false, false, 2, [], 1, ~U[2021-03-22 16:00:11Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAbby O’Neill | March 22, 2021\nMusic icon\u00A0Sting\u00A0returns to Tiny Desk with a new collaborator in tow, and the story is heartwarming. During the pandemic, Beninese pop star\u00A0Shirazee\u00A0adapted his own rendition of Sting's classic \"Englishman in New York\" into \"African in New York.\" His version made its way to Sting, who loved it so much that he asked Shirazee to lend his voice to his Tiny Desk (home) concert and record for his new\u00A0Duets\u00A0album.\n\nTheir chemistry feels natural and just as comforting as this long overdue sunshine after a grueling winter. Shot in a lounge in NYC where Sting's presently recording another album, these two gentlemen share a touching moment between songs, expressing their mutual admiration and discussing the sheer joy about a simple concept – performing in a room together after 12 long months of isolation and virtual collaborations.\n\nAs a follow up, Sting jumps into a stunning acoustic performance of \"If I Ever Lose My Faith in You,\" another one of his many classics. The timbre of his voice conjures a sense of carefree familiarity, reminiscent of times with more levity and peace. His finale, \"Sister Moon,\" is a gem from his 1987 solo album,\u00A0Nothing Like the Sun,\u00A0that rarely gets performed live.\n\nSET LIST\n • \"Englishman/African in New York\"\n • \"If I Ever Lose My Faith in You\"\n • \"Sister Moon\"\n\nMUSICIANS\n • Sting: vocals, guitar\n • Shirazee: vocals\n\nCREDITS\n • Video:\u00A0Modern Day Auteur, Franz Brun, Martin Kierszenbaum\n • Audio: Tony Lake\n\nTINY DESK TEAM\n • Producer: Abby O'Neill\n • Video Producer: Maia Stern\n • Audio Mastering: Josh Rogosin\n • Associate Producer: Bobby Carter\n • Tiny Production Team: Bob Boilen, Kara Frame\n • Executive Producer: Lauren Onkey\n • Senior VP, Programming: Anya Grundmann\n\n#sting #tinydesk #nprmusic", "Sting: Tiny Desk (Home) Concert", 741, false, "87_1W4P1F2A", "https://www.youtube.com/watch?v=87_1W4P1F2A", "/downloads/Tiny Desk/2021-03-22 Sting: Tiny Desk (Home) Concert/Sting: Tiny Desk (Home) Concert [87_1W4P1F2A].mp4", false, 2, ~U[2021-03-22 16:00:11Z]] 14:14:42.829 [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] 14:14:42.829 [debug] QUERY OK source="media_items" db=0.3ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-03-17 16:00:15Z], 2] 14:14:42.831 [debug] QUERY OK source="media_items" db=1.5ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["More from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\u200B\nTwitter: https://twitter.com/nprmusic\u200B\nInstagram: https://www.instagram.com/nprmusic\n\nMore from Justin Bieber:\n\"Peaches\" Video: https://justinbieber.lnk.to/PeachesVid\nJustice The Album Out Now: https://justinbieber.lnk.to/Justice \n\nThe Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nStephen Thompson | March 17, 2021\nIf you were to apply one of those \"how it started / how it's going\" memes to Tiny Desk (home) concerts — which began, it turns out, almost exactly one year ago — you'd have, under \"how it's going,\" the image of pop superstar Justin Bieber as he and his band perform the world premiere of a new song called \"Peaches.\"\n\n\"Peaches\" will exist in a significantly different form when Bieber drops his new album Justice on Friday — the track will feature guest vocals from GIVEŌN and Daniel Caesar — just as \"Holy,\" another song from Justice, opens this set without the presence of guest Chance the Rapper. But Bieber's Tiny Desk set, performed with the aid of We the Band, provides the fullest taste yet (fully 25 percent!) of the singer's sixth album, whose singles have already been streamed hundreds of millions of times.\n\nBieber has had a massive month as he prepares for Justice to drop: March 2021 began with the singer's 27th birthday and recently produced his second career Grammy, as he took the prize for best country duo or group performance for \"10,000 Hours\" with Dan + Shay. It continues with this, his Tiny Desk debut. Friday, the next chapter officially begins.\n\nSET LIST\n\"Holy\"\n\"Peaches\"\n\"Hold On\"\n\"Anyone\"\n\nMUSICIANS\nJustin Bieber: vocals, keys\nHarv: bass\nO'Neil \"Doctor O\" Palmer: keys\nDJ Tay James: DJ\nRobert Taylor: drums\nJulian McGuire: guitar\n\nCREDITS\nVideo: Nick Demoura, Mike Drew, Rory Kramer, Aaron Kroger, James Coker\nAudio: Jim Ebdon, Dylan Ely, James Roach, Chris Houghton, Taylor Meyer\nProduction Manager: Chris Gratton\nCamera Operators: Austin Wavra, Daniel Mardoyan, Noel Galan\nLighting Tech: Jim Mecsery\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producers: Maia Stern, Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Kara Frame\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#justinbieber #tinydesk #nprmusic #pop #rnb", "Justin Bieber: Tiny Desk (Home) Concert", "8f5b67b4-7482-4592-aac3-ad1a9db34e0f", 915, false, "Su6kidaGW_8", "https://www.youtube.com/watch?v=Su6kidaGW_8", 47, "/downloads/Tiny Desk/2021-03-17 Justin Bieber: Tiny Desk (Home) Concert/Justin Bieber: Tiny Desk (Home) Concert [Su6kidaGW_8].mp4", false, false, false, 2, [], 1, ~U[2021-03-17 16:00:15Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "More from NPR Music: \nTiny Desk Concerts: https://www.npr.org/tinydesk\u200B\nTwitter: https://twitter.com/nprmusic\u200B\nInstagram: https://www.instagram.com/nprmusic\n\nMore from Justin Bieber:\n\"Peaches\" Video: https://justinbieber.lnk.to/PeachesVid\nJustice The Album Out Now: https://justinbieber.lnk.to/Justice \n\nThe Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nStephen Thompson | March 17, 2021\nIf you were to apply one of those \"how it started / how it's going\" memes to Tiny Desk (home) concerts — which began, it turns out, almost exactly one year ago — you'd have, under \"how it's going,\" the image of pop superstar Justin Bieber as he and his band perform the world premiere of a new song called \"Peaches.\"\n\n\"Peaches\" will exist in a significantly different form when Bieber drops his new album Justice on Friday — the track will feature guest vocals from GIVEŌN and Daniel Caesar — just as \"Holy,\" another song from Justice, opens this set without the presence of guest Chance the Rapper. But Bieber's Tiny Desk set, performed with the aid of We the Band, provides the fullest taste yet (fully 25 percent!) of the singer's sixth album, whose singles have already been streamed hundreds of millions of times.\n\nBieber has had a massive month as he prepares for Justice to drop: March 2021 began with the singer's 27th birthday and recently produced his second career Grammy, as he took the prize for best country duo or group performance for \"10,000 Hours\" with Dan + Shay. It continues with this, his Tiny Desk debut. Friday, the next chapter officially begins.\n\nSET LIST\n\"Holy\"\n\"Peaches\"\n\"Hold On\"\n\"Anyone\"\n\nMUSICIANS\nJustin Bieber: vocals, keys\nHarv: bass\nO'Neil \"Doctor O\" Palmer: keys\nDJ Tay James: DJ\nRobert Taylor: drums\nJulian McGuire: guitar\n\nCREDITS\nVideo: Nick Demoura, Mike Drew, Rory Kramer, Aaron Kroger, James Coker\nAudio: Jim Ebdon, Dylan Ely, James Roach, Chris Houghton, Taylor Meyer\nProduction Manager: Chris Gratton\nCamera Operators: Austin Wavra, Daniel Mardoyan, Noel Galan\nLighting Tech: Jim Mecsery\n\nTINY DESK TEAM\nProducer: Bobby Carter\nVideo Producers: Maia Stern, Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Bob Boilen, Kara Frame\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann\n\n#justinbieber #tinydesk #nprmusic #pop #rnb", "Justin Bieber: Tiny Desk (Home) Concert", 915, false, "Su6kidaGW_8", "https://www.youtube.com/watch?v=Su6kidaGW_8", "/downloads/Tiny Desk/2021-03-17 Justin Bieber: Tiny Desk (Home) Concert/Justin Bieber: Tiny Desk (Home) Concert [Su6kidaGW_8].mp4", false, 2, ~U[2021-03-17 16:00:15Z]] 14:14:42.832 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [2] 14:14:42.833 [debug] QUERY OK source="media_items" db=0.3ms idle=4.2ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2021-01-28 17:00:11Z], 2] 14:14:42.835 [debug] QUERY OK source="media_items" db=1.4ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nMiley Cyrus has always understood that music is theater. So it's no surprise that, visiting the imaginative space that is the Tiny Desk, she transforms it into something both fantastical and true to her topsy-turvy Mileyness.\n\nCyrus ruled preteen hearts on the small screen before mastering pop stardom's big stages, and throughout her career she's played with sound and image in unexpected and even controversial ways. And she's never balanced pop's glorious artifice with her own soulful authenticity more self-assuredly than she does on her latest album, the rock and roll manifesto Plastic Hearts.\n\nHere, the scene opens with Cyrus, dressed head to toe in rock-star faux fur, in what looks like a teenage girl's bedroom. But the perspective in this pink-and-purple space feels a little ... odd. As Cyrus sings, it becomes clear that this is her Wonderland – like Alice full of magical cake, she's grown to exceed her surroundings. By the end of this three-song set, Cyrus reveals that it's the adolescent enclave that grew too small for her, not the other way around.\n\nThe songs Cyrus offers are as direct and affecting as the set is whimsical. Cyrus has lately proven herself one of pop's great interpretive vocalists, and she scores another triumph with her version of Mazzy Star's \"Fade Into You,\" a hazy psychedelic anthem that she infuses with just the edge of the next day's hangover. The two songs from Plastic Hearts that follow are her own bids at classic-rock timelessness. In \"Golden G-String\" Cyrus assesses her own life in the spotlight with Leonard Cohen-esque charm. And \"Prisoner\" is the power ballad that lets Cyrus really break out – as she leaves the tiny room — just a box, it turns out, on a soundstage – and joins her band, she's as free and self-confident as she's ever been.\n\nSET LIST\n\"Fade Into You\"\n\"Golden G-String\"\n\"Prisoner\"\n\nMUSICIANS\nMiley Cyrus: vocals\nStacy Jones: drums\nMike Schmid: keys\nMax Bernstein: guitar\nJamie Arentzen: guitar\nJoe Ayoub: bass\n\nCREDITS\nProducer: Johnny Pascucci\nDirector: Alana O'Herlihy\nAssistant Director: Steve Bagnara\nDirector of Photography: Jordan Ritz\nSet Design: Eamonn McGlynn\nSound Tech: Johnny Karlsson\nFOH/Broadcast Engineer: Paul Hager\n\nTINY DESK TEAM\nProducers: Bob Boilen, Bobby Carter\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Miley Cyrus: Tiny Desk (Home) Concert", "d9702522-413d-4e07-9b3a-a08d07421971", 676, false, "W5-yezpcZNU", "https://www.youtube.com/watch?v=W5-yezpcZNU", 48, "/downloads/Tiny Desk/2021-01-28 Miley Cyrus: Tiny Desk (Home) Concert/Miley Cyrus: Tiny Desk (Home) Concert [W5-yezpcZNU].mp4", false, false, false, 2, [], 1, ~U[2021-01-28 17:00:11Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nMiley Cyrus has always understood that music is theater. So it's no surprise that, visiting the imaginative space that is the Tiny Desk, she transforms it into something both fantastical and true to her topsy-turvy Mileyness.\n\nCyrus ruled preteen hearts on the small screen before mastering pop stardom's big stages, and throughout her career she's played with sound and image in unexpected and even controversial ways. And she's never balanced pop's glorious artifice with her own soulful authenticity more self-assuredly than she does on her latest album, the rock and roll manifesto Plastic Hearts.\n\nHere, the scene opens with Cyrus, dressed head to toe in rock-star faux fur, in what looks like a teenage girl's bedroom. But the perspective in this pink-and-purple space feels a little ... odd. As Cyrus sings, it becomes clear that this is her Wonderland – like Alice full of magical cake, she's grown to exceed her surroundings. By the end of this three-song set, Cyrus reveals that it's the adolescent enclave that grew too small for her, not the other way around.\n\nThe songs Cyrus offers are as direct and affecting as the set is whimsical. Cyrus has lately proven herself one of pop's great interpretive vocalists, and she scores another triumph with her version of Mazzy Star's \"Fade Into You,\" a hazy psychedelic anthem that she infuses with just the edge of the next day's hangover. The two songs from Plastic Hearts that follow are her own bids at classic-rock timelessness. In \"Golden G-String\" Cyrus assesses her own life in the spotlight with Leonard Cohen-esque charm. And \"Prisoner\" is the power ballad that lets Cyrus really break out – as she leaves the tiny room — just a box, it turns out, on a soundstage – and joins her band, she's as free and self-confident as she's ever been.\n\nSET LIST\n\"Fade Into You\"\n\"Golden G-String\"\n\"Prisoner\"\n\nMUSICIANS\nMiley Cyrus: vocals\nStacy Jones: drums\nMike Schmid: keys\nMax Bernstein: guitar\nJamie Arentzen: guitar\nJoe Ayoub: bass\n\nCREDITS\nProducer: Johnny Pascucci\nDirector: Alana O'Herlihy\nAssistant Director: Steve Bagnara\nDirector of Photography: Jordan Ritz\nSet Design: Eamonn McGlynn\nSound Tech: Johnny Karlsson\nFOH/Broadcast Engineer: Paul Hager\n\nTINY DESK TEAM\nProducers: Bob Boilen, Bobby Carter\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nTiny Production Team: Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Miley Cyrus: Tiny Desk (Home) Concert", 676, false, "W5-yezpcZNU", "https://www.youtube.com/watch?v=W5-yezpcZNU", "/downloads/Tiny Desk/2021-01-28 Miley Cyrus: Tiny Desk (Home) Concert/Miley Cyrus: Tiny Desk (Home) Concert [W5-yezpcZNU].mp4", false, 2, ~U[2021-01-28 17:00:11Z]] 14:14:42.835 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [2] 14:14:42.836 [debug] QUERY OK source="media_items" db=0.3ms idle=4.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-12-04 17:00:10Z], 2] 14:14:42.854 [debug] QUERY OK source="media_items" db=17.1ms idle=4.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 4, 2020 | Abby O'Neill -- With a genuine smile stretched across her face, Dua Lipa seems overjoyed to reconnect with her band for their only performance since their tour in support of her sophomore album, Future Nostalgia, was cancelled in March. Glowing from the inside out and accentuated by the apricot hues of a backdrop in a London studio, Dua and her backup vocalists and band bring life and warmth into households in need of \"levitating\" and some pep in their step this winter. This vibrant four song set of dance hits, all from Future Nostalgia, will surely have you cutting up the floor in your kitchen while quarantining in the cold weather.\n\nWhile we can't film our Tiny Desk concerts at NPR's D.C. office during the pandemic, our \"home\" series has created opportunity for global megastars like Dua Lipa to bring her uptempo dance joints all the way from London. Of Kosovar Albanian descent, Dua Lipa was raised in the UK and rose to super stardom in the three years since her eponymous debut album dropped in 2017. NPR Music featured her in our docu-series Noteworthy at the onset of her career. It's been extraordinary to witness her colossal takeover of the pop music landscape. Dua sums the times during her intro of \"Love Again\": \"It's about manifesting good things into your life, when things aren't quite going your way.\"\n\nSET LIST\n\"Levitating\"\n\"Pretty Please\"\n\"Love Again\"\n\"Don't Start Now\"\n\nMUSICIANS\nDua Lipa: vocals\nMatthew Carroll: bass\nAlex Lanyon: guitar\nNaomi Scarlett: vocals\nCiara O'Connor: vocals\nIzzy Chase: vocals\nMatt Maijah: vocals\n\nCREDITS\nVideo: Ceremony London, James Barnes\nAudio: WFB Live, Will Nicholson\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Dua Lipa: Tiny Desk (Home) Concert", "5228ce8e-94f2-4122-b91c-8c2def51a820", 958, false, "F4neLJQC1_E", "https://www.youtube.com/watch?v=F4neLJQC1_E", 49, "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].mp4", false, false, false, 2, [], 1, ~U[2020-12-04 17:00:10Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nDec. 4, 2020 | Abby O'Neill -- With a genuine smile stretched across her face, Dua Lipa seems overjoyed to reconnect with her band for their only performance since their tour in support of her sophomore album, Future Nostalgia, was cancelled in March. Glowing from the inside out and accentuated by the apricot hues of a backdrop in a London studio, Dua and her backup vocalists and band bring life and warmth into households in need of \"levitating\" and some pep in their step this winter. This vibrant four song set of dance hits, all from Future Nostalgia, will surely have you cutting up the floor in your kitchen while quarantining in the cold weather.\n\nWhile we can't film our Tiny Desk concerts at NPR's D.C. office during the pandemic, our \"home\" series has created opportunity for global megastars like Dua Lipa to bring her uptempo dance joints all the way from London. Of Kosovar Albanian descent, Dua Lipa was raised in the UK and rose to super stardom in the three years since her eponymous debut album dropped in 2017. NPR Music featured her in our docu-series Noteworthy at the onset of her career. It's been extraordinary to witness her colossal takeover of the pop music landscape. Dua sums the times during her intro of \"Love Again\": \"It's about manifesting good things into your life, when things aren't quite going your way.\"\n\nSET LIST\n\"Levitating\"\n\"Pretty Please\"\n\"Love Again\"\n\"Don't Start Now\"\n\nMUSICIANS\nDua Lipa: vocals\nMatthew Carroll: bass\nAlex Lanyon: guitar\nNaomi Scarlett: vocals\nCiara O'Connor: vocals\nIzzy Chase: vocals\nMatt Maijah: vocals\n\nCREDITS\nVideo: Ceremony London, James Barnes\nAudio: WFB Live, Will Nicholson\nTINY DESK TEAM\nProducer: Abby O'Neill\nVideo Producer: Morgan Noelle Smith\nAudio Mastering: Josh Rogosin\nAssociate Producer\nTiny Production Team: Bob Boilen, Kara Frame, Maia Stern\nExecutive Producer: Lauren Onkey\nSenior VP, Programming: Anya Grundmann", "Dua Lipa: Tiny Desk (Home) Concert", 958, false, "F4neLJQC1_E", "https://www.youtube.com/watch?v=F4neLJQC1_E", "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].mp4", false, 2, ~U[2020-12-04 17:00:10Z]] 14:14:42.854 [debug] QUERY OK source="sources" db=0.2ms idle=21.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.855 [debug] QUERY OK source="media_items" db=0.3ms idle=20.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-08-26 14:00:14Z], 2] 14:14:42.857 [debug] QUERY OK source="media_items" db=1.6ms idle=19.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAug. 26, 2020 | Stephen Thompson -- It didn't take long for Billie Eilish to become one of the biggest pop stars in the world, sweep the Grammy Awards' major categories and release the latest James Bond theme. And today, at just 18, she and her brother, Finneas, have accomplished what no one has been able to do for five and a half months: perform a Tiny Desk concert in what certainly appears to be the NPR Music offices.\n\nOf course, due to safety concerns, even the NPR Music staff can't set foot in the building that houses Bob Boilen's desk. But if you look over Eilish's shoulder, there's no mistaking the signs that she's appearing at the Tiny Desk in its present-day form: On the last day before staff began working from home, I took home the Green Bay Packers helmet that sat on the top shelf — the one Harry Styles had signed a few weeks earlier — for safe keeping. In this performance, that spot is empty.\n\nSo how the heck did they do it?\n\nHonestly, it's best that you watch the whole video to experience the extent of the technical feat — which, in the spirit of Eilish's Saturday Night Live performance, they're willing to share with you. And thankfully, we still have our ways of photographing the desk, even if the room has fallen silent.\n\nSo settle in for a welcome jolt of Tiny Desk innovation, not to mention two of the excellent standalone singles Billie Eilish has released in the past year: \"my future\" and \"everything i wanted.\" And, seriously, be sure to watch until the very end.\n\nSET LIST\n\"my future\"\n\"everything i wanted\"\n\nMUSICIANS\nBillie Eilish: vocals, keys; Finneas: keys, guitar\n\nCREDITS\nVideo by: Matty Vogel; Audio by: Finneas; Art Director: Henry Hickman; Producer: Bob Boilen; Audio Mastering Engineer: Josh Rogosin; Video Producer: Morgan Noelle Smith; Associate Producer: Bobby Carter; Photographer: Michael Cullen; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Billie Eilish: Tiny Desk (Home) Concert", "d6929fdc-2e4b-4786-a036-c1591a3d1aeb", 601, false, "4sZ2_aGsLKU", "https://www.youtube.com/watch?v=4sZ2_aGsLKU", 50, "/downloads/Tiny Desk/2020-08-26 Billie Eilish: Tiny Desk (Home) Concert/Billie Eilish: Tiny Desk (Home) Concert [4sZ2_aGsLKU].mp4", false, false, false, 2, [], 1, ~U[2020-08-26 14:00:14Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nAug. 26, 2020 | Stephen Thompson -- It didn't take long for Billie Eilish to become one of the biggest pop stars in the world, sweep the Grammy Awards' major categories and release the latest James Bond theme. And today, at just 18, she and her brother, Finneas, have accomplished what no one has been able to do for five and a half months: perform a Tiny Desk concert in what certainly appears to be the NPR Music offices.\n\nOf course, due to safety concerns, even the NPR Music staff can't set foot in the building that houses Bob Boilen's desk. But if you look over Eilish's shoulder, there's no mistaking the signs that she's appearing at the Tiny Desk in its present-day form: On the last day before staff began working from home, I took home the Green Bay Packers helmet that sat on the top shelf — the one Harry Styles had signed a few weeks earlier — for safe keeping. In this performance, that spot is empty.\n\nSo how the heck did they do it?\n\nHonestly, it's best that you watch the whole video to experience the extent of the technical feat — which, in the spirit of Eilish's Saturday Night Live performance, they're willing to share with you. And thankfully, we still have our ways of photographing the desk, even if the room has fallen silent.\n\nSo settle in for a welcome jolt of Tiny Desk innovation, not to mention two of the excellent standalone singles Billie Eilish has released in the past year: \"my future\" and \"everything i wanted.\" And, seriously, be sure to watch until the very end.\n\nSET LIST\n\"my future\"\n\"everything i wanted\"\n\nMUSICIANS\nBillie Eilish: vocals, keys; Finneas: keys, guitar\n\nCREDITS\nVideo by: Matty Vogel; Audio by: Finneas; Art Director: Henry Hickman; Producer: Bob Boilen; Audio Mastering Engineer: Josh Rogosin; Video Producer: Morgan Noelle Smith; Associate Producer: Bobby Carter; Photographer: Michael Cullen; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Billie Eilish: Tiny Desk (Home) Concert", 601, false, "4sZ2_aGsLKU", "https://www.youtube.com/watch?v=4sZ2_aGsLKU", "/downloads/Tiny Desk/2020-08-26 Billie Eilish: Tiny Desk (Home) Concert/Billie Eilish: Tiny Desk (Home) Concert [4sZ2_aGsLKU].mp4", false, 2, ~U[2020-08-26 14:00:14Z]] 14:14:42.857 [debug] QUERY OK source="sources" db=0.2ms idle=21.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.858 [debug] QUERY OK source="media_items" db=0.2ms idle=3.9ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2020-08-24 14:00:11Z], 2] 14:14:42.859 [debug] QUERY OK source="media_items" db=1.0ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | August 24, 2020\nWith beats, effects and synths pumping through a DJ mixer sitting on a school desk in his home studio in Australia, we present Tame Impala like you've never heard it before. As much as I love Tame Impala's music, I'm probably more intrigued by the creative process that brings the songs to life. The studio version of the band is pretty simple on paper: All songs are written, produced and performed by Kevin Parker. For the live version, Parker is still front and center but surrounded by a host of musicians who interpret his recorded work almost to a tee.\n\nSo it came as a shock to me when the Australian maestro explained what he wanted to do for his Tiny Desk (home) concert or his \"Tame Impala Soundsystem\" as he puts it. \"I'll get Jay (Watson) and Dom (Simper) and we'll do this kind of electronic jam with heaps of equipment around us and we'll recreate the songs with samplers and sequencers,\" Parker says. \"I've wanted to do something like this for a while and thought Tiny Desk would be the opportunity to do it.\"\n\nSET LIST\n\"Breathe Deeper\"\n\"Is It True\"\n\"Patience\"\n\nMUSICIANS\nKevin Parker: vocals; Jay Watson: music; Dom Simper: music\n\nCREDITS\nVideo by: Jamie Terry, Shiney Joe Ryan; Audio by: Kevin Parker, James Ireland; Producer: Bobby Carter; Audio Mastering Engineer: Josh Rogosin; Video Producer: Maia Stern; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Tame Impala: Tiny Desk (Home) Concert", "874e0688-1a2e-49fb-8a87-0ecb6dc01c16", 981, false, "C24hUt18RWY", "https://www.youtube.com/watch?v=C24hUt18RWY", 51, "/downloads/Tiny Desk/2020-08-24 Tame Impala: Tiny Desk (Home) Concert/Tame Impala: Tiny Desk (Home) Concert [C24hUt18RWY].mp4", false, false, false, 2, [], 1, ~U[2020-08-24 14:00:11Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "The Tiny Desk is working from home for the foreseeable future. Introducing NPR Music's Tiny Desk (home) concerts, bringing you performances from across the country and the world. It's the same spirit — stripped-down sets, an intimate setting — just a different space.\n\nBobby Carter | August 24, 2020\nWith beats, effects and synths pumping through a DJ mixer sitting on a school desk in his home studio in Australia, we present Tame Impala like you've never heard it before. As much as I love Tame Impala's music, I'm probably more intrigued by the creative process that brings the songs to life. The studio version of the band is pretty simple on paper: All songs are written, produced and performed by Kevin Parker. For the live version, Parker is still front and center but surrounded by a host of musicians who interpret his recorded work almost to a tee.\n\nSo it came as a shock to me when the Australian maestro explained what he wanted to do for his Tiny Desk (home) concert or his \"Tame Impala Soundsystem\" as he puts it. \"I'll get Jay (Watson) and Dom (Simper) and we'll do this kind of electronic jam with heaps of equipment around us and we'll recreate the songs with samplers and sequencers,\" Parker says. \"I've wanted to do something like this for a while and thought Tiny Desk would be the opportunity to do it.\"\n\nSET LIST\n\"Breathe Deeper\"\n\"Is It True\"\n\"Patience\"\n\nMUSICIANS\nKevin Parker: vocals; Jay Watson: music; Dom Simper: music\n\nCREDITS\nVideo by: Jamie Terry, Shiney Joe Ryan; Audio by: Kevin Parker, James Ireland; Producer: Bobby Carter; Audio Mastering Engineer: Josh Rogosin; Video Producer: Maia Stern; Executive Producer: Lauren Onkey; Senior VP, Programming: Anya Grundmann", "Tame Impala: Tiny Desk (Home) Concert", 981, false, "C24hUt18RWY", "https://www.youtube.com/watch?v=C24hUt18RWY", "/downloads/Tiny Desk/2020-08-24 Tame Impala: Tiny Desk (Home) Concert/Tame Impala: Tiny Desk (Home) Concert [C24hUt18RWY].mp4", false, 2, ~U[2020-08-24 14:00:11Z]] 14:14:42.860 [debug] QUERY OK source="sources" db=0.1ms idle=4.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.860 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-09 09:00:26Z], 2] 14:14:42.865 [debug] QUERY OK source="media_items" db=4.7ms idle=2.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | July 9, 2025\nWe've been chasing a Wet Leg Tiny Desk ever since the Isle of Wight band floored us with the 2021 single \"Chaise Longue,\" a song that, like much of the group's work, is as understated and droll as it is frenetic and infectious.\n\nSo, when we finally got Wet Leg into the office to record this performance, we weren't surprised by the amount of playful swagger the band brought, or by how carefully calibrated the set was. But fans might be surprised by how much Wet Leg leans into that more understated side. You won't hear \"Chaise Longue\" or \"Catch These Fists,\" the ripping first single from the upcoming album, moisturizer. Instead, singer Rhian Teasdale and the rest of the band chose to spotlight the album's core themes: the joy of being in love in a state of bliss.\n\nThat's not to say it's a quiet or entirely restrained set. The band opens with \"CPR,\" a heady alarm about obsession and the ways unchecked love can dismantle you, followed by a preview of the not-yet-released \"mangetout\" from moisturizer. They also perform the carefree, sunny-day single \"davina mccall,\" a showcase for Teasdale's gorgeous voice, before closing with another unreleased track from moisturizer — and one the band says it's never played live for anyone before — a languid, dreamy ode to the enduring power of love called \"11:21.\"\n\nSET LIST\n\"CPR\"\n\"mangetout\"\n\"davina mccall\"\n\"11:21\"\n\nMUSICIANS\nRhian Teasdale: vocals, guitar\nHester Chambers: guitar, keys, background vocals\nJoshua Mobaraki: guitar, synth, MPC, background vocals\nEllis Durand: bass, background vocals\nHenry Holmes: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Maia Stern\nAudio Engineer: Neil Tevault\nProduction Assistant: Dora Levite\nPhotographer: Zayrha Rodriguez\nCopy Editor: Hazel Cills\nTiny Desk Team: Lars Gotrich, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #wetleg \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "Wet Leg: Tiny Desk Concert", "84a86b5e-c23f-44b3-a211-27a3a0ecb91b", 1020, false, "AzUHNjKMeV4", "https://www.youtube.com/watch?v=AzUHNjKMeV4", 52, "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].mp4", false, false, false, 2, [], 1, ~U[2025-07-09 09:00:26Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Robin Hilton | July 9, 2025\nWe've been chasing a Wet Leg Tiny Desk ever since the Isle of Wight band floored us with the 2021 single \"Chaise Longue,\" a song that, like much of the group's work, is as understated and droll as it is frenetic and infectious.\n\nSo, when we finally got Wet Leg into the office to record this performance, we weren't surprised by the amount of playful swagger the band brought, or by how carefully calibrated the set was. But fans might be surprised by how much Wet Leg leans into that more understated side. You won't hear \"Chaise Longue\" or \"Catch These Fists,\" the ripping first single from the upcoming album, moisturizer. Instead, singer Rhian Teasdale and the rest of the band chose to spotlight the album's core themes: the joy of being in love in a state of bliss.\n\nThat's not to say it's a quiet or entirely restrained set. The band opens with \"CPR,\" a heady alarm about obsession and the ways unchecked love can dismantle you, followed by a preview of the not-yet-released \"mangetout\" from moisturizer. They also perform the carefree, sunny-day single \"davina mccall,\" a showcase for Teasdale's gorgeous voice, before closing with another unreleased track from moisturizer — and one the band says it's never played live for anyone before — a languid, dreamy ode to the enduring power of love called \"11:21.\"\n\nSET LIST\n\"CPR\"\n\"mangetout\"\n\"davina mccall\"\n\"11:21\"\n\nMUSICIANS\nRhian Teasdale: vocals, guitar\nHester Chambers: guitar, keys, background vocals\nJoshua Mobaraki: guitar, synth, MPC, background vocals\nEllis Durand: bass, background vocals\nHenry Holmes: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Kara Frame, Joshua Bryant, Maia Stern\nAudio Engineer: Neil Tevault\nProduction Assistant: Dora Levite\nPhotographer: Zayrha Rodriguez\nCopy Editor: Hazel Cills\nTiny Desk Team: Lars Gotrich, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #wetleg \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "Wet Leg: Tiny Desk Concert", 1020, false, "AzUHNjKMeV4", "https://www.youtube.com/watch?v=AzUHNjKMeV4", "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].mp4", false, 2, ~U[2025-07-09 09:00:26Z]] 14:14:42.866 [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" = ?) [2] 14:14:42.866 [debug] QUERY OK source="media_items" db=0.2ms idle=6.6ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-24 09:00:24Z], 2] 14:14:42.868 [debug] QUERY OK source="media_items" db=1.3ms idle=6.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | July 24, 2025\nExistential dread never sounded more joyful or uplifting than it does in the hands of PUP. Across its catalog of albums, like the appropriately titled Morbid Stuff or The Dream is Over, the Canadian pop-punk group confronts world-weary discontent with deadpan humor, hard-earned wisdom and a lot of heart.\n\nFor the group's long-overdue Tiny Desk, PUP (an acronym for Pathetic Use of Potential) rips through five songs, opening with the restlessly hooky \"Morbid Stuff,\" followed by \"Robot Writes a Love Song,\" from 2022's The Unraveling of PUPTheBand, and \"Hallways,\" a driving anthem about staying alive in the face of struggle, if only to take care of your dog.\n\nOutside of the songs, frontman Stefan Babcock doesn't say a word during the set, but beams playfully through much of it, even after he sings, \"I've been navigating my way through the mind-numbing reality of a godless existence,\" from the 2019 track \"Kids.\" The band closes with the pop-leaning \"Hunger for Death,\" from PUP's latest album, Who Will Look After the Dogs? Trying hard not to break character, Babcock leans in with, \"F*** everyone in this office,\" before adding, \"especially me.\"\n\nSET LIST\n\"Morbid Stuff\"\n\"Robot Writes a Love Song\"\n\"Hallways\"\n\"Kids\"\n\"Hunger for Death\"\n\nMUSICIANS\nStefan Babcock: vocals, guitar, keys\nSteve Sladkowski: guitar, background vocals\nNestor Chumak: bass, background vocals\nZack Mykula: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Josephine Nyounai\nProduction Assistants: Ashley Pointer, Dhanika Pineda\nPhotographer: Grace Raver\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #pup \n\nSupport for NPR Music comes from Capital One. Presenting sponsor of the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "PUP: Tiny Desk Concert", "4697fef6-08f7-4c58-bf0d-6a0f0733e0e2", 1081, false, "Gh9pCl1cL8A", "https://www.youtube.com/watch?v=Gh9pCl1cL8A", 53, "/downloads/Tiny Desk/2025-07-24 PUP: Tiny Desk Concert/PUP: Tiny Desk Concert [Gh9pCl1cL8A].mp4", false, false, false, 2, [], 1, ~U[2025-07-24 09:00:24Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Robin Hilton | July 24, 2025\nExistential dread never sounded more joyful or uplifting than it does in the hands of PUP. Across its catalog of albums, like the appropriately titled Morbid Stuff or The Dream is Over, the Canadian pop-punk group confronts world-weary discontent with deadpan humor, hard-earned wisdom and a lot of heart.\n\nFor the group's long-overdue Tiny Desk, PUP (an acronym for Pathetic Use of Potential) rips through five songs, opening with the restlessly hooky \"Morbid Stuff,\" followed by \"Robot Writes a Love Song,\" from 2022's The Unraveling of PUPTheBand, and \"Hallways,\" a driving anthem about staying alive in the face of struggle, if only to take care of your dog.\n\nOutside of the songs, frontman Stefan Babcock doesn't say a word during the set, but beams playfully through much of it, even after he sings, \"I've been navigating my way through the mind-numbing reality of a godless existence,\" from the 2019 track \"Kids.\" The band closes with the pop-leaning \"Hunger for Death,\" from PUP's latest album, Who Will Look After the Dogs? Trying hard not to break character, Babcock leans in with, \"F*** everyone in this office,\" before adding, \"especially me.\"\n\nSET LIST\n\"Morbid Stuff\"\n\"Robot Writes a Love Song\"\n\"Hallways\"\n\"Kids\"\n\"Hunger for Death\"\n\nMUSICIANS\nStefan Babcock: vocals, guitar, keys\nSteve Sladkowski: guitar, background vocals\nNestor Chumak: bass, background vocals\nZack Mykula: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Josephine Nyounai\nProduction Assistants: Ashley Pointer, Dhanika Pineda\nPhotographer: Grace Raver\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\nVP, Visuals and Music: Keith Jenkins\n\n#nprmusic #tinydesk #pup \n\nSupport for NPR Music comes from Capital One. Presenting sponsor of the 2025 Tiny Desk Contest. What's in your wallet? Learn more at CapitalOne.com.\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises", "PUP: Tiny Desk Concert", 1081, false, "Gh9pCl1cL8A", "https://www.youtube.com/watch?v=Gh9pCl1cL8A", "/downloads/Tiny Desk/2025-07-24 PUP: Tiny Desk Concert/PUP: Tiny Desk Concert [Gh9pCl1cL8A].mp4", false, 2, ~U[2025-07-24 09:00:24Z]] 14:14:42.868 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.869 [debug] QUERY OK source="media_items" db=0.4ms idle=3.4ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-27 09:01:16Z], 2] 14:14:42.871 [debug] QUERY OK source="media_items" db=1.3ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This Black Music Month, Tiny Desk honors the anniversaries of landmark albums that have shaped the course of music and culture.\n\nAlanté Serene | June 27, 2025\nThe facets of Rico Nasty’s artistry seem nearly endless. Four years after her electrifying Tiny Desk (home) concert, the rapper/rager/rockstar finally brings her full force to the actual Desk. One thing’s for sure: This concert will surprise you. \n\nRico performs in front of a packed house of Nasty Mob members, family, friends and hometown supporters. “There is a connection that I have with you guys,” the DMV native tells the crowd. “It just makes me feel very safe.” Fueled by that assurance, Rico powers through a set that’s as layered as her catalog.\n\nFive years after her debut studio album, Nightmare Vacation, Rico has evolved. Her latest project, LETHAL, finds her fully confident in the lane she’s built, blending vulnerability and attitude the way only she can. At the Desk, Rico lets each side of herself shine: from explosive tracks like “SMOKE BREAK,” to a smooth, reimagined version of “ON THE LOW,” to the tender resonance of “SMILE,” a song dedicated to her son. Rico delivers a carefully curated show that highlights every corner of her musical identity while leaving her mark on the iconic space. \n\nSET LIST\n“WHO WANT IT”\n“TEETHSUCKER (YEA3X)”\n“ON THE LOW”\n“Tia Tamera”\n“SON OF A GUN”\n“SMOKE BREAK”\n“Smack a Bitch”\n“CRASH”\n“CAN'T WIN EM ALL”\n“SMILE”\n\nMUSICIANS\nRico Nasty: vocals\nJoe Cho: guitar, background vocals\nJacob Ray: guitar, background vocals\nRexzeal Omaka: bass, background vocals\nMatt “Tort” Campfield: keys, background vocals\nImad Royal: drums, background vocals\n\nTINY DESK TEAM\nProducer: Alanté Serene\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Mitra I. Arthur\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nTiny Desk Series Editor: Lars Gotrich\nTiny Desk Team: Maia Stern, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\n\n#tinydesk #nprmusic #riconasty", "Rico Nasty: Tiny Desk Concert", "6fd870e2-97de-4cb4-88a6-d1c478ba7c1b", 1350, false, "kfUcI82SZv4", "https://www.youtube.com/watch?v=kfUcI82SZv4", 54, "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].mp4", false, false, false, 2, [], 1, ~U[2025-06-27 09:01:16Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "This Black Music Month, Tiny Desk honors the anniversaries of landmark albums that have shaped the course of music and culture.\n\nAlanté Serene | June 27, 2025\nThe facets of Rico Nasty’s artistry seem nearly endless. Four years after her electrifying Tiny Desk (home) concert, the rapper/rager/rockstar finally brings her full force to the actual Desk. One thing’s for sure: This concert will surprise you. \n\nRico performs in front of a packed house of Nasty Mob members, family, friends and hometown supporters. “There is a connection that I have with you guys,” the DMV native tells the crowd. “It just makes me feel very safe.” Fueled by that assurance, Rico powers through a set that’s as layered as her catalog.\n\nFive years after her debut studio album, Nightmare Vacation, Rico has evolved. Her latest project, LETHAL, finds her fully confident in the lane she’s built, blending vulnerability and attitude the way only she can. At the Desk, Rico lets each side of herself shine: from explosive tracks like “SMOKE BREAK,” to a smooth, reimagined version of “ON THE LOW,” to the tender resonance of “SMILE,” a song dedicated to her son. Rico delivers a carefully curated show that highlights every corner of her musical identity while leaving her mark on the iconic space. \n\nSET LIST\n“WHO WANT IT”\n“TEETHSUCKER (YEA3X)”\n“ON THE LOW”\n“Tia Tamera”\n“SON OF A GUN”\n“SMOKE BREAK”\n“Smack a Bitch”\n“CRASH”\n“CAN'T WIN EM ALL”\n“SMILE”\n\nMUSICIANS\nRico Nasty: vocals\nJoe Cho: guitar, background vocals\nJacob Ray: guitar, background vocals\nRexzeal Omaka: bass, background vocals\nMatt “Tort” Campfield: keys, background vocals\nImad Royal: drums, background vocals\n\nTINY DESK TEAM\nProducer: Alanté Serene\nDirector/Editor: Kara Frame\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Joshua Bryant, Kara Frame, Mitra I. Arthur\nAudio Engineer: Josephine Nyounai\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nTiny Desk Series Editor: Lars Gotrich\nTiny Desk Team: Maia Stern, Ashley Pointer\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson\n\n#tinydesk #nprmusic #riconasty", "Rico Nasty: Tiny Desk Concert", 1350, false, "kfUcI82SZv4", "https://www.youtube.com/watch?v=kfUcI82SZv4", "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].mp4", false, 2, ~U[2025-06-27 09:01:16Z]] 14:14:42.871 [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] 14:14:42.871 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-05 09:00:10Z], 2] 14:14:42.873 [debug] QUERY OK source="media_items" db=1.4ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Dora Levite | September 5, 2025\nFor those of us (like me) who wear the term \"chronically online\" like a badge of honor, PinkPantheress' world is our everything. When we close our eyes, her glossy voice and Y2K nostalgia is a comfort. With a single roller in her bangs and the purse she's never without, PinkPantheress has become our soundtrack, vision board and guide.\n\nFor this set, the once anonymous dance-pop star sheds the electronic sounds that we know her for; to our complete delight, her voice is just as glossy and her presence just as entrancing in these new arrangements. Dressed in her signature tartan (with matching tea pot), PinkPantheress' band expands her sound, swapping the glitched-out samples in \"Girl Like Me\" for heavier guitar riffs. She shapes the moments that we crave in songs like \"Pain\" and \"Illegal\" as softer, jazzier ones.\n\nAs she performs, she nonchalantly cycles through the instruments laid out before her: some harmonica here, a bit of cowbell there, chimes once or twice. Her comedic timing is deadpan, yet precise — a reminder of why fans obsess over her digital footprint. It's always a gift when artists reimagine their discography alongside us at the Desk. PinkPantheress dives into this challenge, yet maintains her magnetic aura, which is just another reason we still can't seem to look away.\n\nSET LIST\n\"Attracted to You\"\n\"Pain\"\n\"Break It Off\"\n\"Illegal\"\n\"Girl Like Me\"\n\"The aisle\"\n\"Passion\"\n\"Tonight\"\n\nMUSICIANS\nPinkPantheress: vocals, harmonica, percussion\u00A0\nLisa Remar: keys\nJoe Lesher-Liao: DJ\nSofia D'Angelo: guitar, background vocals\nJaleacia “Queen Drums” Harris: drums\nTina Chau Le: keys, guitar, background vocals\nRani Adi: bass\n\nTINY DESK TEAM\nProducer: Dora Levite\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Sofia Seidel, Michael Zamora, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nTiny Desk Team: Kara Frame, Joshua Bryant\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #pinkpantheress\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "PinkPantheress: Tiny Desk Concert", "e425c7e7-be1b-440a-9578-0f56800580c6", 1339, false, "56fJw8HUGuU", "https://www.youtube.com/watch?v=56fJw8HUGuU", 55, "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].mp4", false, false, false, 2, [], 1, ~U[2025-09-05 09:00:10Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Dora Levite | September 5, 2025\nFor those of us (like me) who wear the term \"chronically online\" like a badge of honor, PinkPantheress' world is our everything. When we close our eyes, her glossy voice and Y2K nostalgia is a comfort. With a single roller in her bangs and the purse she's never without, PinkPantheress has become our soundtrack, vision board and guide.\n\nFor this set, the once anonymous dance-pop star sheds the electronic sounds that we know her for; to our complete delight, her voice is just as glossy and her presence just as entrancing in these new arrangements. Dressed in her signature tartan (with matching tea pot), PinkPantheress' band expands her sound, swapping the glitched-out samples in \"Girl Like Me\" for heavier guitar riffs. She shapes the moments that we crave in songs like \"Pain\" and \"Illegal\" as softer, jazzier ones.\n\nAs she performs, she nonchalantly cycles through the instruments laid out before her: some harmonica here, a bit of cowbell there, chimes once or twice. Her comedic timing is deadpan, yet precise — a reminder of why fans obsess over her digital footprint. It's always a gift when artists reimagine their discography alongside us at the Desk. PinkPantheress dives into this challenge, yet maintains her magnetic aura, which is just another reason we still can't seem to look away.\n\nSET LIST\n\"Attracted to You\"\n\"Pain\"\n\"Break It Off\"\n\"Illegal\"\n\"Girl Like Me\"\n\"The aisle\"\n\"Passion\"\n\"Tonight\"\n\nMUSICIANS\nPinkPantheress: vocals, harmonica, percussion\u00A0\nLisa Remar: keys\nJoe Lesher-Liao: DJ\nSofia D'Angelo: guitar, background vocals\nJaleacia “Queen Drums” Harris: drums\nTina Chau Le: keys, guitar, background vocals\nRani Adi: bass\n\nTINY DESK TEAM\nProducer: Dora Levite\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Sofia Seidel, Michael Zamora, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dhanika Pineda\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nTiny Desk Team: Kara Frame, Joshua Bryant\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #pinkpantheress\n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "PinkPantheress: Tiny Desk Concert", 1339, false, "56fJw8HUGuU", "https://www.youtube.com/watch?v=56fJw8HUGuU", "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].mp4", false, 2, ~U[2025-09-05 09:00:10Z]] 14:14:42.874 [debug] QUERY OK source="sources" db=0.1ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:14:42.874 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 09:01:36Z], 2] 14:14:42.876 [debug] QUERY OK source="media_items" db=1.4ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Lars Gotrich | September 10, 2025\nAn effortless hop from the carpet onto the office furniture. A split-second survey of the audience gathered. Two steps, then liftoff and barrel roll. Not only does Brendan Yates execute the first-ever stage dive — and ensuing crowd surf — at the Tiny Desk, but he does so with athletic grace. That's how this Turnstile concert ends, but not before a wild reimagination of the hardcore band's wide-ranging sound, featuring piano and a horn section.\n\nEver since its inception 15 years ago, Turnstile has always turned its accessible, yet esoteric influences into something of its own. The roots are hardcore punk's speed and volatility, but the itch to play with tonal, textural and rhythmic palettes has kept Baltimore's own restless. That Turnstile only performs tracks from NEVER ENOUGH here could be seen as a commitment to the glossy sheen of the year's biggest hardcore album, but that just turns out to be a ruse.\n\nA midtempo rocker becomes a madcap piano brawler. A punk rager spins on a topsy-turvy ride, skanking along the way. Jangle-pop melancholia turns on a Motown dime, shimmying into a soul revue with the horns locked all the way in. The anthem emerges as a reflective ballad — and as a way for Yates to express his heartfelt gratitude toward the family, friends and \"personal heroes\" in the room. Just when you think you know Turnstile — its sound, motivation, vision — there's another metamorphosis.\n\nSET LIST\n\"DREAMING\"\n\"SUNSHOWER\"\n\"I CARE\"\n\"NEVER ENOUGH\"\n\"BIRDS\"\n\nMUSICIANS\nBrendan Yates: vocals\nPat McCrory: guitar\nMeg Mills: guitar\nFranz Lyons: bass\nDaniel Fang: drums\nTobias Moody: saxophone\nTheljon Allen: trumpet\nTroy Long: piano\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Sofia Seidel\nAudio Engineer: Neil Tevault\nProduction Assistants: Dora Levite, Dhanika Pineda\nPhotographer: Grace Raver \nCopy Editor: Daoud Tyler-Ameen\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #turnstile \n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "Turnstile: Tiny Desk Concert", "c61109ca-05c1-4dde-90ed-7a4326aa4e81", 948, false, "ylL-SSRDyJc", "https://www.youtube.com/watch?v=ylL-SSRDyJc", 56, "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].mp4", false, false, false, 2, [], 1, ~U[2025-09-10 09:01:36Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Lars Gotrich | September 10, 2025\nAn effortless hop from the carpet onto the office furniture. A split-second survey of the audience gathered. Two steps, then liftoff and barrel roll. Not only does Brendan Yates execute the first-ever stage dive — and ensuing crowd surf — at the Tiny Desk, but he does so with athletic grace. That's how this Turnstile concert ends, but not before a wild reimagination of the hardcore band's wide-ranging sound, featuring piano and a horn section.\n\nEver since its inception 15 years ago, Turnstile has always turned its accessible, yet esoteric influences into something of its own. The roots are hardcore punk's speed and volatility, but the itch to play with tonal, textural and rhythmic palettes has kept Baltimore's own restless. That Turnstile only performs tracks from NEVER ENOUGH here could be seen as a commitment to the glossy sheen of the year's biggest hardcore album, but that just turns out to be a ruse.\n\nA midtempo rocker becomes a madcap piano brawler. A punk rager spins on a topsy-turvy ride, skanking along the way. Jangle-pop melancholia turns on a Motown dime, shimmying into a soul revue with the horns locked all the way in. The anthem emerges as a reflective ballad — and as a way for Yates to express his heartfelt gratitude toward the family, friends and \"personal heroes\" in the room. Just when you think you know Turnstile — its sound, motivation, vision — there's another metamorphosis.\n\nSET LIST\n\"DREAMING\"\n\"SUNSHOWER\"\n\"I CARE\"\n\"NEVER ENOUGH\"\n\"BIRDS\"\n\nMUSICIANS\nBrendan Yates: vocals\nPat McCrory: guitar\nMeg Mills: guitar\nFranz Lyons: bass\nDaniel Fang: drums\nTobias Moody: saxophone\nTheljon Allen: trumpet\nTroy Long: piano\n\nTINY DESK TEAM\nProducer: Lars Gotrich\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame, Sofia Seidel\nAudio Engineer: Neil Tevault\nProduction Assistants: Dora Levite, Dhanika Pineda\nPhotographer: Grace Raver \nCopy Editor: Daoud Tyler-Ameen\nExecutive Producer: Suraya Mohamed\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#nprmusic #tinydesk #turnstile \n\nTiny Desk Giveaway. No purchase or donation required for entry. Void where restricted or prohibited by law. 18yrs or older. Deadline September 12, 2025, 11:59PM PT. ARV: $3,800. Links to the entry page and official rules can be found at NPR.org/TinyDeskGiveaway\nSponsors: NPR, Moises\n\nSupport for NPR Music and the 2025 Tiny Desk Giveaway comes from Moises. Powerful AI tools created by musicians, for musicians. Learn more at Moises.AI", "Turnstile: Tiny Desk Concert", 948, false, "ylL-SSRDyJc", "https://www.youtube.com/watch?v=ylL-SSRDyJc", "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].mp4", false, 2, ~U[2025-09-10 09:01:36Z]] 14:14:42.876 [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" = ?) [2] 14:14:42.877 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 09:00:29Z], 2] 14:14:42.879 [debug] QUERY OK source="media_items" db=1.3ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | October 29, 2025\nJust a couple of days before arriving for her Tiny Desk, Oklou’s Marylou Mayniel flew with her five-month old baby from their Paris home to New York, where she met for the first time with an eight-piece choir to rehearse completely reimagined versions of four songs. The goal was to strip away the electronics and often heavy autotune heard across Oklou’s beguiling debut album, Choke Enough, while preserving the sense of sonic adventure.\n\nBy the time everyone got to D.C., they’d puzzled it out. The songs here rely largely on piano, an acoustic guitar and a nearly seven-foot marimba. The choir provides not only backing vocals but also pad-like textures and effects, including crackling fire created with wads of bubble wrap and small sticks collected just before the performance.\n\nCasey MQ, who arranged the songs for this set, accompanies Oklou as they transform tracks like “blade bird” and “ict” from synth-heavy pop to deeply reflective, acoustic folk. The song “harvest sky” is slowed down and bare, with Oklou playing the main melody on a recorder. They also perform a version of “what’s good,” a previously unreleased song due out on a deluxe version of Choke Enough.\n\nSET LIST\n\"ict\"\n\"blade bird\"\n\"what's good\"\n\"harvest sky\"\n\nMUSICIANS\nOklou: vocals, marimba, guitar, piano, recorder\nCasey MQ: keys, guitar, piano, electronics, background vocals\nGileann Tan: background vocals\nRachel Liss: background vocals\nEmily Ostrom: background vocals\nMaria Christina Jasmin Kopp: background vocals\nCristóbal Arias: background vocals\nJames Ozaki: background vocals\nJack Schmieg: background vocals\nMax Parsons: background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dora Levite\nPhotographer: Maansi Srivastava\nTiny Desk Team: Kara Frame, Ashley Pointer\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#oklou #nprmusic #tinydesk \n\nSupport for NPR Music comes from Moises, an AI platform for musicians of all levels to learn, create, and collaborate. Learn more at Moises.AI", "Oklou: Tiny Desk Concert", "405f7710-8caf-4ad6-b867-8938f800225a", 1063, false, "Jg9uwVvOy0E", "https://www.youtube.com/watch?v=Jg9uwVvOy0E", 57, "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].mp4", false, false, false, 2, [], 1, ~U[2025-10-29 09:00:29Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Robin Hilton | October 29, 2025\nJust a couple of days before arriving for her Tiny Desk, Oklou’s Marylou Mayniel flew with her five-month old baby from their Paris home to New York, where she met for the first time with an eight-piece choir to rehearse completely reimagined versions of four songs. The goal was to strip away the electronics and often heavy autotune heard across Oklou’s beguiling debut album, Choke Enough, while preserving the sense of sonic adventure.\n\nBy the time everyone got to D.C., they’d puzzled it out. The songs here rely largely on piano, an acoustic guitar and a nearly seven-foot marimba. The choir provides not only backing vocals but also pad-like textures and effects, including crackling fire created with wads of bubble wrap and small sticks collected just before the performance.\n\nCasey MQ, who arranged the songs for this set, accompanies Oklou as they transform tracks like “blade bird” and “ict” from synth-heavy pop to deeply reflective, acoustic folk. The song “harvest sky” is slowed down and bare, with Oklou playing the main melody on a recorder. They also perform a version of “what’s good,” a previously unreleased song due out on a deluxe version of Choke Enough.\n\nSET LIST\n\"ict\"\n\"blade bird\"\n\"what's good\"\n\"harvest sky\"\n\nMUSICIANS\nOklou: vocals, marimba, guitar, piano, recorder\nCasey MQ: keys, guitar, piano, electronics, background vocals\nGileann Tan: background vocals\nRachel Liss: background vocals\nEmily Ostrom: background vocals\nMaria Christina Jasmin Kopp: background vocals\nCristóbal Arias: background vocals\nJames Ozaki: background vocals\nJack Schmieg: background vocals\nMax Parsons: background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Technical Director: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Alanté Serene\nAudio Engineer: Hannah Gluvna\nProduction Assistant: Dora Levite\nPhotographer: Maansi Srivastava\nTiny Desk Team: Kara Frame, Ashley Pointer\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#oklou #nprmusic #tinydesk \n\nSupport for NPR Music comes from Moises, an AI platform for musicians of all levels to learn, create, and collaborate. Learn more at Moises.AI", "Oklou: Tiny Desk Concert", 1063, false, "Jg9uwVvOy0E", "https://www.youtube.com/watch?v=Jg9uwVvOy0E", "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].mp4", false, 2, ~U[2025-10-29 09:00:29Z]] 14:14:42.879 [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" = ?) [2] 14:14:42.880 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT max(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2026-05-13 09:01:18Z], 2] 14:14:42.881 [debug] QUERY OK source="media_items" db=1.1ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","duration_seconds","livestream","media_id","original_url","playlist_index","predicted_media_filepath","prevent_culling","prevent_download","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "duration_seconds" = ?, "livestream" = ?, "media_id" = ?, "original_url" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Robin Hilton | May 13, 2026\nLike a lot of artists who play the Tiny Desk, the guys in Foo Fighters carefully curated and worked through their set for weeks leading up to their appearance, even taping out the dimensions of the Desk in a practice space to puzzle-out the close quarters. But once they were in the office, they tossed most of those plans. \"If you put instruments in our hands and there are people,\" Dave Grohl jokes, \"it's fun to play!\"\n\nFor a better part of the last 30 years, Foo Fighters has worn the crown for stadium-sized guitar rock. But for this performance, the band shrinks down that outsized sound to something that fits perfectly behind the Desk, without losing any urgency or oomph. They open big with a banging take on \"Spit Shine\" from the band's latest album, Your Favorite Toy, followed by \"Learn to Fly\" from 1999's There is Nothing Left to Lose. They also include the introspective and quieter \"Child Actor\" (also from the new album), before closing out with \"My Hero\" and \"Everlong,\" both from 1997's The Colour and the Shape.\n\nSET LIST\n\"Spit Shine\"\n\"Learn to Fly\"\n\"Child Actor\"\n\"My Hero\"\n\"Everlong\"\n\nMUSICIANS\nDave Grohl: vocals, guitar\nPat Smear: guitar\nChris Shiflett: guitar, background vocals\nNate Mendel: bass, background vocals\nRami Jaffee: keys\nIlan Rubin: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Director/Mix: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#foofighters #nprmusic #tinydesk \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the Tiny Desk Contest. What's in your wallet? Learn more at Capital One dot com.", "Foo Fighters: Tiny Desk Concert", "289b2e09-8063-41e5-93fb-a6ef60be9ff1", 1459, false, "wxaXWSVhRXU", "https://www.youtube.com/watch?v=wxaXWSVhRXU", 58, "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].mp4", false, false, false, 2, [], 1, ~U[2026-05-13 09:01:18Z], ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], "Robin Hilton | May 13, 2026\nLike a lot of artists who play the Tiny Desk, the guys in Foo Fighters carefully curated and worked through their set for weeks leading up to their appearance, even taping out the dimensions of the Desk in a practice space to puzzle-out the close quarters. But once they were in the office, they tossed most of those plans. \"If you put instruments in our hands and there are people,\" Dave Grohl jokes, \"it's fun to play!\"\n\nFor a better part of the last 30 years, Foo Fighters has worn the crown for stadium-sized guitar rock. But for this performance, the band shrinks down that outsized sound to something that fits perfectly behind the Desk, without losing any urgency or oomph. They open big with a banging take on \"Spit Shine\" from the band's latest album, Your Favorite Toy, followed by \"Learn to Fly\" from 1999's There is Nothing Left to Lose. They also include the introspective and quieter \"Child Actor\" (also from the new album), before closing out with \"My Hero\" and \"Everlong,\" both from 1997's The Colour and the Shape.\n\nSET LIST\n\"Spit Shine\"\n\"Learn to Fly\"\n\"Child Actor\"\n\"My Hero\"\n\"Everlong\"\n\nMUSICIANS\nDave Grohl: vocals, guitar\nPat Smear: guitar\nChris Shiflett: guitar, background vocals\nNate Mendel: bass, background vocals\nRami Jaffee: keys\nIlan Rubin: drums, background vocals\n\nTINY DESK TEAM\nProducer: Robin Hilton\nDirector/Editor: Maia Stern\nAudio Director/Mix: Josh Newell\nHost/Series Producer: Bobby Carter\nVideographers: Maia Stern, Joshua Bryant, Kara Frame\nAudio Engineer: Neil Tevault\nProduction Assistant: Ashley Pointer\nPhotographer: Zayrha Rodriguez\nSeries Editor: Lars Gotrich\nExecutive Producer: Suraya Mohamed\nExecutive Director: Sonali Mehta\nSeries Creators: Bob Boilen, Stephen Thompson, Robin Hilton\n\n#foofighters #nprmusic #tinydesk \n\nSupport for NPR Music comes from Capital One. Proud supporters of NPR Music and the Tiny Desk Contest. What's in your wallet? Learn more at Capital One dot com.", "Foo Fighters: Tiny Desk Concert", 1459, false, "wxaXWSVhRXU", "https://www.youtube.com/watch?v=wxaXWSVhRXU", "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].mp4", false, 2, ~U[2026-05-13 09:01:18Z]] 14:14:42.882 [debug] QUERY OK source="sources" db=0.4ms idle=4.5ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z], 2] 14:14:42.883 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms 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")))) [2] 14:14:42.921 [debug] QUERY OK source="media_items" db=0.2ms idle=2.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")))) [2] 14:14:42.922 [debug] QUERY OK source="media_items" db=0.4ms idle=2.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 14:14:42.922 [info] No notification servers provided for source 2 14:14:42.923 [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" [128, 2, ~U[2026-07-24 12:14:42Z], ~U[2026-07-24 12:14:42Z]] 14:14:42.924 [info] {"args":{"id":2},"id":68,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":136190080,"event":"job:stop","queue_time":285481,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 14:14:44.437 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=s7YQHWzZMYY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/48/c1/48c1776a9fd8d2964350dd83d706b7e36c43d1f6f7fd5fbf698531a32475c8a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:14:44.438 [debug] Running yt-dlp command for action: download 14:14:44.438 [debug] QUERY OK source="settings" db=0.3ms idle=1514.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:44.438 [debug] QUERY OK source="settings" db=0.1ms idle=1514.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:14:44.439 [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 [] 14:14:44.439 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=s7YQHWzZMYY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e0/a6/e0a643abb4f44cd2ca0b6caf7b6a7f27bd69f632a881ffd9aeefa4edb033bd3c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:14:51.041 [info] CONNECTED TO Phoenix.LiveView.Socket in 40µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "PBlwNlg2KxYbVklpTV0gPgMha0VJGzgsph6RmiaPi99Y74RFan-7qlWC", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:14:52.566 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:00.528 [info] {"source":"oban","duration":151,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:15:22.280 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dh6BCSzaF6g --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/20/2d/202d46cc0b66cdfcdf4dfef9308c147861bb068a8c56871d82d41bf0ab8a8ede.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:15:22.301 [debug] Running yt-dlp command for action: download_thumbnail 14:15:22.302 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:15:22.303 [debug] QUERY OK source="settings" db=0.1ms idle=1785.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:22.303 [debug] QUERY OK source="settings" db=0.2ms idle=1208.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:22.303 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dh6BCSzaF6g --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/44/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b3/8e/b38e32249eba0caee674c7862c6d854592ba689696aa674561316f644817dadc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:22.568 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:24.761 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=dh6BCSzaF6g --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/44/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b3/8e/b38e32249eba0caee674c7862c6d854592ba689696aa674561316f644817dadc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:15:24.762 [debug] QUERY OK db=0.2ms idle=1244.2ms begin [] 14:15:24.763 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:15:22Z], "/downloads/The Standup/2025-07-08 WTF Typescript?! (The Standup)/WTF Typescript?! (The Standup) [dh6BCSzaF6g].mp4", ~U[2026-07-24 12:15:24Z], 44] 14:15:24.764 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/44/metadata.json.gz", "/config/metadata/media_items/44/thumbnail.jpg", 44, ~U[2026-07-24 12:15:24Z], ~U[2026-07-24 12:15:24Z]] 14:15:24.764 [debug] QUERY OK db=0.2ms commit [] 14:15:24.765 [debug] QUERY OK source="media_items" db=1.1ms idle=1246.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [580223337, ~U[2026-07-24 12:15:24Z], 44] 14:15:24.765 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:15:24.766 [info] {"args":{"id":44},"id":48,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":47386213,"event":"job:stop","queue_time":906378751,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:15:24.772 [info] {"args":{"id":46},"id":50,"meta":{},"system_time":1784895324772457346,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:15:24.772 [debug] QUERY OK source="media_items" db=0.1ms idle=254.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" = ?) [46] 14:15:24.773 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:15:24.773 [debug] QUERY OK source="sources" db=0.2ms idle=8.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:15:24.773 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:15:24.774 [debug] QUERY OK source="media_items" db=0.2ms idle=7.3ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [46] 14:15:24.774 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [46] 14:15:24.775 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:15:24.775 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:24.775 [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 [] 14:15:24.775 [debug] Running yt-dlp command for action: get_downloadable_status 14:15:24.776 [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 [] 14:15:24.776 [debug] QUERY OK source="settings" db=0.0ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:24.776 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:24.776 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Aqj1Z1vgE6I --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/74/4e745dc5db334ce750f4f1fc8262b748ea3ee254bd1a592447d74a073c1a3b64.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:25.340 [info] GET / 14:15:25.340 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:15:25.342 [debug] QUERY OK source="settings" db=1.7ms idle=565.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:25.343 [debug] QUERY OK source="media_profiles" db=0.2ms idle=566.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:15:25.343 [debug] QUERY OK source="sources" db=0.0ms idle=566.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:15:25.343 [debug] QUERY OK source="media_items" db=0.4ms idle=566.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:15:25.344 [debug] QUERY OK source="media_items" db=0.1ms idle=237.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:15:25.344 [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 [] 14:15:25.344 [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 [] 14:15:25.345 [debug] QUERY OK source="settings" db=0.5ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:25.347 [debug] QUERY OK source="tasks" db=1.8ms idle=2.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:15:25.348 [debug] QUERY OK source="media_items" db=0.2ms 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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [45, 46] 14:15:25.349 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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)) [] 14:15:25.350 [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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:15:25.350 [debug] QUERY OK source="sources" db=0.1ms idle=5.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:15:25.353 [debug] QUERY OK source="media_items" db=0.2ms idle=5.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:15:25.354 [debug] QUERY OK source="media_items" db=0.4ms idle=5.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:15:25.355 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:15:25.356 [info] Sent 200 in 16ms 14:15:26.870 [info] GET /sources 14:15:26.870 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:15:26.871 [debug] QUERY OK source="settings" db=0.2ms idle=761.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:26.871 [debug] QUERY OK source="settings" db=0.1ms idle=353.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:26.871 [debug] QUERY OK source="settings" db=0.0ms idle=353.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:26.872 [debug] QUERY OK source="settings" db=0.2ms idle=354.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:26.872 [debug] QUERY OK source="settings" db=0.0ms idle=354.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:26.873 [debug] QUERY OK source="sources" db=0.4ms idle=1.6ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 14:15:26.876 [debug] QUERY OK source="sources" db=3.3ms idle=2.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", 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] 14:15:26.878 [info] Sent 200 in 8ms 14:15:27.160 [info] GET / 14:15:27.161 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:15:27.163 [debug] QUERY OK source="settings" db=0.3ms idle=290.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.163 [debug] QUERY OK source="media_profiles" db=0.5ms idle=290.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:15:27.164 [debug] QUERY OK source="sources" db=0.3ms idle=290.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:15:27.164 [debug] QUERY OK source="media_items" db=0.6ms idle=287.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:15:27.165 [debug] QUERY OK source="media_items" db=0.5ms idle=50.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:15:27.166 [debug] QUERY OK source="settings" db=0.4ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.166 [debug] QUERY OK source="settings" db=0.6ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.168 [debug] QUERY OK source="settings" db=0.7ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.169 [debug] QUERY OK source="tasks" db=0.8ms idle=3.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:15:27.170 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [45, 46] 14:15:27.171 [debug] QUERY OK source="media_items" db=0.5ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:15:27.172 [debug] QUERY OK source="media_items" db=0.7ms idle=5.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:15:27.173 [debug] QUERY OK source="sources" db=0.5ms idle=5.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:15:27.176 [debug] QUERY OK source="media_items" db=1.2ms idle=5.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"))) [] 14:15:27.178 [debug] QUERY OK source="media_items" db=1.2ms idle=6.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:15:27.179 [debug] QUERY OK source="sources" db=0.7ms idle=6.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:15:27.181 [info] Sent 200 in 20ms 14:15:27.756 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Aqj1Z1vgE6I --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/74/4e745dc5db334ce750f4f1fc8262b748ea3ee254bd1a592447d74a073c1a3b64.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:15:27.756 [debug] Running yt-dlp command for action: download 14:15:27.757 [debug] QUERY OK source="settings" db=0.6ms idle=584.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.758 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=584.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.759 [debug] QUERY OK source="settings" db=0.5ms idle=581.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:27.759 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Aqj1Z1vgE6I --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/14/50/145062d0f977fa14bda148cc93bc970d2e4182dd55795a4dae530a762b4f1931.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:46.586 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=s7YQHWzZMYY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e0/a6/e0a643abb4f44cd2ca0b6caf7b6a7f27bd69f632a881ffd9aeefa4edb033bd3c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:15:46.715 [debug] Running yt-dlp command for action: download_thumbnail 14:15:46.741 [debug] QUERY OK source="settings" db=20.2ms queue=0.1ms idle=1202.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:46.741 [debug] QUERY OK source="settings" db=0.3ms idle=1222.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:46.742 [debug] QUERY OK source="settings" db=0.2ms idle=1223.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:46.742 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=s7YQHWzZMYY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/45/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ab/ac/abacc32e87293d0233d5133f68046dcf63540b96e7e5586a8edee5ba94aa70e3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:49.932 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=s7YQHWzZMYY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/45/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ab/ac/abacc32e87293d0233d5133f68046dcf63540b96e7e5586a8edee5ba94aa70e3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:15:49.932 [debug] QUERY OK db=0.1ms queue=0.1ms idle=1413.7ms begin [] 14:15:49.933 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:15:46Z], "/downloads/The Standup/2025-06-30 How **WE** Use AI In Software Development/How **WE** Use AI In Software Development [s7YQHWzZMYY].mp4", ~U[2026-07-24 12:15:49Z], 45] 14:15:49.934 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/45/metadata.json.gz", "/config/metadata/media_items/45/thumbnail.jpg", 45, ~U[2026-07-24 12:15:49Z], ~U[2026-07-24 12:15:49Z]] 14:15:49.935 [debug] QUERY OK db=0.4ms commit [] 14:15:49.936 [debug] QUERY OK source="media_items" db=0.8ms idle=1416.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [370042237, ~U[2026-07-24 12:15:49Z], 45] 14:15:49.936 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:15:49.937 [info] {"args":{"id":45},"id":49,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":68392619,"event":"job:stop","queue_time":909540377,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:15:49.943 [info] {"args":{"id":47},"id":51,"meta":{},"system_time":1784895349943622046,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:15:49.944 [debug] QUERY OK source="media_items" db=0.2ms idle=782.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [47] 14:15:49.944 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:15:49.944 [debug] QUERY OK source="sources" db=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" = ?) [1] 14:15:49.944 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:15:49.945 [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 [47] 14:15:49.945 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [47] 14:15:49.945 [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] 14:15:49.946 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:49.946 [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 [] 14:15:49.946 [debug] Running yt-dlp command for action: get_downloadable_status 14:15:49.947 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:49.947 [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 [] 14:15:49.947 [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 [] 14:15:49.947 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=otYrZPbzfV0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/f9/4bf97a0422cd93333f14a93d4b3fd3afc7eac37edfce357d177f1672ee5c834e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:51.143 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:15:52.356 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=otYrZPbzfV0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/f9/4bf97a0422cd93333f14a93d4b3fd3afc7eac37edfce357d177f1672ee5c834e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:15:52.356 [debug] Running yt-dlp command for action: download 14:15:52.357 [debug] QUERY OK source="settings" db=0.1ms idle=837.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:52.357 [debug] QUERY OK source="settings" db=0.4ms idle=838.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:52.358 [debug] QUERY OK source="settings" db=0.3ms idle=838.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:15:52.358 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=otYrZPbzfV0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d9/1a/d91a96f5dcfb8660bdb4a87ab8e1a2e65b1fc1c8e7803c7fea343a692b420486.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:15:52.569 [info] {"source":"oban","duration":607,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:00.529 [info] {"source":"oban","duration":194,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:16:22.570 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:33.114 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Aqj1Z1vgE6I --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/14/50/145062d0f977fa14bda148cc93bc970d2e4182dd55795a4dae530a762b4f1931.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:16:33.140 [debug] Running yt-dlp command for action: download_thumbnail 14:16:33.140 [debug] QUERY OK source="settings" db=0.1ms idle=1621.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:33.141 [debug] QUERY OK source="settings" db=0.1ms idle=918.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:33.141 [debug] QUERY OK source="settings" db=0.2ms idle=622.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:33.141 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Aqj1Z1vgE6I --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/46/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0a/14/0a14cd8aaeb40262fc3f6eb438f6c17f2e73744bd8b2129fbdf82c90b2c5b83d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:16:36.249 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Aqj1Z1vgE6I --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/46/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0a/14/0a14cd8aaeb40262fc3f6eb438f6c17f2e73744bd8b2129fbdf82c90b2c5b83d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:16:36.249 [debug] QUERY OK db=0.0ms idle=1730.5ms begin [] 14:16:36.250 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:16:33Z], "/downloads/The Standup/2025-06-26 Why Does Software Keep Breaking?/Why Does Software Keep Breaking? [Aqj1Z1vgE6I].mp4", ~U[2026-07-24 12:16:36Z], 46] 14:16:36.250 [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/46/metadata.json.gz", "/config/metadata/media_items/46/thumbnail.jpg", 46, ~U[2026-07-24 12:16:36Z], ~U[2026-07-24 12:16:36Z]] 14:16:36.251 [debug] QUERY OK db=0.2ms commit [] 14:16:36.252 [debug] QUERY OK source="media_items" db=0.8ms idle=1732.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [310516445, ~U[2026-07-24 12:16:36Z], 46] 14:16:36.252 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:16:36.252 [info] {"args":{"id":46},"id":50,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":71479909,"event":"job:stop","queue_time":950771850,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:16:36.259 [info] {"args":{"id":48},"id":52,"meta":{},"system_time":1784895396259622575,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:16:36.260 [debug] QUERY OK source="media_items" db=0.3ms idle=31.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" = ?) [48] 14:16:36.261 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:16:36.262 [debug] QUERY OK source="sources" db=0.8ms 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" = ?) [1] 14:16:36.262 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=10.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:16:36.263 [debug] QUERY OK source="media_items" db=0.6ms idle=10.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [48] 14:16:36.264 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [48] 14:16:36.264 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:16:36.265 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:36.265 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:36.265 [debug] Running yt-dlp command for action: get_downloadable_status 14:16:36.266 [debug] QUERY OK source="settings" db=0.0ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:36.266 [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 [] 14:16:36.267 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:36.267 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t6qL_FbLArk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e6/94/e694cdd31d6ada0113aa09eb7b23655be965a6e0b35903c36c13a53a35925c5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:16:38.654 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t6qL_FbLArk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e6/94/e694cdd31d6ada0113aa09eb7b23655be965a6e0b35903c36c13a53a35925c5f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:16:38.655 [debug] Running yt-dlp command for action: download 14:16:38.655 [debug] QUERY OK source="settings" db=0.1ms idle=1136.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:38.655 [debug] QUERY OK source="settings" db=0.1ms queue=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 [] 14:16:38.656 [debug] QUERY OK source="settings" db=0.1ms idle=1136.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:16:38.656 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t6qL_FbLArk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b7/06/b706767883e59c3d8bbc30845c77e0945e467842a1da2391a9ac81ea59719c60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:16:51.488 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:16:52.571 [info] {"source":"oban","duration":544,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:00.530 [info] {"source":"oban","duration":404,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:17:12.940 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=otYrZPbzfV0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d9/1a/d91a96f5dcfb8660bdb4a87ab8e1a2e65b1fc1c8e7803c7fea343a692b420486.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:17:12.961 [debug] Running yt-dlp command for action: download_thumbnail 14:17:12.962 [debug] QUERY OK source="settings" db=0.1ms idle=672.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:12.962 [debug] QUERY OK source="settings" db=0.2ms idle=443.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:12.962 [debug] QUERY OK source="settings" db=0.2ms idle=443.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:12.963 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=otYrZPbzfV0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/47/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/eb/6d/eb6dcd9ccb2565636112e8b035d684d7208c03c1ce5c88f22016298b99a23aff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:17:15.536 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=otYrZPbzfV0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/47/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/eb/6d/eb6dcd9ccb2565636112e8b035d684d7208c03c1ce5c88f22016298b99a23aff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:17:15.537 [debug] QUERY OK db=0.2ms idle=1017.8ms begin [] 14:17:15.538 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:17:12Z], "/downloads/The Standup/2025-06-20 Keyboard Show and Tell | The Standup/Keyboard Show and Tell | The Standup [otYrZPbzfV0].mp4", ~U[2026-07-24 12:17:15Z], 47] 14:17:15.539 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/47/metadata.json.gz", "/config/metadata/media_items/47/thumbnail.jpg", 47, ~U[2026-07-24 12:17:15Z], ~U[2026-07-24 12:17:15Z]] 14:17:15.539 [debug] QUERY OK db=0.2ms commit [] 14:17:15.540 [debug] QUERY OK source="media_items" db=1.1ms idle=1020.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [500359994, ~U[2026-07-24 12:17:15Z], 47] 14:17:15.541 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:17:15.541 [info] {"args":{"id":47},"id":51,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":85597621,"event":"job:stop","queue_time":973942879,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:17:15.547 [info] {"args":{"id":49},"id":53,"meta":{},"system_time":1784895435547497277,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:17:15.547 [debug] QUERY OK source="media_items" db=0.1ms idle=254.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [49] 14:17:15.548 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:17:15.548 [debug] QUERY OK source="sources" db=0.1ms idle=8.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:17:15.548 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 14:17:15.549 [debug] QUERY OK source="media_items" db=0.1ms idle=7.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [49] 14:17:15.549 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [49] 14:17:15.549 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:17:15.550 [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 [] 14:17:15.550 [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 [] 14:17:15.550 [debug] Running yt-dlp command for action: get_downloadable_status 14:17:15.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 [] 14:17:15.551 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:15.551 [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 [] 14:17:15.551 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CwpzZ8AVio --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ff/06/ff068d6c91d3d6fa7d682bd9f7466a2200e9006fb9e3a982be1874de6a385205.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:17:18.189 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CwpzZ8AVio --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ff/06/ff068d6c91d3d6fa7d682bd9f7466a2200e9006fb9e3a982be1874de6a385205.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:17:18.190 [debug] Running yt-dlp command for action: download 14:17:18.190 [debug] QUERY OK source="settings" db=0.3ms idle=894.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:18.191 [debug] QUERY OK source="settings" db=0.2ms idle=672.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:18.191 [debug] QUERY OK source="settings" db=0.4ms idle=672.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:17:18.192 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CwpzZ8AVio --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/89/46/89460049bb7b2809f9b37dcfadc72a06b2c41a61ea12e755b73b2a47e4b29d4d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:17:22.572 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:52.063 [info] CONNECTED TO Phoenix.LiveView.Socket in 29µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:17:52.574 [info] {"source":"oban","duration":491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:57.047 [info] GET /media/00f5a2e5-0a5b-4e47-8531-2be60054e052/stream.mp4 14:17:57.047 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "00f5a2e5-0a5b-4e47-8531-2be60054e052"} Pipelines: [:maybe_basic_auth] 14:17:57.048 [debug] QUERY OK source="media_items" db=0.2ms idle=1529.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["00f5a2e5-0a5b-4e47-8531-2be60054e052"] 14:17:57.048 [debug] Invalid range request for media item: 00f5a2e5-0a5b-4e47-8531-2be60054e052 - serving full file 14:17:57.048 [info] Sent 200 in 944µs 14:18:00.531 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:18:13.697 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CwpzZ8AVio --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/89/46/89460049bb7b2809f9b37dcfadc72a06b2c41a61ea12e755b73b2a47e4b29d4d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:13.717 [debug] Running yt-dlp command for action: download_thumbnail 14:18:13.717 [debug] QUERY OK source="settings" db=0.1ms idle=1198.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:13.718 [debug] QUERY OK source="settings" db=0.1ms idle=1199.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:13.718 [debug] QUERY OK source="settings" db=0.1ms idle=1199.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:13.718 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CwpzZ8AVio --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/49/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ff/72/ff7222c217a3e13b35390e58fd654dbb57842feefcfdb30f38ed5d7c6a9a27cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:16.375 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_CwpzZ8AVio --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/49/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ff/72/ff7222c217a3e13b35390e58fd654dbb57842feefcfdb30f38ed5d7c6a9a27cd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:16.376 [debug] QUERY OK db=0.3ms idle=1857.3ms begin [] 14:18:16.377 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:18:13Z], "/downloads/The Standup/2025-06-13 How We Got Our First Dev Job/How We Got Our First Dev Job [_CwpzZ8AVio].mp4", ~U[2026-07-24 12:18:16Z], 49] 14:18:16.378 [debug] QUERY OK source="media_metadata" db=0.7ms 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/49/metadata.json.gz", "/config/metadata/media_items/49/thumbnail.jpg", 49, ~U[2026-07-24 12:18:16Z], ~U[2026-07-24 12:18:16Z]] 14:18:16.378 [debug] QUERY OK db=0.3ms commit [] 14:18:16.381 [debug] QUERY OK source="media_items" db=3.0ms idle=986.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [452435336, ~U[2026-07-24 12:18:16Z], 49] 14:18:16.382 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:18:16.382 [info] {"args":{"id":49},"id":53,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":60834768,"event":"job:stop","queue_time":1057546855,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:18:16.388 [info] {"args":{"id":50},"id":54,"meta":{},"system_time":1784895496388576538,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:18:16.389 [debug] QUERY OK source="media_items" db=0.2ms idle=869.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50] 14:18:16.389 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:18:16.389 [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" = ?) [1] 14:18:16.389 [debug] QUERY OK source="media_profiles" db=0.2ms idle=7.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:16.390 [debug] QUERY OK source="media_items" db=0.3ms idle=7.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [50] 14:18:16.391 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [50] 14:18:16.391 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:16.392 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:16.392 [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 [] 14:18:16.393 [debug] Running yt-dlp command for action: get_downloadable_status 14:18:16.393 [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 [] 14:18:16.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 [] 14:18:16.394 [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 [] 14:18:16.394 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/4c/f94caa00e920471222c037a6dbcd1ab9d158d9ccd0aea35fb3acc72f306e3e67.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:19.102 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f9/4c/f94caa00e920471222c037a6dbcd1ab9d158d9ccd0aea35fb3acc72f306e3e67.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:19.102 [debug] Running yt-dlp command for action: download 14:18:19.102 [debug] QUERY OK source="settings" db=0.3ms idle=1583.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:19.103 [debug] QUERY OK source="settings" db=0.5ms idle=1584.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:19.103 [debug] QUERY OK source="settings" db=0.2ms idle=1584.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:19.104 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b7/b5/b7b5938c59761301d14f6c21d9e9baa816345ad46766a97707554147479525dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:22.096 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b7/b5/b7b5938c59761301d14f6c21d9e9baa816345ad46766a97707554147479525dc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: unable to download video data: HTTP Error 403: Forbidden 14:18:22.096 [error] yt-dlp download error for media item #50: "ERROR: unable to download video data: HTTP Error 403: Forbidden\n" 14:18:22.097 [debug] QUERY OK source="media_items" db=0.8ms idle=1577.9ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: unable to download video data: HTTP Error 403: Forbidden\n", ~U[2026-07-24 12:18:22Z], 50] 14:18:22.098 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":50},"id":54,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5709091,"event":"job:exception","queue_time":1116387777,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:18:22.104 [info] {"args":{"id":51},"id":55,"meta":{},"system_time":1784895502104465774,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:18:22.104 [debug] QUERY OK source="media_items" db=0.1ms idle=699.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" = ?) [51] 14:18:22.105 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:18:22.105 [debug] QUERY OK source="sources" db=0.1ms idle=586.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:18:22.105 [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] 14:18:22.106 [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 [51] 14:18:22.106 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [51] 14:18:22.107 [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] 14:18:22.107 [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 [] 14:18:22.107 [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 [] 14:18:22.107 [debug] Running yt-dlp command for action: get_downloadable_status 14:18:22.108 [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 [] 14:18:22.108 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:22.108 [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 [] 14:18:22.109 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EIBxRMH4bvs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/eb/ab/ebab85ae8b6a8330e2d94d5dfe437ede01b59401b096d02928a72fd0ecb6dd15.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:22.575 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:24.397 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EIBxRMH4bvs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/eb/ab/ebab85ae8b6a8330e2d94d5dfe437ede01b59401b096d02928a72fd0ecb6dd15.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:24.397 [debug] Running yt-dlp command for action: download 14:18:24.398 [debug] QUERY OK source="settings" db=0.2ms idle=1822.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:24.398 [debug] QUERY OK source="settings" db=0.3ms idle=989.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:24.399 [debug] QUERY OK source="settings" db=0.3ms idle=880.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:24.399 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EIBxRMH4bvs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fa/31/fa316b9142584ee0896e9bb3c89032018529857cf83f76b47aaf61df0be4a5d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:40.616 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t6qL_FbLArk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b7/06/b706767883e59c3d8bbc30845c77e0945e467842a1da2391a9ac81ea59719c60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:40.641 [debug] Running yt-dlp command for action: download_thumbnail 14:18:40.642 [debug] QUERY OK source="settings" db=0.2ms idle=1123.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:40.642 [debug] QUERY OK source="settings" db=0.1ms idle=1123.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:40.642 [debug] QUERY OK source="settings" db=0.1ms idle=1123.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:40.643 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t6qL_FbLArk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/48/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d4/1a/d41a8a33a671bfc314ca5ecc0308f09250e7392eff70e99fa37e8a2bb8aad243.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:43.129 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t6qL_FbLArk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/48/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d4/1a/d41a8a33a671bfc314ca5ecc0308f09250e7392eff70e99fa37e8a2bb8aad243.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:43.130 [debug] QUERY OK db=0.2ms idle=1610.9ms begin [] 14:18:43.131 [debug] QUERY OK source="media_items" db=1.3ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:18:40Z], "/downloads/The Standup/2025-06-18 The Real Problems w⧸ Git/The Real Problems w⧸ Git [t6qL_FbLArk].mp4", ~U[2026-07-24 12:18:43Z], 48] 14:18:43.132 [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/48/metadata.json.gz", "/config/metadata/media_items/48/thumbnail.jpg", 48, ~U[2026-07-24 12:18:43Z], ~U[2026-07-24 12:18:43Z]] 14:18:43.132 [debug] QUERY OK db=0.2ms commit [] 14:18:43.133 [debug] QUERY OK source="media_items" db=0.6ms idle=672.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [649652778, ~U[2026-07-24 12:18:43Z], 48] 14:18:43.133 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:18:43.134 [info] {"args":{"id":48},"id":52,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":126874081,"event":"job:stop","queue_time":1019258802,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:18:43.141 [info] {"args":{"id":52},"id":56,"meta":{},"system_time":1784895523141537097,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:18:43.142 [debug] QUERY OK source="media_items" db=0.4ms idle=622.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [52] 14:18:43.142 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:18:43.142 [debug] QUERY OK source="sources" db=0.3ms idle=9.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:18:43.143 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:43.143 [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 [52] 14:18:43.144 [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" = ?) [52] 14:18:43.144 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:18:43.144 [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 [] 14:18:43.144 [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 [] 14:18:43.145 [debug] Running yt-dlp command for action: get_downloadable_status 14:18:43.145 [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 [] 14:18:43.145 [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 [] 14:18:43.146 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:43.146 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=M2ZW4uwxU8k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/32/bd/32bd25167db3fa9f3910e21fa38a888240736436f6c75571a05858d039088a39.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:47.083 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=M2ZW4uwxU8k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/32/bd/32bd25167db3fa9f3910e21fa38a888240736436f6c75571a05858d039088a39.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:18:47.083 [debug] Running yt-dlp command for action: download 14:18:47.084 [debug] QUERY OK source="settings" db=0.3ms idle=617.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:47.084 [debug] QUERY OK source="settings" db=0.1ms idle=536.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:47.084 [debug] QUERY OK source="settings" db=0.1ms idle=536.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:18:47.085 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=M2ZW4uwxU8k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f0/19/f019acddc389fb160f15be48d91967b1c25769cae7ff2f900e56c5b9c90708ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:18:52.152 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:18:52.576 [info] {"source":"oban","duration":588,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:00.533 [info] {"source":"oban","duration":190,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:19:22.577 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:52.362 [info] CONNECTED TO Phoenix.LiveView.Socket in 36µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:19:52.579 [info] {"source":"oban","duration":557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:00.534 [info] {"source":"oban","duration":236,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:20:22.580 [info] {"source":"oban","duration":528,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:52.238 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EIBxRMH4bvs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fa/31/fa316b9142584ee0896e9bb3c89032018529857cf83f76b47aaf61df0be4a5d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:20:52.260 [debug] Running yt-dlp command for action: download_thumbnail 14:20:52.261 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1711.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:52.261 [debug] QUERY OK source="settings" db=0.4ms idle=1711.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:52.262 [debug] QUERY OK source="settings" db=0.2ms idle=1608.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:52.262 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EIBxRMH4bvs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/51/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/52/55/52552d906ff3d15c84b3fa90542c02d59a950d0813d21875b112418c1d3ce091.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:20:52.415 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:20:52.584 [info] {"source":"oban","duration":2752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:54.862 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EIBxRMH4bvs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/51/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/52/55/52552d906ff3d15c84b3fa90542c02d59a950d0813d21875b112418c1d3ce091.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:20:54.863 [debug] QUERY OK db=0.2ms idle=1311.6ms begin [] 14:20:54.865 [debug] QUERY OK source="media_items" db=1.3ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:20:52Z], "/downloads/The Standup/2025-06-06 DHH IS RIGHT ABOUT EVERYTHING (Again)?/DHH IS RIGHT ABOUT EVERYTHING (Again)? [EIBxRMH4bvs].mp4", ~U[2026-07-24 12:20:54Z], 51] 14:20:54.866 [debug] QUERY OK source="media_metadata" db=1.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/51/metadata.json.gz", "/config/metadata/media_items/51/thumbnail.jpg", 51, ~U[2026-07-24 12:20:54Z], ~U[2026-07-24 12:20:54Z]] 14:20:54.867 [debug] QUERY OK db=0.4ms commit [] 14:20:54.876 [debug] QUERY OK source="media_items" db=8.9ms idle=1315.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [554480712, ~U[2026-07-24 12:20:54Z], 51] 14:20:54.877 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:20:54.877 [info] {"args":{"id":51},"id":55,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":152772648,"event":"job:stop","queue_time":1121103852,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:20:54.884 [info] {"args":{"id":53},"id":57,"meta":{},"system_time":1784895654884531545,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:20:54.885 [debug] QUERY OK source="media_items" db=0.4ms idle=224.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [53] 14:20:54.885 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:20:54.885 [debug] QUERY OK source="sources" db=0.3ms idle=18.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:20:54.886 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:20:54.887 [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 [53] 14:20:54.889 [debug] QUERY OK source="media_metadata" db=0.3ms idle=4.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" = ?) [53] 14:20:54.889 [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] 14:20:54.889 [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:20:54.889 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:54.890 [debug] Running yt-dlp command for action: get_downloadable_status 14:20:54.890 [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:20:54.891 [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 [] 14:20:54.891 [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 [] 14:20:54.891 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hQJcGmWXDJw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/7f/497ff896572b9e12cb35d7d007df39a74c4b0952957e984129b7f55bae234682.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:20:57.300 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hQJcGmWXDJw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/7f/497ff896572b9e12cb35d7d007df39a74c4b0952957e984129b7f55bae234682.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:20:57.301 [debug] Running yt-dlp command for action: download 14:20:57.301 [debug] QUERY OK source="settings" db=0.4ms idle=749.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:57.301 [debug] QUERY OK source="settings" db=0.1ms idle=749.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:57.302 [debug] QUERY OK source="settings" db=0.1ms idle=750.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:20:57.302 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hQJcGmWXDJw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f5/fb/f5fbeb757c7c3a8060100ec0814a086bc18ebd03b4b47a2570d2c340bc4e14fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:21:00.535 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:21:22.586 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:29.622 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=M2ZW4uwxU8k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f0/19/f019acddc389fb160f15be48d91967b1c25769cae7ff2f900e56c5b9c90708ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:21:29.647 [debug] Running yt-dlp command for action: download_thumbnail 14:21:29.648 [debug] QUERY OK source="settings" db=0.1ms idle=1095.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:29.648 [debug] QUERY OK source="settings" db=0.3ms idle=1096.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:29.648 [debug] QUERY OK source="settings" db=0.2ms idle=1096.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:29.649 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=M2ZW4uwxU8k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/52/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/2f/cc/2fcccfc305cbe63e6394968d79ee20807565596d51922cddfc06d86eccb17669.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:21:32.157 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=M2ZW4uwxU8k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/52/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/2f/cc/2fcccfc305cbe63e6394968d79ee20807565596d51922cddfc06d86eccb17669.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:21:32.158 [debug] QUERY OK db=0.0ms idle=1413.0ms begin [] 14:21:32.159 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:21:29Z], "/downloads/The Standup/2025-05-30 Why Use Windows??/Why Use Windows?? [M2ZW4uwxU8k].mp4", ~U[2026-07-24 12:21:32Z], 52] 14:21:32.160 [debug] QUERY OK source="media_metadata" db=0.7ms 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/52/metadata.json.gz", "/config/metadata/media_items/52/thumbnail.jpg", 52, ~U[2026-07-24 12:21:32Z], ~U[2026-07-24 12:21:32Z]] 14:21:32.161 [debug] QUERY OK db=0.4ms commit [] 14:21:32.162 [debug] QUERY OK source="media_items" db=1.3ms idle=609.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [701285146, ~U[2026-07-24 12:21:32Z], 52] 14:21:32.162 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:21:32.163 [info] {"args":{"id":52},"id":56,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":169021415,"event":"job:stop","queue_time":1141140853,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:21:32.170 [info] {"args":{"id":54},"id":58,"meta":{},"system_time":1784895692170534738,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:21:32.171 [debug] QUERY OK source="media_items" db=0.9ms idle=422.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [54] 14:21:32.171 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:21:32.172 [debug] QUERY OK source="sources" db=0.2ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:21:32.172 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:21:32.173 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=9.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [54] 14:21:32.175 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [54] 14:21:32.175 [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] 14:21:32.175 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:32.176 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:32.176 [debug] Running yt-dlp command for action: get_downloadable_status 14:21:32.177 [debug] QUERY OK source="settings" db=0.2ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:32.178 [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 [] 14:21:32.178 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:32.178 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CUknkajygOU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3e/ea/3eea08822a640357a56322ea4585cfeb05a0bd4fcc592f2136b17e60a7116a5a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:21:34.745 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CUknkajygOU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3e/ea/3eea08822a640357a56322ea4585cfeb05a0bd4fcc592f2136b17e60a7116a5a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:21:34.745 [debug] Running yt-dlp command for action: download 14:21:34.746 [debug] QUERY OK source="settings" db=0.3ms idle=1194.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:34.746 [debug] QUERY OK source="settings" db=0.1ms idle=1194.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:34.747 [debug] QUERY OK source="settings" db=0.1ms idle=1194.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:34.747 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CUknkajygOU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bd/45/bd45181ab00e11accc63dc194f7c167cb360f0f58d78cec8edfb7643d6c9e40e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:21:52.587 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:52.649 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:21:55.597 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hQJcGmWXDJw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f5/fb/f5fbeb757c7c3a8060100ec0814a086bc18ebd03b4b47a2570d2c340bc4e14fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:21:55.617 [debug] Running yt-dlp command for action: download_thumbnail 14:21:55.618 [debug] QUERY OK source="settings" db=0.1ms idle=1066.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:55.618 [debug] QUERY OK source="settings" db=0.0ms idle=1066.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:55.619 [debug] QUERY OK source="settings" db=0.1ms idle=1067.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:55.619 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hQJcGmWXDJw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/53/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0c/e3/0ce3c0918fe31b6b944ba3ee7c1ecb0b394f7dc80fbaf3e7cc1194086fc0db5b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:21:58.112 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hQJcGmWXDJw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/53/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0c/e3/0ce3c0918fe31b6b944ba3ee7c1ecb0b394f7dc80fbaf3e7cc1194086fc0db5b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:21:58.113 [debug] QUERY OK db=0.2ms idle=1325.8ms begin [] 14:21:58.114 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:21:55Z], "/downloads/The Standup/2025-05-26 Don't Clean Code w⧸ Creator of HTMX/Don't Clean Code w⧸ Creator of HTMX [hQJcGmWXDJw].mp4", ~U[2026-07-24 12:21:58Z], 53] 14:21:58.115 [debug] QUERY OK source="media_metadata" db=1.1ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/53/metadata.json.gz", "/config/metadata/media_items/53/thumbnail.jpg", 53, ~U[2026-07-24 12:21:58Z], ~U[2026-07-24 12:21:58Z]] 14:21:58.115 [debug] QUERY OK db=0.4ms commit [] 14:21:58.117 [debug] QUERY OK source="media_items" db=0.9ms idle=564.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [573213891, ~U[2026-07-24 12:21:58Z], 53] 14:21:58.117 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:21:58.117 [info] {"args":{"id":53},"id":57,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":63232740,"event":"job:stop","queue_time":1271883852,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:21:58.124 [info] {"args":{"id":55},"id":59,"meta":{},"system_time":1784895718124458030,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:21:58.124 [debug] QUERY OK source="media_items" db=0.2ms idle=336.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" = ?) [55] 14:21:58.125 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:21:58.125 [debug] QUERY OK source="sources" db=0.3ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:21:58.126 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:21:58.126 [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 [55] 14:21:58.127 [debug] QUERY OK source="media_metadata" db=0.5ms 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" = ?) [55] 14:21:58.128 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:21:58.128 [debug] QUERY OK source="settings" db=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:58.128 [debug] QUERY OK source="settings" db=0.0ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:58.129 [debug] Running yt-dlp command for action: get_downloadable_status 14:21:58.129 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:21:58.129 [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 [] 14:21:58.129 [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 [] 14:21:58.129 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NMgruCb5oWE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/dd/4bdd02678049ea8fd532301c13e771fe6456b753e26926de8f6639dbc2dbd8fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:00.536 [info] {"source":"oban","duration":338,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:22:01.055 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NMgruCb5oWE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/dd/4bdd02678049ea8fd532301c13e771fe6456b753e26926de8f6639dbc2dbd8fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:01.055 [debug] Running yt-dlp command for action: download 14:22:01.056 [debug] QUERY OK source="settings" db=0.3ms idle=1504.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:01.056 [debug] QUERY OK source="settings" db=0.4ms idle=1504.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:01.057 [debug] QUERY OK source="settings" db=0.2ms idle=1265.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:01.057 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NMgruCb5oWE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ec/08/ec0821c6d470f487e3f19b1b04874b2fbfe22f5be632016b8736d70aaf388728.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:22.588 [info] {"source":"oban","duration":1034,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:30.502 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NMgruCb5oWE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ec/08/ec0821c6d470f487e3f19b1b04874b2fbfe22f5be632016b8736d70aaf388728.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:30.523 [debug] Running yt-dlp command for action: download_thumbnail 14:22:30.524 [debug] QUERY OK source="settings" db=0.1ms idle=1972.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:30.524 [debug] QUERY OK source="settings" db=0.2ms idle=1972.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:30.525 [debug] QUERY OK source="settings" db=0.1ms idle=1973.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:30.525 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NMgruCb5oWE --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/55/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/be/57/be576b9faab1c34fc0e024417f360f1f1f5eb98d6368bd646d310ca744cec876.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:35.399 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NMgruCb5oWE --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/55/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/be/57/be576b9faab1c34fc0e024417f360f1f1f5eb98d6368bd646d310ca744cec876.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:35.400 [debug] QUERY OK db=0.0ms queue=0.4ms idle=1848.2ms begin [] 14:22:35.401 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:22:30Z], "/downloads/The Standup/2025-05-19 ThePrimeagen's Arch Experience - Standup #7/ThePrimeagen's Arch Experience - Standup #7 [NMgruCb5oWE].mp4", ~U[2026-07-24 12:22:35Z], 55] 14:22:35.402 [debug] QUERY OK source="media_metadata" db=0.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/55/metadata.json.gz", "/config/metadata/media_items/55/thumbnail.jpg", 55, ~U[2026-07-24 12:22:35Z], ~U[2026-07-24 12:22:35Z]] 14:22:35.402 [debug] QUERY OK db=0.3ms commit [] 14:22:35.404 [debug] QUERY OK source="media_items" db=1.2ms idle=1851.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [418443509, ~U[2026-07-24 12:22:35Z], 55] 14:22:35.404 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:22:35.405 [info] {"args":{"id":55},"id":59,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37280438,"event":"job:stop","queue_time":1331123797,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:22:35.411 [info] {"args":{"id":56},"id":60,"meta":{},"system_time":1784895755411496469,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:22:35.412 [debug] QUERY OK source="media_items" db=0.2ms idle=567.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [56] 14:22:35.412 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:22:35.412 [debug] QUERY OK source="sources" db=0.2ms idle=9.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:22:35.412 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:35.413 [debug] QUERY OK source="media_items" db=0.3ms 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 [56] 14:22:35.414 [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" = ?) [56] 14:22:35.414 [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] 14:22:35.414 [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 [] 14:22:35.415 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:35.415 [debug] Running yt-dlp command for action: get_downloadable_status 14:22:35.416 [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 [] 14:22:35.416 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:35.416 [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 [] 14:22:35.416 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kJWsFWY25GA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ee/1a/ee1a0ac44209f5bcf0b8e75aa26fb15240db8d218a987d1dc35ecdffd10b43d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:38.217 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kJWsFWY25GA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ee/1a/ee1a0ac44209f5bcf0b8e75aa26fb15240db8d218a987d1dc35ecdffd10b43d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:38.217 [debug] Running yt-dlp command for action: download 14:22:38.218 [debug] QUERY OK source="settings" db=0.1ms idle=1665.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:38.218 [debug] QUERY OK source="settings" db=0.0ms idle=1666.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:38.218 [debug] QUERY OK source="settings" db=0.1ms idle=1666.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:38.218 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kJWsFWY25GA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/dc/78/dc782f828b2a8b9547a2868cab7e0c8fd8643c35e368cb32184feb7762878e8f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:48.167 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CUknkajygOU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bd/45/bd45181ab00e11accc63dc194f7c167cb360f0f58d78cec8edfb7643d6c9e40e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:48.189 [debug] Running yt-dlp command for action: download_thumbnail 14:22:48.190 [debug] QUERY OK source="settings" db=0.2ms idle=1329.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:48.190 [debug] QUERY OK source="settings" db=0.1ms idle=638.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:48.191 [debug] QUERY OK source="settings" db=0.4ms idle=638.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:48.191 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CUknkajygOU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/54/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a3/74/a374dedb9b609620c40a8446568ce8b33f333e97f19ab0191e08fb2f46fa9a7c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:50.772 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CUknkajygOU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/54/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a3/74/a374dedb9b609620c40a8446568ce8b33f333e97f19ab0191e08fb2f46fa9a7c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:50.773 [debug] QUERY OK db=0.0ms idle=1221.3ms begin [] 14:22:50.774 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:22:48Z], "/downloads/The Standup/2025-05-23 New Design Meta? URLs are dead? - Standup #8/New Design Meta? URLs are dead? - Standup #8 [CUknkajygOU].mp4", ~U[2026-07-24 12:22:50Z], 54] 14:22:50.774 [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/54/metadata.json.gz", "/config/metadata/media_items/54/thumbnail.jpg", 54, ~U[2026-07-24 12:22:50Z], ~U[2026-07-24 12:22:50Z]] 14:22:50.775 [debug] QUERY OK db=0.1ms commit [] 14:22:50.776 [debug] QUERY OK source="media_items" db=0.8ms idle=1223.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [654141311, ~U[2026-07-24 12:22:50Z], 54] 14:22:50.776 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:22:50.777 [info] {"args":{"id":54},"id":58,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":78606308,"event":"job:stop","queue_time":1307169694,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:22:50.783 [info] {"args":{"id":57},"id":61,"meta":{},"system_time":1784895770783413924,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:22:50.784 [debug] QUERY OK source="media_items" db=0.3ms idle=918.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" = ?) [57] 14:22:50.784 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:22:50.785 [debug] QUERY OK source="sources" db=0.3ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:22:50.785 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:50.786 [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 [57] 14:22:50.786 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [57] 14:22:50.787 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:22:50.787 [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 [] 14:22:50.787 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:50.788 [debug] Running yt-dlp command for action: get_downloadable_status 14:22:50.789 [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 [] 14:22:50.789 [debug] QUERY OK source="settings" db=0.1ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:50.789 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:50.789 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1aarKjyj-x4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/2e/db2e581c5b10724ec948c0feefd0ce2b94184325c0e9e392ef0afb0eb40e2f0a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:52.590 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:52.806 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:22:53.556 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1aarKjyj-x4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/2e/db2e581c5b10724ec948c0feefd0ce2b94184325c0e9e392ef0afb0eb40e2f0a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:53.557 [debug] Running yt-dlp command for action: download 14:22:53.557 [debug] QUERY OK source="settings" db=0.3ms idle=1005.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:53.558 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:22:53.558 [debug] QUERY OK source="settings" db=0.2ms idle=1006.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:53.558 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1aarKjyj-x4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9e/55/9e551588e983efe14aa44d21482f733a5827ec428da6485486d731606f1c1143.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:22:59.442 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kJWsFWY25GA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/dc/78/dc782f828b2a8b9547a2868cab7e0c8fd8643c35e368cb32184feb7762878e8f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:22:59.462 [debug] Running yt-dlp command for action: download_thumbnail 14:22:59.463 [debug] QUERY OK source="settings" db=0.1ms idle=1911.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:59.463 [debug] QUERY OK source="settings" db=0.4ms idle=1911.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:59.464 [debug] QUERY OK source="settings" db=0.2ms idle=1589.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:22:59.464 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kJWsFWY25GA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/56/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/04/f1/04f12d3d13c7f3e9e69ae841fbf5451ad32552d719962260d1b9733579374b13.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:00.537 [info] {"source":"oban","duration":215,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:23:04.033 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kJWsFWY25GA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/56/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/04/f1/04f12d3d13c7f3e9e69ae841fbf5451ad32552d719962260d1b9733579374b13.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:23:04.033 [debug] QUERY OK db=0.1ms idle=1481.4ms begin [] 14:23:04.035 [debug] QUERY OK source="media_items" db=1.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:22:59Z], "/downloads/The Standup/2025-05-13 How BAD Is Test Driven Development? - The Standup #6/How BAD Is Test Driven Development? - The Standup #6 [kJWsFWY25GA].mp4", ~U[2026-07-24 12:23:04Z], 56] 14:23:04.037 [debug] QUERY OK source="media_metadata" db=1.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/56/metadata.json.gz", "/config/metadata/media_items/56/thumbnail.jpg", 56, ~U[2026-07-24 12:23:04Z], ~U[2026-07-24 12:23:04Z]] 14:23:04.037 [debug] QUERY OK db=0.2ms commit [] 14:23:04.039 [debug] QUERY OK source="media_items" db=1.2ms idle=1486.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [352689715, ~U[2026-07-24 12:23:04Z], 56] 14:23:04.039 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:23:04.042 [info] {"args":{"id":56},"id":60,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":28628223,"event":"job:stop","queue_time":1367410721,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:23:04.049 [info] {"args":{"id":58},"id":62,"meta":{},"system_time":1784895784049704566,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:23:04.050 [debug] QUERY OK source="media_items" db=0.5ms idle=165.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" = ?) [58] 14:23:04.050 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:23:04.052 [debug] QUERY OK source="sources" db=1.0ms 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" = ?) [1] 14:23:04.052 [debug] QUERY OK source="media_profiles" db=0.3ms idle=12.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:23:04.053 [debug] QUERY OK source="media_items" db=0.5ms idle=10.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [58] 14:23:04.055 [debug] QUERY OK source="media_metadata" db=0.1ms queue=0.7ms idle=4.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [58] 14:23:04.055 [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] 14:23:04.056 [debug] QUERY OK source="settings" db=0.5ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:04.056 [debug] QUERY OK source="settings" db=0.2ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:04.056 [debug] Running yt-dlp command for action: get_downloadable_status 14:23:04.057 [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 [] 14:23:04.057 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:04.058 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:04.058 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nmlkY9e4JjQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/8e/4b8e4ad27ded33a3be6574b233d12f546ff08b8fe26587485c4ec083691aa4c8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:06.869 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nmlkY9e4JjQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4b/8e/4b8e4ad27ded33a3be6574b233d12f546ff08b8fe26587485c4ec083691aa4c8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:23:06.869 [debug] Running yt-dlp command for action: download 14:23:06.870 [debug] QUERY OK source="settings" db=0.3ms idle=1318.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:06.871 [debug] QUERY OK source="settings" db=0.5ms idle=1319.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:06.871 [debug] QUERY OK source="settings" db=0.2ms idle=1319.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:06.872 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nmlkY9e4JjQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/42/69/4269db9a71fc6ced0dc52b9d97b81792bee6e00745a5da82803de05bdc5703e8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:21.502 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1aarKjyj-x4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9e/55/9e551588e983efe14aa44d21482f733a5827ec428da6485486d731606f1c1143.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:23:21.523 [debug] Running yt-dlp command for action: download_thumbnail 14:23:21.523 [debug] QUERY OK source="settings" db=0.1ms idle=1612.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:21.524 [debug] QUERY OK source="settings" db=0.3ms idle=972.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:21.524 [debug] QUERY OK source="settings" db=0.1ms queue=0.3ms idle=972.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:21.525 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1aarKjyj-x4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/63/1b/631b9f5588bfc762dfdbd6e53d3d4eb4fd0e23f8b355720992aef711049de5e4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:22.592 [info] {"source":"oban","duration":452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:24.606 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1aarKjyj-x4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/57/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/63/1b/631b9f5588bfc762dfdbd6e53d3d4eb4fd0e23f8b355720992aef711049de5e4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:23:24.607 [debug] QUERY OK db=0.6ms idle=689.3ms begin [] 14:23:24.608 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:23:21Z], "/downloads/The Standup/2025-04-26 Cheat On Everything - The Standup Ep 5/Cheat On Everything - The Standup Ep 5 [1aarKjyj-x4].mp4", ~U[2026-07-24 12:23:24Z], 57] 14:23:24.609 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/57/metadata.json.gz", "/config/metadata/media_items/57/thumbnail.jpg", 57, ~U[2026-07-24 12:23:24Z], ~U[2026-07-24 12:23:24Z]] 14:23:24.609 [debug] QUERY OK db=0.3ms commit [] 14:23:24.618 [debug] QUERY OK source="media_items" db=8.3ms idle=58.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [337582924, ~U[2026-07-24 12:23:24Z], 57] 14:23:24.618 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:23:24.619 [info] {"args":{"id":57},"id":61,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":33835238,"event":"job:stop","queue_time":1380782713,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:23:24.625 [info] {"args":{"id":59},"id":63,"meta":{},"system_time":1784895804625518063,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:23:24.626 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=73.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" = ?) [59] 14:23:24.626 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:23:24.626 [debug] QUERY OK source="sources" db=0.1ms idle=16.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:23:24.627 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:23:24.627 [debug] QUERY OK source="media_items" db=0.3ms 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 [59] 14:23:24.628 [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" = ?) [59] 14:23:24.629 [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] 14:23:24.629 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:24.629 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:24.630 [debug] Running yt-dlp command for action: get_downloadable_status 14:23:24.631 [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:23:24.631 [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 [] 14:23:24.631 [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 [] 14:23:24.632 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nCxU-OBoISk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9a/38/9a3853ebfe267a60b4e1ce9594a77c12875237344c6c8e6ca45731a41b1866f9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:27.064 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nCxU-OBoISk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9a/38/9a3853ebfe267a60b4e1ce9594a77c12875237344c6c8e6ca45731a41b1866f9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:23:27.064 [debug] Running yt-dlp command for action: download 14:23:27.064 [debug] QUERY OK source="settings" db=0.4ms idle=512.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:27.065 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=512.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:27.065 [debug] QUERY OK source="settings" db=0.2ms idle=513.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:23:27.066 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nCxU-OBoISk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6f/14/6f14b5891737d38d129b8f315f44f5cc7b2047ea5fed8c6e8017217daa7a78bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:23:52.593 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:52.859 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:24:00.538 [info] {"source":"oban","duration":285,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:24:02.174 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nCxU-OBoISk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6f/14/6f14b5891737d38d129b8f315f44f5cc7b2047ea5fed8c6e8017217daa7a78bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:02.196 [debug] Running yt-dlp command for action: download_thumbnail 14:24:02.198 [debug] QUERY OK source="settings" db=0.3ms idle=1645.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:02.198 [debug] QUERY OK source="settings" db=0.0ms idle=1646.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:02.199 [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 [] 14:24:02.199 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nCxU-OBoISk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/59/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/00/8b/008b161d8e63adab1a23df8b564cded8051dfbb943d901aa520652b4d94bfca5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:03.962 [info] GET / 14:24:03.962 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:24:03.963 [debug] QUERY OK source="settings" db=0.6ms idle=987.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:03.964 [debug] QUERY OK source="media_profiles" db=0.1ms idle=411.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:24:03.964 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=412.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:24:03.965 [debug] QUERY OK source="media_items" db=0.6ms idle=412.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:24:03.965 [debug] QUERY OK source="media_items" db=0.4ms idle=413.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:24:03.966 [debug] QUERY OK source="settings" db=0.5ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:03.967 [debug] QUERY OK source="settings" db=0.4ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:03.968 [debug] QUERY OK source="settings" db=0.7ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:03.969 [debug] QUERY OK source="tasks" db=0.4ms 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:24:03.970 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [58, 59] 14:24:03.971 [debug] QUERY OK source="media_items" db=0.1ms idle=4.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)) [] 14:24:03.972 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:24:03.973 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:24:03.975 [debug] QUERY OK source="media_items" db=0.2ms idle=5.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:24:03.976 [debug] QUERY OK source="media_items" db=0.9ms idle=5.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:24:03.979 [debug] QUERY OK source="sources" db=1.9ms queue=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" = ?) [2] 14:24:03.980 [info] Sent 200 in 17ms 14:24:04.939 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nCxU-OBoISk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/59/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/00/8b/008b161d8e63adab1a23df8b564cded8051dfbb943d901aa520652b4d94bfca5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:04.940 [debug] QUERY OK db=0.3ms idle=966.4ms begin [] 14:24:04.940 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:24:02Z], "/downloads/The Standup/2025-04-03 Making A Game GOOD - The Standup EP 3/Making A Game GOOD - The Standup EP 3 [nCxU-OBoISk].mp4", ~U[2026-07-24 12:24:04Z], 59] 14:24:04.941 [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/59/metadata.json.gz", "/config/metadata/media_items/59/thumbnail.jpg", 59, ~U[2026-07-24 12:24:04Z], ~U[2026-07-24 12:24:04Z]] 14:24:04.941 [debug] QUERY OK db=0.1ms commit [] 14:24:04.942 [debug] QUERY OK source="media_items" db=0.6ms idle=966.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [241119880, ~U[2026-07-24 12:24:04Z], 59] 14:24:04.942 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:04.942 [info] {"args":{"id":59},"id":63,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":40317011,"event":"job:stop","queue_time":1411624853,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:04.949 [info] {"args":{"id":60},"id":64,"meta":{},"system_time":1784895844949463408,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:04.950 [debug] QUERY OK source="media_items" db=0.3ms idle=970.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" = ?) [60] 14:24:04.950 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:04.950 [debug] QUERY OK source="sources" db=0.1ms idle=8.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:24:04.950 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=8.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:04.951 [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 [60] 14:24:04.952 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [60] 14:24:04.953 [debug] QUERY OK source="media_profiles" db=0.5ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:04.953 [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 [] 14:24:04.953 [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 [] 14:24:04.953 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:04.954 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:04.954 [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 [] 14:24:04.954 [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 [] 14:24:04.954 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6bsaPvyEKQo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/97/04/9704f277bef06afe811e2ad7d22ae6b88c543cd18ce44ceea5231edab4c15d2d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:07.577 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6bsaPvyEKQo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/97/04/9704f277bef06afe811e2ad7d22ae6b88c543cd18ce44ceea5231edab4c15d2d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:07.578 [debug] Running yt-dlp command for action: download 14:24:07.578 [debug] QUERY OK source="settings" db=0.3ms idle=1026.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:07.579 [debug] QUERY OK source="settings" db=0.2ms idle=1026.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:07.579 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1027.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:07.580 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6bsaPvyEKQo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1f/b9/1fb93bd102311da29e294c161872446a6d0160a6502e584feb3f3d5deae484b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:22.594 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:23.932 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nmlkY9e4JjQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/42/69/4269db9a71fc6ced0dc52b9d97b81792bee6e00745a5da82803de05bdc5703e8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:23.952 [debug] Running yt-dlp command for action: download_thumbnail 14:24:23.953 [debug] QUERY OK source="settings" db=0.1ms idle=1399.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:23.953 [debug] QUERY OK source="settings" db=0.3ms idle=1358.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:23.954 [debug] QUERY OK source="settings" db=0.1ms idle=922.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:23.954 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nmlkY9e4JjQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fa/9f/fa9f9e4b3eda6caa5b5f7f8ef672f896892319248979fc779cde8e1ac7239cdb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:28.167 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6bsaPvyEKQo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1f/b9/1fb93bd102311da29e294c161872446a6d0160a6502e584feb3f3d5deae484b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:28.189 [debug] Running yt-dlp command for action: download_thumbnail 14:24:28.190 [debug] QUERY OK source="settings" db=0.1ms idle=636.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.190 [debug] QUERY OK source="settings" db=0.1ms idle=636.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.191 [debug] QUERY OK source="settings" db=0.2ms idle=637.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.191 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6bsaPvyEKQo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/60/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e5/cd/e5cdf9acb342394d98838a22bf3f198ade0c0b449fe079a50b3fdab92fc9f2d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:28.598 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=nmlkY9e4JjQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/58/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fa/9f/fa9f9e4b3eda6caa5b5f7f8ef672f896892319248979fc779cde8e1ac7239cdb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:28.599 [debug] QUERY OK db=0.1ms idle=1045.0ms begin [] 14:24:28.599 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:24:23Z], "/downloads/The Standup/2025-04-10 This Doesn't Look Good For AI - The Standup - Ep 4/This Doesn't Look Good For AI - The Standup - Ep 4 [nmlkY9e4JjQ].mp4", ~U[2026-07-24 12:24:28Z], 58] 14:24:28.600 [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/58/metadata.json.gz", "/config/metadata/media_items/58/thumbnail.jpg", 58, ~U[2026-07-24 12:24:28Z], ~U[2026-07-24 12:24:28Z]] 14:24:28.601 [debug] QUERY OK db=0.5ms commit [] 14:24:28.604 [debug] QUERY OK source="media_items" db=2.9ms idle=562.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [649329791, ~U[2026-07-24 12:24:28Z], 58] 14:24:28.604 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:28.605 [info] {"args":{"id":58},"id":62,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":84555290,"event":"job:stop","queue_time":1393047763,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:28.612 [info] {"args":{"id":121},"id":65,"meta":{},"system_time":1784895868612585554,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:28.613 [debug] QUERY OK source="media_items" db=0.4ms idle=421.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [121] 14:24:28.613 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:28.614 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=12.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:24:28.615 [debug] QUERY OK source="media_profiles" db=0.8ms idle=9.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:28.616 [debug] QUERY OK source="media_items" db=0.7ms 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 [121] 14:24:28.618 [debug] QUERY OK source="media_metadata" db=0.3ms idle=5.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [121] 14:24:28.618 [debug] QUERY OK source="media_profiles" db=0.4ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:24:28.619 [debug] QUERY OK source="settings" db=0.4ms queue=0.4ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.620 [debug] QUERY OK source="settings" db=0.4ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.621 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:28.622 [debug] QUERY OK source="settings" db=0.3ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.622 [debug] QUERY OK source="settings" db=0.4ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.623 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:28.623 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EZFlOnlLCsk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dc/d4/dcd40555cfc25b4ddf5d843cc2520c011e290786d776375484d0453f55701545.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:30.965 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EZFlOnlLCsk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dc/d4/dcd40555cfc25b4ddf5d843cc2520c011e290786d776375484d0453f55701545.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:30.966 [debug] Running yt-dlp command for action: download 14:24:30.966 [debug] QUERY OK source="settings" db=0.3ms idle=899.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:30.967 [debug] QUERY OK source="settings" db=0.4ms idle=413.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:30.967 [debug] QUERY OK source="settings" db=0.3ms idle=413.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:30.968 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EZFlOnlLCsk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/96/20/96203ad9a3b6655a82b839ed417fa6dbdbb793011ae26b7ded7087a383e539fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:31.117 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6bsaPvyEKQo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/60/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e5/cd/e5cdf9acb342394d98838a22bf3f198ade0c0b449fe079a50b3fdab92fc9f2d5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:31.118 [debug] QUERY OK db=0.0ms idle=564.0ms begin [] 14:24:31.118 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:24:28Z], "/downloads/The Standup/2025-03-12 Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2/Amazon fires middle management? Did AI kill game dev?I - The Standup Ep 2 [6bsaPvyEKQo].mp4", ~U[2026-07-24 12:24:31Z], 60] 14:24:31.119 [debug] QUERY OK source="media_metadata" db=0.5ms 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/60/metadata.json.gz", "/config/metadata/media_items/60/thumbnail.jpg", 60, ~U[2026-07-24 12:24:31Z], ~U[2026-07-24 12:24:31Z]] 14:24:31.119 [debug] QUERY OK db=0.2ms commit [] 14:24:31.121 [debug] QUERY OK source="media_items" db=0.9ms idle=153.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [283169918, ~U[2026-07-24 12:24:31Z], 60] 14:24:31.121 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:31.121 [info] {"args":{"id":60},"id":64,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":26171822,"event":"job:stop","queue_time":1450948774,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:31.128 [info] {"args":{"id":122},"id":70,"meta":{},"system_time":1784895871128799118,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:24:31.129 [debug] QUERY OK source="media_items" db=0.6ms idle=59.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [122] 14:24:31.130 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:24:31.130 [debug] QUERY OK source="sources" db=0.1ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:24:31.131 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:24:31.131 [debug] QUERY OK source="media_items" db=0.4ms 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 [122] 14:24:31.133 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [122] 14:24:31.133 [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" = ?) [2] 14:24:31.134 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:31.134 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:31.134 [debug] Running yt-dlp command for action: get_downloadable_status 14:24:31.135 [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:24:31.135 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:31.136 [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 [] 14:24:31.136 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w4WiXKGCJhg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/86/2886f5414b26e28ae0edf06ee08bdf970dbb7ed09672cc04d998799c57d0eb3d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:33.353 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w4WiXKGCJhg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/86/2886f5414b26e28ae0edf06ee08bdf970dbb7ed09672cc04d998799c57d0eb3d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:24:33.353 [debug] Running yt-dlp command for action: download 14:24:33.354 [debug] QUERY OK source="settings" db=0.6ms idle=800.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:33.355 [debug] QUERY OK source="settings" db=0.6ms idle=800.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:33.356 [debug] QUERY OK source="settings" db=0.5ms idle=801.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:24:33.356 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w4WiXKGCJhg --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/5b/9e/5b9ededabdefdb29b92ba25d7064be45c534b31ce085c0cfeeec0a477cf9eac3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:24:52.596 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:52.944 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:25:00.539 [info] {"source":"oban","duration":226,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:25:22.597 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:29.897 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w4WiXKGCJhg --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/5b/9e/5b9ededabdefdb29b92ba25d7064be45c534b31ce085c0cfeeec0a477cf9eac3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:29.903 [debug] Running yt-dlp command for action: download_thumbnail 14:25:29.904 [debug] QUERY OK source="settings" db=0.3ms idle=1350.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:29.905 [debug] QUERY OK source="settings" db=0.0ms queue=0.2ms idle=1351.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:29.905 [debug] QUERY OK source="settings" db=0.1ms idle=1351.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:29.905 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w4WiXKGCJhg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/122/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/3c/cc/3ccc45267e8b436db76dd159bd95be864bff7cd5884602db87767304917164b3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:32.103 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=w4WiXKGCJhg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/122/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/3c/cc/3ccc45267e8b436db76dd159bd95be864bff7cd5884602db87767304917164b3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:32.104 [debug] QUERY OK db=0.2ms idle=1550.6ms begin [] 14:25:32.106 [debug] QUERY OK source="media_items" db=1.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:25:29Z], "/downloads/Tiny Desk/2024-03-21 Chappell Roan: Tiny Desk Concert/Chappell Roan: Tiny Desk Concert [w4WiXKGCJhg].mp4", ~U[2026-07-24 12:25:32Z], 122] 14:25:32.107 [debug] QUERY OK source="media_metadata" db=1.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/122/metadata.json.gz", "/config/metadata/media_items/122/thumbnail.jpg", 122, ~U[2026-07-24 12:25:32Z], ~U[2026-07-24 12:25:32Z]] 14:25:32.109 [debug] QUERY OK db=0.9ms commit [] 14:25:32.110 [debug] QUERY OK source="media_items" db=1.2ms idle=960.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [413067167, ~U[2026-07-24 12:25:32Z], 122] 14:25:32.110 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:25:32.111 [info] {"args":{"id":122},"id":70,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":60982078,"event":"job:stop","queue_time":719127774,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:25:32.117 [info] {"args":{"id":123},"id":71,"meta":{},"system_time":1784895932117483706,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:25:32.117 [debug] QUERY OK source="media_items" db=0.2ms 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" = ?) [123] 14:25:32.118 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:25:32.118 [debug] QUERY OK source="sources" db=0.2ms idle=9.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:25:32.119 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:32.120 [debug] QUERY OK source="media_items" db=0.5ms 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 [123] 14:25:32.122 [debug] QUERY OK source="media_metadata" db=0.3ms idle=4.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" = ?) [123] 14:25:32.122 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:32.123 [debug] QUERY OK source="settings" db=0.5ms 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:25:32.123 [debug] QUERY OK source="settings" db=0.3ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:32.124 [debug] Running yt-dlp command for action: get_downloadable_status 14:25:32.125 [debug] QUERY OK source="settings" db=0.3ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:32.125 [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 [] 14:25:32.126 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:32.126 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-91vymvIH0c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/c4/49c4777d97418d5523796255277f8975af232b2af16b539d84e97c0fb9da53bf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:34.266 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-91vymvIH0c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/49/c4/49c4777d97418d5523796255277f8975af232b2af16b539d84e97c0fb9da53bf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:34.266 [debug] Running yt-dlp command for action: download 14:25:34.267 [debug] QUERY OK source="settings" db=0.2ms idle=712.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:34.267 [debug] QUERY OK source="settings" db=0.2ms idle=713.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:34.267 [debug] QUERY OK source="settings" db=0.2ms idle=713.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:34.268 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-91vymvIH0c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/2d/85/2d85ae0d1b631b707df743f6da5a14f32e44e3b3635626621ecc65e595951819.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:38.187 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EZFlOnlLCsk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/96/20/96203ad9a3b6655a82b839ed417fa6dbdbb793011ae26b7ded7087a383e539fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:38.237 [debug] Running yt-dlp command for action: download_thumbnail 14:25:38.240 [debug] QUERY OK source="settings" db=0.1ms queue=0.6ms idle=685.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:38.243 [debug] QUERY OK source="settings" db=3.2ms idle=686.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:38.245 [debug] QUERY OK source="settings" db=0.9ms queue=0.2ms idle=690.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:38.247 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EZFlOnlLCsk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/121/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8c/fa/8cfafdb5d4486433086f1fa1bd1eb47a88d0d8d8e72eb3ce012bc84bf28ead56.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:40.849 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EZFlOnlLCsk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/121/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8c/fa/8cfafdb5d4486433086f1fa1bd1eb47a88d0d8d8e72eb3ce012bc84bf28ead56.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:40.850 [debug] QUERY OK db=0.0ms idle=1296.3ms begin [] 14:25:40.851 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:25:38Z], "/downloads/The Standup/2025-03-06 LeetCode is dead? Privacy is done? | The Standup Ep. 1/LeetCode is dead? Privacy is done? | The Standup Ep. 1 [EZFlOnlLCsk].mp4", ~U[2026-07-24 12:25:40Z], 121] 14:25:40.851 [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/121/metadata.json.gz", "/config/metadata/media_items/121/thumbnail.jpg", 121, ~U[2026-07-24 12:25:40Z], ~U[2026-07-24 12:25:40Z]] 14:25:40.852 [debug] QUERY OK db=0.4ms commit [] 14:25:40.854 [debug] QUERY OK source="media_items" db=1.8ms idle=1298.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [315707727, ~U[2026-07-24 12:25:40Z], 121] 14:25:40.854 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:25:40.855 [info] {"args":{"id":121},"id":65,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":72242403,"event":"job:stop","queue_time":1472611743,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:25:40.862 [info] {"args":{"id":124},"id":72,"meta":{},"system_time":1784895940862448133,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:25:40.863 [debug] QUERY OK source="media_items" db=0.2ms idle=694.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [124] 14:25:40.863 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:25:40.863 [debug] QUERY OK source="sources" db=0.2ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:25:40.864 [debug] QUERY OK source="media_profiles" db=0.3ms idle=9.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" = ?) [2] 14:25:40.864 [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 [124] 14:25:40.865 [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" = ?) [124] 14:25:40.866 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:40.866 [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 [] 14:25:40.866 [debug] QUERY OK source="settings" db=0.4ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:40.867 [debug] Running yt-dlp command for action: get_downloadable_status 14:25:40.868 [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:25:40.868 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:40.869 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:40.869 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1ul9aWg0AQo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1c/7b/1c7ba5d3990436aec6c6d6e3f2c388482ef35aef809b3c6e7014bda98cf3e7b3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:43.231 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1ul9aWg0AQo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1c/7b/1c7ba5d3990436aec6c6d6e3f2c388482ef35aef809b3c6e7014bda98cf3e7b3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:43.231 [debug] Running yt-dlp command for action: download 14:25:43.232 [debug] QUERY OK source="settings" db=0.1ms idle=678.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:43.232 [debug] QUERY OK source="settings" db=0.2ms idle=678.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:43.232 [debug] QUERY OK source="settings" db=0.2ms idle=678.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:43.233 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1ul9aWg0AQo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ab/ae/abaebd2b060d2c939c7c6f21f1e84ada70c5b01823326fe49bd685aa3681e5d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:44.541 [info] GET / 14:25:44.541 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:25:44.542 [debug] QUERY OK source="settings" db=0.1ms idle=1369.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:44.542 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1310.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:25:44.542 [debug] QUERY OK source="sources" db=0.1ms idle=1309.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:25:44.543 [debug] QUERY OK source="media_items" db=0.4ms idle=1309.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:25:44.543 [debug] QUERY OK source="media_items" db=0.0ms idle=368.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:25:44.543 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:44.544 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:44.544 [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 [] 14:25:44.545 [debug] QUERY OK source="tasks" db=0.2ms idle=2.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 14:25:44.546 [debug] QUERY OK source="media_items" db=0.1ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [123, 124] 14:25:44.546 [debug] QUERY OK source="media_items" db=0.0ms 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)) [] 14:25:44.547 [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] 14:25:44.547 [debug] QUERY OK source="sources" db=0.3ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?)) [1, 2] 14:25:44.550 [debug] QUERY OK source="media_items" db=0.2ms 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:25:44.550 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:25:44.550 [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" = ?) [2] 14:25:44.552 [info] Sent 200 in 10ms 14:25:50.127 [info] GET /sources 14:25:50.127 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 14:25:50.128 [debug] QUERY OK source="settings" db=0.1ms idle=945.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:50.128 [debug] QUERY OK source="settings" db=0.2ms idle=574.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:50.129 [debug] QUERY OK source="settings" db=0.3ms idle=575.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:50.130 [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 [] 14:25:50.130 [debug] QUERY OK source="settings" db=0.3ms idle=576.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:50.131 [debug] QUERY OK source="sources" db=0.5ms idle=2.6ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 14:25:50.133 [debug] QUERY OK source="sources" db=1.7ms 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", 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] 14:25:50.135 [info] Sent 200 in 7ms 14:25:50.282 [info] GET / 14:25:50.282 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:25:50.283 [debug] QUERY OK source="settings" db=0.1ms idle=152.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:50.283 [debug] QUERY OK source="media_profiles" db=0.0ms idle=152.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:25:50.283 [debug] QUERY OK source="sources" db=0.0ms idle=151.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:25:50.283 [debug] QUERY OK source="media_items" db=0.1ms idle=150.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:25:50.283 [debug] QUERY OK source="media_items" db=0.1ms idle=99.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:25:50.284 [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 [] 14:25:50.284 [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 [] 14:25:50.285 [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 [] 14:25:50.286 [debug] QUERY OK source="tasks" db=0.8ms idle=2.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:25:50.287 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [123, 124] 14:25:50.288 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 14:25:50.289 [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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:25:50.289 [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 (?,?)) [1, 2] 14:25:50.294 [debug] QUERY OK source="media_items" db=1.8ms idle=5.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:25:50.295 [debug] QUERY OK source="media_items" db=0.5ms idle=7.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:25:50.295 [debug] QUERY OK source="sources" db=0.1ms idle=6.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:25:50.297 [info] Sent 200 in 14ms 14:25:52.599 [info] {"source":"oban","duration":1452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:52.896 [info] GET /sources/2/media/179 14:25:52.896 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "179", "source_id" => "2"} Pipelines: [:browser] 14:25:52.897 [debug] QUERY OK source="media_items" db=0.3ms idle=1343.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" = ?) [179] 14:25:52.898 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-91vymvIH0c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/2d/85/2d85ae0d1b631b707df743f6da5a14f32e44e3b3635626621ecc65e595951819.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:52.898 [debug] QUERY OK source="sources" db=0.4ms idle=1344.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:25:52.898 [debug] QUERY OK source="tasks" db=0.3ms queue=0.3ms idle=1344.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" [179] 14:25:52.900 [debug] QUERY OK source="oban_jobs" db=1.5ms idle=709.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" = ?) [127] 14:25:52.900 [debug] QUERY OK source="settings" db=0.2ms idle=301.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:52.901 [debug] QUERY OK source="settings" db=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 [] 14:25:52.902 [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 [] 14:25:52.904 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:52.905 [info] Sent 200 in 8ms 14:25:52.930 [debug] Running yt-dlp command for action: download_thumbnail 14:25:52.931 [debug] QUERY OK source="settings" db=0.1ms idle=31.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:52.931 [debug] QUERY OK source="settings" db=0.1ms idle=30.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:52.932 [debug] QUERY OK source="settings" db=0.4ms idle=30.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:52.932 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-91vymvIH0c --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/123/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/21/6a/216a23d9a699dd886865bbe042646a2101c25d4d85a7a558e96cfb59444a09d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:53.017 [info] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:25:55.411 [info] GET /settings 14:25:55.411 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 14:25:55.413 [debug] QUERY OK source="settings" db=1.4ms idle=857.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:55.414 [debug] QUERY OK source="settings" db=0.6ms idle=859.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:55.414 [debug] QUERY OK source="settings" db=0.3ms idle=860.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:55.415 [debug] QUERY OK source="settings" db=0.1ms idle=861.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:55.423 [info] Sent 200 in 11ms 14:25:56.919 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-91vymvIH0c --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/123/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/21/6a/216a23d9a699dd886865bbe042646a2101c25d4d85a7a558e96cfb59444a09d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:25:56.920 [debug] QUERY OK db=0.5ms idle=724.3ms begin [] 14:25:56.923 [debug] QUERY OK source="media_items" db=2.3ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:25:52Z], "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].mp4", [["en", "/downloads/Tiny Desk/2024-12-06 Doechii: Tiny Desk Concert/Doechii: Tiny Desk Concert [-91vymvIH0c].en.srt"]], ~U[2026-07-24 12:25:56Z], 123] 14:25:56.924 [debug] QUERY OK source="media_metadata" db=1.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/123/metadata.json.gz", "/config/metadata/media_items/123/thumbnail.jpg", 123, ~U[2026-07-24 12:25:56Z], ~U[2026-07-24 12:25:56Z]] 14:25:56.924 [debug] QUERY OK db=0.2ms commit [] 14:25:56.928 [debug] QUERY OK source="media_items" db=2.7ms idle=371.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [495185216, ~U[2026-07-24 12:25:56Z], 123] 14:25:56.928 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:25:56.928 [info] {"args":{"id":123},"id":71,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24810778,"event":"job:stop","queue_time":777116803,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:25:56.936 [info] {"args":{"id":125},"id":73,"meta":{},"system_time":1784895956936201919,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:25:56.937 [debug] QUERY OK source="media_items" db=0.5ms idle=382.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [125] 14:25:56.937 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:25:56.937 [debug] QUERY OK source="sources" db=0.3ms idle=12.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:25:56.938 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=9.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:56.939 [debug] QUERY OK source="media_items" db=0.4ms idle=10.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [125] 14:25:56.941 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [125] 14:25:56.942 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:56.942 [debug] QUERY OK source="settings" db=0.7ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:56.943 [debug] QUERY OK source="settings" db=0.3ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:56.943 [debug] Running yt-dlp command for action: get_downloadable_status 14:25:56.944 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:56.944 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:56.945 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:56.945 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fOAIrUZbOwo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c8/02/c802a2c6b0a734a064bc1fabaf09034705e4ae6751da60aa0751e43bb726137b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:25:57.652 [info] GET /sources/2/media/124 14:25:57.652 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "124", "source_id" => "2"} Pipelines: [:browser] 14:25:57.653 [debug] QUERY OK source="media_items" db=0.6ms idle=709.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" = ?) [124] 14:25:57.654 [debug] QUERY OK source="tasks" db=0.7ms idle=709.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" [124] 14:25:57.654 [debug] QUERY OK source="sources" db=0.8ms idle=709.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:25:57.656 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=710.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" = ?) [72] 14:25:57.657 [debug] QUERY OK source="settings" db=0.6ms idle=459.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:57.658 [debug] QUERY OK source="settings" db=0.8ms 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:25:57.659 [debug] QUERY OK source="settings" db=1.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:25:57.661 [debug] QUERY OK source="media_profiles" db=1.2ms idle=5.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:25:57.663 [info] Sent 200 in 10ms 14:25:59.705 [info] GET /sources/1/media/59 14:25:59.705 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59", "source_id" => "1"} Pipelines: [:browser] 14:25:59.707 [debug] QUERY OK source="media_items" db=1.5ms idle=506.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" = ?) [59] 14:25:59.708 [debug] QUERY OK source="tasks" db=0.5ms idle=152.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" [59] 14:25:59.709 [debug] QUERY OK source="sources" db=1.9ms idle=152.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:25:59.712 [debug] QUERY OK source="oban_jobs" db=2.1ms idle=155.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" = ?) [63] 14:25:59.714 [debug] QUERY OK source="settings" db=1.8ms idle=157.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:59.716 [debug] QUERY OK source="settings" db=1.7ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:25:59.719 [debug] QUERY OK source="settings" db=1.8ms 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:25:59.722 [debug] QUERY OK source="media_profiles" db=2.9ms idle=9.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:25:59.726 [info] Sent 200 in 21ms 14:26:00.539 [info] {"source":"oban","duration":173,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:26:00.860 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fOAIrUZbOwo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c8/02/c802a2c6b0a734a064bc1fabaf09034705e4ae6751da60aa0751e43bb726137b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:00.860 [debug] Running yt-dlp command for action: download 14:26:00.861 [debug] QUERY OK source="settings" db=0.8ms idle=1143.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:00.861 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1142.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:00.862 [debug] QUERY OK source="settings" db=0.3ms idle=1139.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:00.862 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fOAIrUZbOwo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/69/4c/694c49f6f13c344e164351b6d89bfe1f1a2b9c251161c772e4d43a65358e5bd1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:03.155 [info] GET /sources/2/media/122 14:26:03.155 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "122", "source_id" => "2"} Pipelines: [:browser] 14:26:03.156 [debug] QUERY OK source="media_items" db=1.0ms idle=1600.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" = ?) [122] 14:26:03.158 [debug] QUERY OK source="tasks" db=1.2ms idle=952.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" [122] 14:26:03.158 [debug] QUERY OK source="sources" db=0.6ms queue=0.9ms idle=602.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:26:03.159 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=603.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" = ?) [70] 14:26:03.159 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=604.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:03.160 [debug] QUERY OK source="settings" db=0.4ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:03.162 [debug] QUERY OK source="settings" db=1.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:03.163 [debug] QUERY OK source="media_profiles" db=0.5ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:03.165 [info] Sent 200 in 9ms 14:26:04.096 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1ul9aWg0AQo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ab/ae/abaebd2b060d2c939c7c6f21f1e84ada70c5b01823326fe49bd685aa3681e5d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:04.119 [debug] Running yt-dlp command for action: download_thumbnail 14:26:04.119 [debug] QUERY OK source="settings" db=0.1ms idle=959.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:04.120 [debug] QUERY OK source="settings" db=0.1ms idle=959.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:04.120 [debug] QUERY OK source="settings" db=0.1ms idle=958.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:04.120 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1ul9aWg0AQo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/124/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9e/ad/9eadad91b0a7149f08fd43fff11c1dcc1cf310cded122200c5961495792bf1ba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:04.655 [info] GET /sources/2/media/123 14:26:04.655 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "123", "source_id" => "2"} Pipelines: [:browser] 14:26:04.655 [debug] QUERY OK source="media_items" db=0.3ms idle=535.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" = ?) [123] 14:26:04.656 [debug] QUERY OK source="tasks" db=0.1ms idle=535.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" [123] 14:26:04.657 [debug] QUERY OK source="sources" db=1.0ms idle=535.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:26:04.658 [debug] QUERY OK source="oban_jobs" db=1.2ms idle=449.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" = ?) [71] 14:26:04.660 [debug] QUERY OK source="settings" db=0.9ms idle=104.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:04.660 [debug] QUERY OK source="settings" db=0.5ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:04.662 [debug] QUERY OK source="settings" db=0.4ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:04.663 [debug] QUERY OK source="media_profiles" db=0.7ms 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" = ?) [2] 14:26:04.665 [info] Sent 200 in 10ms 14:26:05.992 [info] GET /app_info 14:26:05.992 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 14:26:05.992 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1332.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:05.993 [debug] QUERY OK source="settings" db=0.2ms idle=1332.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:05.993 [debug] QUERY OK source="settings" db=0.2ms idle=1331.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:05.994 [debug] QUERY OK source="settings" db=0.2ms idle=1330.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:05.994 [debug] QUERY OK source="settings" db=0.2ms idle=784.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:05.995 [info] Sent 200 in 3ms 14:26:06.596 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1ul9aWg0AQo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/124/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9e/ad/9eadad91b0a7149f08fd43fff11c1dcc1cf310cded122200c5961495792bf1ba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:06.597 [debug] QUERY OK db=0.2ms idle=603.9ms begin [] 14:26:06.598 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:26:04Z], "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].mp4", [["en", "/downloads/Tiny Desk/2025-01-31 Faye Webster: Tiny Desk Concert/Faye Webster: Tiny Desk Concert [1ul9aWg0AQo].en.srt"]], ~U[2026-07-24 12:26:06Z], 124] 14:26:06.599 [debug] QUERY OK source="media_metadata" db=0.7ms 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/124/metadata.json.gz", "/config/metadata/media_items/124/thumbnail.jpg", 124, ~U[2026-07-24 12:26:06Z], ~U[2026-07-24 12:26:06Z]] 14:26:06.599 [debug] QUERY OK db=0.1ms commit [] 14:26:06.601 [debug] QUERY OK source="media_items" db=1.1ms idle=606.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [266572457, ~U[2026-07-24 12:26:06Z], 124] 14:26:06.601 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:06.601 [info] {"args":{"id":124},"id":72,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":25738918,"event":"job:stop","queue_time":783861772,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:06.608 [info] {"args":{"id":126},"id":74,"meta":{},"system_time":1784895966608703104,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:06.609 [debug] QUERY OK source="media_items" db=0.2ms idle=398.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [126] 14:26:06.609 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:06.610 [debug] QUERY OK source="sources" db=0.4ms idle=10.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:26:06.610 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=9.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:06.611 [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 [126] 14:26:06.612 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [126] 14:26:06.612 [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" = ?) [2] 14:26:06.612 [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 [] 14:26:06.612 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:06.613 [debug] Running yt-dlp command for action: get_downloadable_status 14:26:06.613 [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 [] 14:26:06.613 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:06.614 [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 [] 14:26:06.614 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jmh3iruf4RA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/7c/c07c4b10c51d2f8efd9ec190bd17a344ce0194bf6e392d2339204eb0cee1f0bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:07.286 [info] GET /sources/1/media/60 14:26:07.287 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "60", "source_id" => "1"} Pipelines: [:browser] 14:26:07.288 [debug] QUERY OK source="media_items" db=1.3ms idle=674.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [60] 14:26:07.289 [debug] QUERY OK source="tasks" db=0.5ms idle=675.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" [60] 14:26:07.290 [debug] QUERY OK source="sources" db=0.5ms idle=675.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:26:07.292 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=678.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" = ?) [64] 14:26:07.292 [debug] QUERY OK source="settings" db=0.0ms idle=80.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:07.292 [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 [] 14:26:07.295 [debug] QUERY OK source="settings" db=1.6ms queue=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:07.297 [debug] QUERY OK source="media_profiles" db=1.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] 14:26:07.299 [info] Sent 200 in 12ms 14:26:08.331 [info] GET /sources/1/media/58 14:26:08.331 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58", "source_id" => "1"} Pipelines: [:browser] 14:26:08.332 [debug] QUERY OK source="media_items" db=0.6ms idle=1039.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58] 14:26:08.332 [debug] QUERY OK source="tasks" db=0.2ms idle=1039.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" [58] 14:26:08.332 [debug] QUERY OK source="sources" db=0.2ms idle=1036.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:26:08.333 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1035.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" = ?) [62] 14:26:08.334 [debug] QUERY OK source="settings" db=0.5ms idle=120.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:08.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 [] 14:26:08.334 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:08.335 [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] 14:26:08.337 [info] Sent 200 in 6ms 14:26:09.327 [info] GET /sources/new 14:26:09.327 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 14:26:09.328 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=993.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:26:09.329 [debug] QUERY OK source="settings" db=0.8ms idle=993.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:09.329 [debug] QUERY OK source="settings" db=0.3ms idle=994.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:09.330 [debug] QUERY OK source="settings" db=0.4ms idle=994.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:09.331 [debug] QUERY OK source="settings" db=0.4ms idle=116.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:09.331 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:09.334 [info] Sent 200 in 7ms 14:26:10.580 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jmh3iruf4RA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/7c/c07c4b10c51d2f8efd9ec190bd17a344ce0194bf6e392d2339204eb0cee1f0bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:10.581 [debug] Running yt-dlp command for action: download 14:26:10.582 [debug] QUERY OK source="settings" db=0.2ms idle=366.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:10.582 [debug] QUERY OK source="settings" db=0.1ms idle=27.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:10.582 [debug] QUERY OK source="settings" db=0.1ms idle=27.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:10.582 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jmh3iruf4RA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6b/75/6b75e5e04d9bd9cad1e6459dc2574b928b504174c20814f926daeab6d055c27a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:11.729 [info] GET /sources/2/media/179/force_download 14:26:11.730 [debug] QUERY OK source="settings" db=0.7ms idle=1174.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:11.731 [debug] QUERY OK source="settings" db=0.4ms 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 [] 14:26:11.731 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:26:11.731 [error] #PID<0.3805.0> running PinchflatWeb.Endpoint (connection #PID<0.3804.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/179/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/179/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3804.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/179/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 34514}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/179", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3805.0>, params: %{}, path_info: ["sources", "2", "media", "179", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/179"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/179/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU5bfP0TtXO6voAABPh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3804.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/179/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 34514}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/179", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/179/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3804.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/179/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 34514}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/179", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 14:26:12.377 [info] GET /sources/1/media/121 14:26:12.378 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "121", "source_id" => "1"} Pipelines: [:browser] 14:26:12.378 [debug] QUERY OK source="media_items" db=0.1ms idle=1795.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" = ?) [121] 14:26:12.379 [debug] QUERY OK source="tasks" db=0.2ms idle=1162.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" [121] 14:26:12.379 [debug] QUERY OK source="sources" db=0.3ms idle=648.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:26:12.379 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=648.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" = ?) [65] 14:26:12.380 [debug] QUERY OK source="settings" db=0.7ms idle=162.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:12.381 [debug] QUERY OK source="settings" db=0.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:12.382 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:12.383 [debug] QUERY OK source="media_profiles" db=0.8ms 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] 14:26:12.385 [info] Sent 200 in 7ms 14:26:14.298 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fOAIrUZbOwo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/69/4c/694c49f6f13c344e164351b6d89bfe1f1a2b9c251161c772e4d43a65358e5bd1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:14.319 [debug] Running yt-dlp command for action: download_thumbnail 14:26:14.320 [debug] QUERY OK source="settings" db=0.3ms idle=765.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:14.321 [debug] QUERY OK source="settings" db=0.3ms idle=765.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:14.321 [debug] QUERY OK source="settings" db=0.1ms idle=766.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:14.321 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fOAIrUZbOwo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/125/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/44/ca/44cae1a256e7c17078a672c9eb87664d9baabdbe276961b97bc23fe06cffc5d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:14.347 [info] GET /media/ec5b158a-0768-4f6a-ad24-f739ff49b775/stream 14:26:14.347 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ec5b158a-0768-4f6a-ad24-f739ff49b775", "v" => "1784895940"} Pipelines: [:maybe_basic_auth] 14:26:14.348 [debug] QUERY OK source="media_items" db=0.8ms idle=792.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["ec5b158a-0768-4f6a-ad24-f739ff49b775"] 14:26:14.348 [debug] Invalid range request for media item: ec5b158a-0768-4f6a-ad24-f739ff49b775 - serving full file 14:26:14.348 [info] Sent 200 in 1ms 14:26:17.143 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=fOAIrUZbOwo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/125/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/44/ca/44cae1a256e7c17078a672c9eb87664d9baabdbe276961b97bc23fe06cffc5d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:17.143 [debug] QUERY OK db=0.0ms idle=1588.7ms begin [] 14:26:17.144 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:26:14Z], "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].mp4", [["en", "/downloads/Tiny Desk/2024-12-12 Billie Eilish: Tiny Desk Concert/Billie Eilish: Tiny Desk Concert [fOAIrUZbOwo].en.srt"]], ~U[2026-07-24 12:26:17Z], 125] 14:26:17.145 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/125/metadata.json.gz", "/config/metadata/media_items/125/thumbnail.jpg", 125, ~U[2026-07-24 12:26:17Z], ~U[2026-07-24 12:26:17Z]] 14:26:17.145 [debug] QUERY OK db=0.2ms commit [] 14:26:17.149 [debug] QUERY OK source="media_items" db=3.4ms idle=1590.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [303614938, ~U[2026-07-24 12:26:17Z], 125] 14:26:17.149 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:17.150 [info] {"args":{"id":125},"id":73,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20213330,"event":"job:stop","queue_time":797934859,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:17.157 [info] {"args":{"id":127},"id":75,"meta":{},"system_time":1784895977157081823,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:17.157 [debug] QUERY OK source="media_items" db=0.3ms idle=933.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" = ?) [127] 14:26:17.157 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:17.158 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:26:17.158 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=9.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:17.159 [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 [127] 14:26:17.159 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [127] 14:26:17.159 [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" = ?) [2] 14:26:17.160 [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 [] 14:26:17.160 [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 [] 14:26:17.160 [debug] Running yt-dlp command for action: get_downloadable_status 14:26:17.161 [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 [] 14:26:17.161 [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 [] 14:26:17.162 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:17.162 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BEoGvTlJMyY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/de/fa/defa8f94bfb4518befacecd7136809c52d4f5732a101fd0b252d53676f93cc61.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:19.249 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BEoGvTlJMyY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/de/fa/defa8f94bfb4518befacecd7136809c52d4f5732a101fd0b252d53676f93cc61.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:19.249 [debug] Running yt-dlp command for action: download 14:26:19.250 [debug] QUERY OK source="settings" db=0.3ms idle=694.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:19.250 [debug] QUERY OK source="settings" db=0.3ms idle=695.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:19.251 [debug] QUERY OK source="settings" db=0.2ms idle=695.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:19.251 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BEoGvTlJMyY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ac/fc/acfc04a770a536b89be063f66ebc9df33f180252880afa34d7721e4390212db9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:22.600 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:26.015 [info] GET /media_profiles 14:26:26.015 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 14:26:26.016 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1461.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", (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" [] 14:26:26.017 [debug] QUERY OK source="settings" db=0.5ms idle=1461.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:26.017 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1462.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:26.018 [debug] QUERY OK source="settings" db=0.5ms idle=781.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:26.019 [info] Sent 200 in 3ms 14:26:27.513 [info] GET /media/bdc1a7c4-7ad9-43bc-be9e-92a5f7b81724/stream 14:26:27.513 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bdc1a7c4-7ad9-43bc-be9e-92a5f7b81724", "v" => "1784895932"} Pipelines: [:maybe_basic_auth] 14:26:27.513 [debug] QUERY OK source="media_items" db=0.2ms idle=1496.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["bdc1a7c4-7ad9-43bc-be9e-92a5f7b81724"] 14:26:27.513 [debug] Invalid range request for media item: bdc1a7c4-7ad9-43bc-be9e-92a5f7b81724 - serving full file 14:26:27.513 [info] Sent 200 in 906µs 14:26:39.345 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jmh3iruf4RA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/6b/75/6b75e5e04d9bd9cad1e6459dc2574b928b504174c20814f926daeab6d055c27a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:39.367 [debug] Running yt-dlp command for action: download_thumbnail 14:26:39.368 [debug] QUERY OK source="settings" db=0.1ms idle=1811.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:39.368 [debug] QUERY OK source="settings" db=0.1ms idle=1812.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:39.368 [debug] QUERY OK source="settings" db=0.2ms idle=1111.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:39.368 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jmh3iruf4RA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/126/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a4/3c/a43cce8e78477cecf5394d909ede22ea29ea89abd858c34230efd443f409ecec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:42.263 [info] GET /media_profiles/2 14:26:42.263 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:26:42.263 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1707.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:42.264 [debug] QUERY OK source="sources" db=0.4ms idle=1707.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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" [2] 14:26:42.264 [debug] QUERY OK source="settings" db=0.1ms idle=1708.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:42.265 [debug] QUERY OK source="settings" db=0.3ms idle=1003.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:42.265 [debug] QUERY OK source="settings" db=0.3ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:42.266 [info] Sent 200 in 3ms 14:26:43.276 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=jmh3iruf4RA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/126/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a4/3c/a43cce8e78477cecf5394d909ede22ea29ea89abd858c34230efd443f409ecec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:43.277 [debug] QUERY OK db=0.3ms queue=0.1ms idle=1012.8ms begin [] 14:26:43.279 [debug] QUERY OK source="media_items" db=1.2ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:26:39Z], "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].mp4", [["en", "/downloads/Tiny Desk/2023-12-11 Olivia Rodrigo: Tiny Desk Concert/Olivia Rodrigo: Tiny Desk Concert [jmh3iruf4RA].en.srt"]], ~U[2026-07-24 12:26:43Z], 126] 14:26:43.280 [debug] QUERY OK source="media_metadata" db=0.7ms 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/126/metadata.json.gz", "/config/metadata/media_items/126/thumbnail.jpg", 126, ~U[2026-07-24 12:26:43Z], ~U[2026-07-24 12:26:43Z]] 14:26:43.280 [debug] QUERY OK db=0.1ms commit [] 14:26:43.282 [debug] QUERY OK source="media_items" db=1.3ms idle=1015.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [239867933, ~U[2026-07-24 12:26:43Z], 126] 14:26:43.282 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:43.282 [info] {"args":{"id":126},"id":74,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":36673785,"event":"job:stop","queue_time":804607766,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:43.289 [info] {"args":{"id":128},"id":76,"meta":{},"system_time":1784896003289525999,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:43.290 [debug] QUERY OK source="media_items" db=0.7ms idle=25.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [128] 14:26:43.290 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:43.291 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [2] 14:26:43.291 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:43.292 [debug] QUERY OK source="media_items" db=0.5ms 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 [128] 14:26:43.293 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [128] 14:26:43.293 [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" = ?) [2] 14:26:43.293 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:43.293 [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 [] 14:26:43.294 [debug] Running yt-dlp command for action: get_downloadable_status 14:26:43.294 [debug] QUERY OK source="settings" db=0.0ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:43.294 [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 [] 14:26:43.294 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:43.295 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pc8U2VP92Vg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/56/ac/56ac0f5913f0017e0958ee7f9a3d380275fca9dc529fa24aa12f7664c33c9bbf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:43.486 [info] GET /media_profiles/1 14:26:43.486 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:26:43.488 [debug] QUERY OK source="media_profiles" db=0.9ms idle=193.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:26:43.489 [debug] QUERY OK source="sources" db=1.1ms idle=194.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 14:26:43.490 [debug] QUERY OK source="settings" db=0.3ms idle=195.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:43.490 [debug] QUERY OK source="settings" db=0.1ms idle=195.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:43.491 [debug] QUERY OK source="settings" db=0.1ms idle=196.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:43.493 [info] Sent 200 in 6ms 14:26:44.541 [info] GET /media/f581ca42-03d3-43c3-a956-715c800f1d59/stream 14:26:44.541 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "f581ca42-03d3-43c3-a956-715c800f1d59", "v" => "1784895956"} Pipelines: [:maybe_basic_auth] 14:26:44.542 [debug] QUERY OK source="media_items" db=0.2ms idle=1052.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["f581ca42-03d3-43c3-a956-715c800f1d59"] 14:26:44.542 [debug] Invalid range request for media item: f581ca42-03d3-43c3-a956-715c800f1d59 - serving full file 14:26:44.542 [info] Sent 200 in 768µs 14:26:45.603 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pc8U2VP92Vg --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/56/ac/56ac0f5913f0017e0958ee7f9a3d380275fca9dc529fa24aa12f7664c33c9bbf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:45.607 [debug] Running yt-dlp command for action: download 14:26:45.608 [debug] QUERY OK source="settings" db=0.4ms queue=0.3ms idle=1051.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:45.612 [debug] QUERY OK source="settings" db=4.2ms idle=1052.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:45.613 [debug] QUERY OK source="settings" db=0.6ms idle=1057.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:45.616 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pc8U2VP92Vg --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3d/c5/3dc5f038e680da64e4504b5895741630d08142ba6c7f8d154eea04c31cffcf3d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:48.135 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BEoGvTlJMyY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ac/fc/acfc04a770a536b89be063f66ebc9df33f180252880afa34d7721e4390212db9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:48.162 [debug] Running yt-dlp command for action: download_thumbnail 14:26:48.164 [debug] QUERY OK source="settings" db=0.2ms idle=885.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:48.164 [debug] QUERY OK source="settings" db=0.2ms idle=608.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:48.165 [debug] QUERY OK source="settings" db=0.4ms idle=609.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:48.165 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BEoGvTlJMyY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/127/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0d/55/0d55a217f74da83d69140f55925984c398a55d9062d8bfe69f89f2d1c0fcae3c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:50.773 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BEoGvTlJMyY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/127/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0d/55/0d55a217f74da83d69140f55925984c398a55d9062d8bfe69f89f2d1c0fcae3c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:50.776 [debug] QUERY OK db=0.6ms queue=0.3ms idle=1218.8ms begin [] 14:26:50.778 [debug] QUERY OK source="media_items" db=1.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:26:48Z], "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].mp4", [["en", "/downloads/Tiny Desk/2024-12-20 Sabrina Carpenter: Tiny Desk Concert/Sabrina Carpenter: Tiny Desk Concert [BEoGvTlJMyY].en.srt"]], ~U[2026-07-24 12:26:50Z], 127] 14:26:50.782 [debug] QUERY OK source="media_metadata" db=1.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/127/metadata.json.gz", "/config/metadata/media_items/127/thumbnail.jpg", 127, ~U[2026-07-24 12:26:50Z], ~U[2026-07-24 12:26:50Z]] 14:26:50.783 [debug] QUERY OK db=0.7ms commit [] 14:26:50.788 [debug] QUERY OK source="media_items" db=4.5ms idle=1228.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [429365474, ~U[2026-07-24 12:26:50Z], 127] 14:26:50.790 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:50.791 [info] {"args":{"id":127},"id":75,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":33633669,"event":"job:stop","queue_time":813155772,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:50.799 [info] {"args":{"id":129},"id":77,"meta":{},"system_time":1784896010799515423,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:26:50.800 [debug] QUERY OK source="media_items" db=0.9ms idle=512.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" = ?) [129] 14:26:50.802 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:26:50.803 [debug] QUERY OK source="sources" db=0.5ms queue=0.3ms idle=19.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:26:50.804 [debug] QUERY OK source="media_profiles" db=0.1ms idle=15.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:50.804 [debug] QUERY OK source="media_items" db=0.3ms idle=12.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [129] 14:26:50.806 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [129] 14:26:50.807 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:26:50.809 [debug] QUERY OK source="settings" db=1.7ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:50.811 [debug] QUERY OK source="settings" db=1.1ms idle=5.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:50.811 [debug] Running yt-dlp command for action: get_downloadable_status 14:26:50.812 [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 [] 14:26:50.813 [debug] QUERY OK source="settings" db=0.5ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:50.814 [debug] QUERY OK source="settings" db=0.4ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:50.814 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_t-nRXwAL1k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/31/28317b52e03a88d94229eb6a505dc90e4402743061ee5729d2369f83b40d9239.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:26:52.601 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:53.097 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:26:53.172 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_t-nRXwAL1k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/28/31/28317b52e03a88d94229eb6a505dc90e4402743061ee5729d2369f83b40d9239.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:26:53.172 [debug] Running yt-dlp command for action: download 14:26:53.173 [debug] QUERY OK source="settings" db=0.4ms idle=617.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:53.174 [debug] QUERY OK source="settings" db=0.6ms idle=617.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:53.174 [debug] QUERY OK source="settings" db=0.4ms idle=618.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:26:53.175 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_t-nRXwAL1k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/10/50/1050033a13ab78cd0b684f5cafa4133d1efde634e9dd7467df74079a825fdd3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:00.541 [info] {"source":"oban","duration":179,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:27:01.527 [info] GET /media/d6dbc23c-f5c1-46ae-8762-ace70d6ff4fa/stream 14:27:01.527 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "d6dbc23c-f5c1-46ae-8762-ace70d6ff4fa", "v" => "1784895871"} Pipelines: [:maybe_basic_auth] 14:27:01.528 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=987.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["d6dbc23c-f5c1-46ae-8762-ace70d6ff4fa"] 14:27:01.528 [debug] Invalid range request for media item: d6dbc23c-f5c1-46ae-8762-ace70d6ff4fa - serving full file 14:27:01.528 [info] Sent 200 in 1ms 14:27:11.246 [info] GET /sources/2/ 14:27:11.246 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:27:11.247 [debug] QUERY OK source="sources" db=0.1ms idle=925.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:27:11.247 [debug] QUERY OK source="media_profiles" db=0.2ms idle=691.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" = ?) [2] 14:27:11.248 [debug] QUERY OK source="tasks" db=0.1ms idle=692.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 (?,?,?,?)) [2, "executing", "available", "scheduled", "retryable"] 14:27:11.248 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=692.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" = ?) [128] 14:27:11.248 [debug] QUERY OK source="settings" db=0.2ms idle=692.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:11.249 [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 [] 14:27:11.249 [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 [] 14:27:11.250 [debug] QUERY OK source="sources" db=0.1ms idle=2.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:27:11.251 [debug] QUERY OK source="media_items" db=0.4ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:27:11.251 [debug] QUERY OK source="media_items" db=0.4ms idle=2.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 14:27:11.252 [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] 14:27:11.252 [debug] QUERY OK source="media_items" db=0.0ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 14:27:11.253 [debug] QUERY OK source="media_items" db=0.5ms 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 ? [2, 10, 0] 14:27:11.254 [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] 14:27:11.255 [debug] QUERY OK source="media_items" db=0.5ms idle=2.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [2] 14:27:11.256 [debug] QUERY OK source="media_items" db=0.7ms 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 ? [2, 10, 0] 14:27:11.257 [info] Sent 200 in 10ms 14:27:12.107 [info] GET /sources/1/ 14:27:12.107 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:27:12.108 [debug] QUERY OK source="sources" db=0.3ms idle=854.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:12.108 [debug] QUERY OK source="media_profiles" db=0.1ms idle=853.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:12.108 [debug] QUERY OK source="tasks" db=0.1ms idle=853.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 14:27:12.109 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=852.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" = ?) [66] 14:27:12.109 [debug] QUERY OK source="settings" db=0.4ms idle=786.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:12.110 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:12.111 [debug] QUERY OK source="settings" db=0.5ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:12.112 [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" = ?) [1] 14:27:12.113 [debug] QUERY OK source="media_items" db=0.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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:27:12.114 [debug] QUERY OK source="media_items" db=0.7ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:27:12.115 [debug] QUERY OK source="sources" db=0.5ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:12.115 [debug] QUERY OK source="media_items" db=0.3ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 14:27:12.116 [debug] QUERY OK source="media_items" db=0.3ms idle=3.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:27:12.117 [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" = ?) [1] 14:27:12.118 [debug] QUERY OK source="media_items" db=0.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 ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 14:27:12.118 [debug] QUERY OK source="media_items" db=0.5ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:27:12.119 [info] Sent 200 in 12ms 14:27:14.103 [info] GET /media/ec5b158a-0768-4f6a-ad24-f739ff49b775/stream 14:27:14.103 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ec5b158a-0768-4f6a-ad24-f739ff49b775", "v" => "1784895940"} Pipelines: [:maybe_basic_auth] 14:27:14.103 [debug] QUERY OK source="media_items" db=0.4ms idle=776.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["ec5b158a-0768-4f6a-ad24-f739ff49b775"] 14:27:14.104 [debug] Invalid range request for media item: ec5b158a-0768-4f6a-ad24-f739ff49b775 - serving full file 14:27:14.104 [info] Sent 200 in 1ms 14:27:16.564 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_t-nRXwAL1k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/10/50/1050033a13ab78cd0b684f5cafa4133d1efde634e9dd7467df74079a825fdd3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:16.591 [debug] Running yt-dlp command for action: download_thumbnail 14:27:16.592 [debug] QUERY OK source="settings" db=0.1ms idle=1036.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.593 [debug] QUERY OK source="settings" db=0.3ms idle=1036.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.593 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1037.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:16.594 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_t-nRXwAL1k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/129/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c6/f9/c6f94601393f1ca87cd8a8f76bb635c2aaf1e76b5305411597de5181f152a229.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:17.611 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pc8U2VP92Vg --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/3d/c5/3dc5f038e680da64e4504b5895741630d08142ba6c7f8d154eea04c31cffcf3d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:17.632 [debug] Running yt-dlp command for action: download_thumbnail 14:27:17.633 [debug] QUERY OK source="settings" db=0.1ms idle=1040.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:17.633 [debug] QUERY OK source="settings" db=0.0ms idle=1040.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:17.633 [debug] QUERY OK source="settings" db=0.2ms idle=1040.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:17.634 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pc8U2VP92Vg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/128/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/76/e4/76e49f7851928ad41278c0e650a494e99a649918761e8c33bc97208f003a1a67.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:19.207 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_t-nRXwAL1k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/129/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c6/f9/c6f94601393f1ca87cd8a8f76bb635c2aaf1e76b5305411597de5181f152a229.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:19.208 [debug] QUERY OK db=0.0ms idle=1652.1ms begin [] 14:27:19.209 [debug] QUERY OK source="media_items" db=1.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:27:16Z], "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].mp4", [["en", "/downloads/Tiny Desk/2017-10-10 Paramore: NPR Music Tiny Desk Concert/Paramore: NPR Music Tiny Desk Concert [_t-nRXwAL1k].en.srt"]], ~U[2026-07-24 12:27:19Z], 129] 14:27:19.210 [debug] QUERY OK source="media_metadata" db=0.7ms 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/129/metadata.json.gz", "/config/metadata/media_items/129/thumbnail.jpg", 129, ~U[2026-07-24 12:27:19Z], ~U[2026-07-24 12:27:19Z]] 14:27:19.210 [debug] QUERY OK db=0.2ms commit [] 14:27:19.212 [debug] QUERY OK source="media_items" db=1.3ms idle=1577.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [286942333, ~U[2026-07-24 12:27:19Z], 129] 14:27:19.212 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:19.212 [info] {"args":{"id":129},"id":77,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":28412822,"event":"job:stop","queue_time":842797817,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:19.219 [info] {"args":{"id":130},"id":78,"meta":{},"system_time":1784896039219471279,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:19.220 [debug] QUERY OK source="media_items" db=0.3ms idle=885.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" = ?) [130] 14:27:19.220 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:19.220 [debug] QUERY OK source="sources" db=0.3ms idle=9.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:27:19.221 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:27:19.221 [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 [130] 14:27:19.222 [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" = ?) [130] 14:27:19.223 [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" = ?) [2] 14:27:19.223 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:19.223 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:19.224 [debug] Running yt-dlp command for action: get_downloadable_status 14:27:19.225 [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 [] 14:27:19.225 [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 [] 14:27:19.225 [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 [] 14:27:19.225 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cXYgdCXkLMc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/79/4b/794b2c7efff833d4636e6237b6f8d711c38540593f4f30fbb7885081fcde336f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:20.729 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=pc8U2VP92Vg --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/128/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/76/e4/76e49f7851928ad41278c0e650a494e99a649918761e8c33bc97208f003a1a67.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:20.730 [debug] QUERY OK db=0.4ms idle=391.5ms begin [] 14:27:20.736 [debug] QUERY OK source="media_items" db=6.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:27:17Z], "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].mp4", [["en", "/downloads/Tiny Desk/2013-08-19 The Front Bottoms: NPR Music Tiny Desk Concert/The Front Bottoms: NPR Music Tiny Desk Concert [pc8U2VP92Vg].en.srt"]], ~U[2026-07-24 12:27:20Z], 128] 14:27:20.737 [debug] QUERY OK source="media_metadata" db=0.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/128/metadata.json.gz", "/config/metadata/media_items/128/thumbnail.jpg", 128, ~U[2026-07-24 12:27:20Z], ~U[2026-07-24 12:27:20Z]] 14:27:20.738 [debug] QUERY OK db=0.5ms commit [] 14:27:20.740 [debug] QUERY OK source="media_items" db=1.1ms idle=182.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [283204305, ~U[2026-07-24 12:27:20Z], 128] 14:27:20.740 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:20.740 [info] {"args":{"id":128},"id":76,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":37450665,"event":"job:stop","queue_time":837288857,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:20.747 [info] {"args":{"id":131},"id":79,"meta":{},"system_time":1784896040747590829,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:20.748 [debug] QUERY OK source="media_items" db=0.8ms idle=191.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [131] 14:27:20.748 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:20.749 [debug] QUERY OK source="sources" db=0.2ms idle=10.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:27:20.749 [debug] QUERY OK source="media_profiles" db=0.2ms 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" = ?) [2] 14:27:20.750 [debug] QUERY OK source="media_items" db=0.3ms 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 [131] 14:27:20.750 [debug] QUERY OK source="media_metadata" db=0.0ms idle=3.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [131] 14:27:20.751 [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" = ?) [2] 14:27:20.751 [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 [] 14:27:20.751 [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 [] 14:27:20.752 [debug] Running yt-dlp command for action: get_downloadable_status 14:27:20.753 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:20.753 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:20.753 [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 [] 14:27:20.753 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3QtklTXbKUQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/5d/e75d14e3ea349d7fc942be767aa99309f47a816ae644cd2a2f36002568db0b2b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:21.810 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cXYgdCXkLMc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/79/4b/794b2c7efff833d4636e6237b6f8d711c38540593f4f30fbb7885081fcde336f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:21.810 [debug] Running yt-dlp command for action: download 14:27:21.811 [debug] QUERY OK source="settings" db=0.3ms idle=1059.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:21.811 [debug] QUERY OK source="settings" db=0.2ms idle=1058.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:21.812 [debug] QUERY OK source="settings" db=0.3ms idle=1058.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:21.812 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cXYgdCXkLMc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ee/a7/eea72884dad15b3c703b465386125f6c91335a25d17ab67f61e9338ac9bf113d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:22.602 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:23.077 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3QtklTXbKUQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/5d/e75d14e3ea349d7fc942be767aa99309f47a816ae644cd2a2f36002568db0b2b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:23.077 [debug] Running yt-dlp command for action: download 14:27:23.078 [debug] QUERY OK source="settings" db=0.2ms idle=1266.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:23.078 [debug] QUERY OK source="settings" db=0.0ms queue=0.1ms idle=1266.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:23.078 [debug] QUERY OK source="settings" db=0.1ms queue=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 [] 14:27:23.079 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3QtklTXbKUQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/75/b2/75b215a0c7be7d08bbaf0ca67deb7bc7ad7373eb896d400dc234a87b73989c0a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:26.363 [info] GET /media_profiles/new 14:27:26.364 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{"template_id" => "2"} Pipelines: [:browser] 14:27:26.365 [debug] QUERY OK source="media_profiles" db=0.7ms idle=1808.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:27:26.365 [debug] QUERY OK source="settings" db=0.1ms idle=1809.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.365 [debug] QUERY OK source="settings" db=0.4ms idle=1809.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.366 [debug] QUERY OK source="settings" db=0.0ms idle=1020.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.366 [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:27:26.367 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.369 [info] Sent 200 in 5ms 14:27:26.876 [info] GET /media_profiles/new 14:27:26.876 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{"template_id" => "1"} Pipelines: [:browser] 14:27:26.876 [debug] QUERY OK source="media_profiles" db=0.1ms idle=511.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:26.877 [debug] QUERY OK source="settings" db=0.1ms idle=510.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.877 [debug] QUERY OK source="settings" db=0.1ms idle=511.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.878 [debug] QUERY OK source="settings" db=0.5ms idle=510.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.878 [debug] QUERY OK source="settings" db=0.1ms idle=510.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.879 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:26.880 [info] Sent 200 in 4ms 14:27:28.992 [info] GET /media_profiles/2 14:27:28.992 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"delete_files" => "true", "id" => "2"} Pipelines: [:browser] 14:27:28.993 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=644.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:27:28.993 [debug] QUERY OK source="sources" db=0.4ms idle=437.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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" [2] 14:27:28.994 [debug] QUERY OK source="settings" db=0.3ms idle=437.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:28.994 [debug] QUERY OK source="settings" db=0.2ms idle=438.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:28.995 [debug] QUERY OK source="settings" db=0.2ms idle=439.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:28.996 [info] Sent 200 in 3ms 14:27:29.501 [info] GET /media_profiles/1 14:27:29.501 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"delete_files" => "true", "id" => "1"} Pipelines: [:browser] 14:27:29.502 [debug] QUERY OK source="media_profiles" db=0.1ms idle=508.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:29.502 [debug] QUERY OK source="sources" db=0.4ms idle=508.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 14:27:29.503 [debug] QUERY OK source="settings" db=0.2ms idle=508.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:29.503 [debug] QUERY OK source="settings" db=0.4ms idle=508.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:29.504 [debug] QUERY OK source="settings" db=0.1ms idle=154.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:29.505 [info] Sent 200 in 4ms 14:27:30.019 [info] GET /sources/1/media/10 14:27:30.020 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10", "source_id" => "1"} Pipelines: [:browser] 14:27:30.020 [debug] QUERY OK source="media_items" db=0.5ms idle=518.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" = ?) [10] 14:27:30.021 [debug] QUERY OK source="tasks" db=0.2ms idle=518.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" [10] 14:27:30.021 [debug] QUERY OK source="sources" db=0.5ms idle=517.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:30.022 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=518.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" = ?) [14] 14:27:30.022 [debug] QUERY OK source="settings" db=0.2ms idle=518.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:30.023 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:30.023 [debug] QUERY OK source="settings" db=0.4ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:30.024 [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] 14:27:30.026 [info] Sent 200 in 6ms 14:27:30.556 [info] GET /sources/1/media/50 14:27:30.556 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50", "source_id" => "1"} Pipelines: [:browser] 14:27:30.557 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=534.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50] 14:27:30.558 [debug] QUERY OK source="tasks" db=0.5ms idle=534.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [50] 14:27:30.558 [debug] QUERY OK source="sources" db=0.4ms idle=534.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:30.559 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=534.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [54] 14:27:30.559 [debug] QUERY OK source="settings" db=0.1ms idle=209.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:30.560 [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 [] 14:27:30.560 [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 [] 14:27:30.561 [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] 14:27:30.563 [info] Sent 200 in 6ms 14:27:31.098 [info] GET /sources/1/media/40 14:27:31.098 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "40", "source_id" => "1"} Pipelines: [:browser] 14:27:31.099 [debug] QUERY OK source="media_items" db=0.3ms idle=539.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" = ?) [40] 14:27:31.100 [debug] QUERY OK source="tasks" db=0.7ms idle=539.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" [40] 14:27:31.100 [debug] QUERY OK source="sources" db=0.7ms idle=539.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:31.101 [debug] QUERY OK source="oban_jobs" db=0.7ms idle=540.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" = ?) [44] 14:27:31.103 [debug] QUERY OK source="settings" db=0.7ms idle=541.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:31.104 [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 [] 14:27:31.105 [debug] QUERY OK source="settings" db=0.5ms 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:27:31.107 [debug] QUERY OK source="media_profiles" db=1.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] 14:27:31.109 [info] Sent 200 in 10ms 14:27:31.607 [info] GET /sources/1/media/11 14:27:31.607 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "11", "source_id" => "1"} Pipelines: [:browser] 14:27:31.608 [debug] QUERY OK source="media_items" db=0.4ms idle=503.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" = ?) [11] 14:27:31.608 [debug] QUERY OK source="tasks" db=0.3ms idle=503.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" [11] 14:27:31.608 [debug] QUERY OK source="sources" db=0.6ms idle=503.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:31.609 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=502.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" = ?) [15] 14:27:31.609 [debug] QUERY OK source="settings" db=0.1ms idle=258.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:31.610 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:31.610 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:31.611 [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] 14:27:31.612 [info] Sent 200 in 5ms 14:27:32.139 [info] GET /sources/1/media/26 14:27:32.139 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26", "source_id" => "1"} Pipelines: [:browser] 14:27:32.139 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=530.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [26] 14:27:32.140 [debug] QUERY OK source="tasks" db=0.1ms idle=530.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" [26] 14:27:32.140 [debug] QUERY OK source="sources" db=0.2ms idle=529.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:32.140 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=529.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" = ?) [30] 14:27:32.140 [debug] QUERY OK source="settings" db=0.0ms idle=529.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:32.141 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:32.141 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:32.141 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:32.143 [info] Sent 200 in 3ms 14:27:32.727 [info] GET /sources/1/media/25 14:27:32.727 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25", "source_id" => "1"} Pipelines: [:browser] 14:27:32.727 [debug] QUERY OK source="media_items" db=0.2ms idle=586.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" = ?) [25] 14:27:32.728 [debug] QUERY OK source="tasks" db=0.3ms idle=586.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" [25] 14:27:32.729 [debug] QUERY OK source="sources" db=0.8ms idle=586.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:27:32.729 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=587.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" = ?) [29] 14:27:32.730 [debug] QUERY OK source="settings" db=0.4ms idle=376.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:32.730 [debug] QUERY OK source="settings" db=0.5ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:32.731 [debug] QUERY OK source="settings" db=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:32.732 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:32.734 [info] Sent 200 in 7ms 14:27:33.215 [info] GET /sources/2/sync_files_on_disk 14:27:33.217 [debug] QUERY OK source="settings" db=1.0ms idle=486.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.217 [debug] QUERY OK source="settings" db=0.4ms idle=487.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.217 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:27:33.218 [error] #PID<0.3923.0> running PinchflatWeb.Endpoint (connection #PID<0.3922.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3922.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/sync_files_on_disk", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41068}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3923.0>, params: %{}, path_info: ["sources", "2", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU5gOzrZ5gdcFcAABih"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3922.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/sync_files_on_disk", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41068}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3922.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/sync_files_on_disk", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41068}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path (truncated) 14:27:33.720 [info] GET /sources/2/force_redownload 14:27:33.721 [debug] QUERY OK source="settings" db=0.3ms idle=989.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.722 [debug] QUERY OK source="settings" db=0.1ms queue=0.3ms idle=988.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.722 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:27:33.722 [error] #PID<0.3925.0> running PinchflatWeb.Endpoint (connection #PID<0.3924.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3924.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41082}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3925.0>, params: %{}, path_info: ["sources", "2", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU5gQsJFBlE_EMAABjB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3924.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41082}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3924.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41082}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefine (truncated) 14:27:33.896 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cXYgdCXkLMc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ee/a7/eea72884dad15b3c703b465386125f6c91335a25d17ab67f61e9338ac9bf113d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:33.920 [debug] Running yt-dlp command for action: download_thumbnail 14:27:33.921 [debug] QUERY OK source="settings" db=0.1ms idle=704.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.921 [debug] QUERY OK source="settings" db=0.1ms idle=703.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.921 [debug] QUERY OK source="settings" db=0.1ms idle=567.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:33.922 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cXYgdCXkLMc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/130/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/25/6b/256b9aac8a5394db100023b4c592412e64ccb0cb23f56db8950c351ce92cf894.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:35.275 [info] GET /sources/1/force_redownload 14:27:35.275 [debug] QUERY OK source="settings" db=0.1ms idle=1553.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:35.276 [debug] QUERY OK source="settings" db=0.2ms idle=1354.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:35.276 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:27:35.276 [error] #PID<0.3930.0> running PinchflatWeb.Endpoint (connection #PID<0.3929.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3929.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45502}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3930.0>, params: %{}, path_info: ["sources", "1", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU5gWewoZoE5NkAABjh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3929.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45502}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3929.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45502}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefine (truncated) 14:27:36.373 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cXYgdCXkLMc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/130/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/25/6b/256b9aac8a5394db100023b4c592412e64ccb0cb23f56db8950c351ce92cf894.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:36.374 [debug] QUERY OK db=0.0ms idle=1097.6ms begin [] 14:27:36.375 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:27:33Z], "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].mp4", [["en", "/downloads/Tiny Desk/2025-02-11 girl in red: Tiny Desk Concert/girl in red: Tiny Desk Concert [cXYgdCXkLMc].en.srt"]], ~U[2026-07-24 12:27:36Z], 130] 14:27:36.376 [debug] QUERY OK source="media_metadata" db=1.1ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/130/metadata.json.gz", "/config/metadata/media_items/130/thumbnail.jpg", 130, ~U[2026-07-24 12:27:36Z], ~U[2026-07-24 12:27:36Z]] 14:27:36.376 [debug] QUERY OK db=0.5ms commit [] 14:27:36.378 [debug] QUERY OK source="media_items" db=0.9ms idle=1019.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [289723598, ~U[2026-07-24 12:27:36Z], 130] 14:27:36.378 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:36.378 [info] {"args":{"id":130},"id":78,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":17159003,"event":"job:stop","queue_time":869218756,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:36.385 [info] {"args":{"id":132},"id":80,"meta":{},"system_time":1784896056385664066,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:36.386 [debug] QUERY OK source="media_items" db=0.2ms idle=26.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" = ?) [132] 14:27:36.386 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:36.386 [debug] QUERY OK source="sources" db=0.2ms idle=9.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:27:36.387 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:27:36.387 [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 [132] 14:27:36.388 [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" = ?) [132] 14:27:36.388 [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" = ?) [2] 14:27:36.389 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:36.389 [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 [] 14:27:36.390 [debug] Running yt-dlp command for action: get_downloadable_status 14:27:36.390 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:36.390 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:36.390 [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 [] 14:27:36.390 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uwUt1fVLb3E --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e1/ca/e1ca8b7e4ba8f40515bacbef47cd6ac2b0d4f8f4e45eebed9181f8516aaa20d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:38.409 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uwUt1fVLb3E --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e1/ca/e1ca8b7e4ba8f40515bacbef47cd6ac2b0d4f8f4e45eebed9181f8516aaa20d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:38.410 [debug] Running yt-dlp command for action: download 14:27:38.410 [debug] QUERY OK source="settings" db=0.3ms idle=854.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:38.411 [debug] QUERY OK source="settings" db=0.3ms idle=854.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:38.411 [debug] QUERY OK source="settings" db=0.3ms idle=855.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:38.411 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uwUt1fVLb3E --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/92/88/92880d280c095741fae850636b50ac648f7bb4557be6a7dce92166fdc62ecc60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:40.164 [info] GET /media_profiles/2/ 14:27:40.164 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:27:40.164 [debug] QUERY OK source="media_profiles" db=0.2ms idle=802.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:27:40.165 [debug] QUERY OK source="sources" db=0.3ms idle=609.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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" [2] 14:27:40.166 [debug] QUERY OK source="settings" db=0.2ms idle=609.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:40.166 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:27:40.166 [debug] QUERY OK source="settings" db=0.1ms idle=610.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:40.167 [info] Sent 200 in 3ms 14:27:48.588 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3QtklTXbKUQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/75/b2/75b215a0c7be7d08bbaf0ca67deb7bc7ad7373eb896d400dc234a87b73989c0a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:48.594 [debug] Running yt-dlp command for action: download_thumbnail 14:27:48.595 [debug] QUERY OK source="settings" db=0.2ms idle=1039.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:48.595 [debug] QUERY OK source="settings" db=0.2ms idle=1039.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:48.596 [debug] QUERY OK source="settings" db=0.0ms idle=220.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:48.596 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3QtklTXbKUQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/131/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c8/98/c89819974bfaa509ef768e14126b648adf7ba615498afcc12bedc9be41d1c3ef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:51.050 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3QtklTXbKUQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/131/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c8/98/c89819974bfaa509ef768e14126b648adf7ba615498afcc12bedc9be41d1c3ef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:51.052 [debug] QUERY OK db=0.4ms idle=674.0ms begin [] 14:27:51.054 [debug] QUERY OK source="media_items" db=2.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:27:48Z], "/downloads/Tiny Desk/2019-06-28 Imogen Heap: NPR Music Tiny Desk Concert/Imogen Heap: NPR Music Tiny Desk Concert [3QtklTXbKUQ].mp4", ~U[2026-07-24 12:27:51Z], 131] 14:27:51.057 [debug] QUERY OK source="media_metadata" db=2.5ms 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/131/metadata.json.gz", "/config/metadata/media_items/131/thumbnail.jpg", 131, ~U[2026-07-24 12:27:51Z], ~U[2026-07-24 12:27:51Z]] 14:27:51.057 [debug] QUERY OK db=0.2ms commit [] 14:27:51.061 [debug] QUERY OK source="media_items" db=4.2ms idle=501.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [319493111, ~U[2026-07-24 12:27:51Z], 131] 14:27:51.062 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:51.063 [info] {"args":{"id":131},"id":79,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":30314969,"event":"job:stop","queue_time":867746780,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:51.070 [info] {"args":{"id":133},"id":81,"meta":{},"system_time":1784896071070528169,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:51.071 [debug] QUERY OK source="media_items" db=0.4ms idle=514.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [133] 14:27:51.071 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:51.072 [debug] QUERY OK source="sources" db=0.6ms idle=14.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:27:51.073 [debug] QUERY OK source="media_profiles" db=0.9ms idle=10.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" = ?) [2] 14:27:51.074 [debug] QUERY OK source="media_items" db=0.4ms idle=10.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [133] 14:27:51.075 [debug] QUERY OK source="media_metadata" db=0.8ms idle=4.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [133] 14:27:51.076 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 14:27:51.076 [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 [] 14:27:51.076 [debug] QUERY OK source="settings" db=0.0ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:51.077 [debug] Running yt-dlp command for action: get_downloadable_status 14:27:51.077 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:51.078 [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 [] 14:27:51.078 [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 [] 14:27:51.078 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZknTE5DPlAA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/11/56/11569cb4e28754fc78b8546e5fa95d8d34cea374ebc691d3911b570e11af27ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:52.606 [info] {"source":"oban","duration":2736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:53.156 [info] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:27:53.390 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZknTE5DPlAA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/11/56/11569cb4e28754fc78b8546e5fa95d8d34cea374ebc691d3911b570e11af27ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:53.391 [debug] Running yt-dlp command for action: download 14:27:53.391 [debug] QUERY OK source="settings" db=0.6ms 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 [] 14:27:53.392 [debug] QUERY OK source="settings" db=0.2ms idle=836.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:53.392 [debug] QUERY OK source="settings" db=0.3ms idle=836.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:53.393 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZknTE5DPlAA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ff/42/ff42abfb3fb72a627fc85e03fc763ae9fd5a982b0f92d8baef93d34348df2589.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:53.982 [info] GET /media_profiles/1/ 14:27:53.982 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:27:53.983 [debug] QUERY OK source="media_profiles" db=1.0ms idle=1376.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:27:53.984 [debug] QUERY OK source="sources" db=0.8ms idle=603.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."media_profile_id" = ?) ORDER BY s0."custom_name" [1] 14:27:53.986 [debug] QUERY OK source="settings" db=1.0ms idle=593.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:53.987 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=594.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:53.988 [debug] QUERY OK source="settings" db=0.2ms idle=594.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:53.991 [info] Sent 200 in 8ms 14:27:54.197 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uwUt1fVLb3E --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/92/88/92880d280c095741fae850636b50ac648f7bb4557be6a7dce92166fdc62ecc60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:54.203 [debug] Running yt-dlp command for action: download_thumbnail 14:27:54.204 [debug] QUERY OK source="settings" db=0.3ms idle=220.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:54.204 [debug] QUERY OK source="settings" db=0.3ms idle=219.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:54.205 [debug] QUERY OK source="settings" db=0.3ms idle=218.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:54.205 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uwUt1fVLb3E --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/132/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/17/2b/172bde1b7a577b248be3b4b70d0eafe92c7a0938beb8e3c17b905987ceebb121.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:56.431 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=uwUt1fVLb3E --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/132/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/17/2b/172bde1b7a577b248be3b4b70d0eafe92c7a0938beb8e3c17b905987ceebb121.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:56.432 [debug] QUERY OK db=0.0ms idle=852.1ms begin [] 14:27:56.433 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:27:54Z], "/downloads/Tiny Desk/2020-06-22 Alicia Keys: NPR Music Tiny Desk Concert/Alicia Keys: NPR Music Tiny Desk Concert [uwUt1fVLb3E].mp4", ~U[2026-07-24 12:27:56Z], 132] 14:27:56.434 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/132/metadata.json.gz", "/config/metadata/media_items/132/thumbnail.jpg", 132, ~U[2026-07-24 12:27:56Z], ~U[2026-07-24 12:27:56Z]] 14:27:56.434 [debug] QUERY OK db=0.3ms commit [] 14:27:56.436 [debug] QUERY OK source="media_items" db=1.6ms idle=855.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [479985391, ~U[2026-07-24 12:27:56Z], 132] 14:27:56.436 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:56.437 [info] {"args":{"id":132},"id":80,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20051193,"event":"job:stop","queue_time":881384850,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:56.443 [info] {"args":{"id":134},"id":82,"meta":{},"system_time":1784896076443405238,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:27:56.444 [debug] QUERY OK source="media_items" db=0.3ms idle=56.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" = ?) [134] 14:27:56.444 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:27:56.444 [debug] QUERY OK source="sources" db=0.3ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:27:56.445 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:27:56.445 [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 [134] 14:27:56.446 [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" = ?) [134] 14:27:56.446 [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" = ?) [2] 14:27:56.447 [debug] QUERY OK source="settings" db=0.3ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:56.447 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:56.448 [debug] Running yt-dlp command for action: get_downloadable_status 14:27:56.448 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:56.449 [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 [] 14:27:56.449 [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 [] 14:27:56.449 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y-PLr-BPxKU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/de/7a/de7ae637ad4b3bd1b4357cd781e8d74f0f5c10ea3997f43690e8e296db0ddf8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:27:58.832 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y-PLr-BPxKU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/de/7a/de7ae637ad4b3bd1b4357cd781e8d74f0f5c10ea3997f43690e8e296db0ddf8b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:27:58.833 [debug] Running yt-dlp command for action: download 14:27:58.833 [debug] QUERY OK source="settings" db=0.3ms idle=1253.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:58.834 [debug] QUERY OK source="settings" db=0.4ms idle=1253.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:58.834 [debug] QUERY OK source="settings" db=0.3ms idle=1254.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:27:58.834 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y-PLr-BPxKU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/5a/74/5a7457f5171e7ad8e59c2ae9da29ae7b9a9df041f6c55821ed727f09bff30513.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:00.542 [info] {"source":"oban","duration":403,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:28:03.927 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZknTE5DPlAA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ff/42/ff42abfb3fb72a627fc85e03fc763ae9fd5a982b0f92d8baef93d34348df2589.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:03.951 [debug] Running yt-dlp command for action: download_thumbnail 14:28:03.952 [debug] QUERY OK source="settings" db=0.2ms idle=1353.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:03.952 [debug] QUERY OK source="settings" db=0.1ms idle=1354.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:03.953 [debug] QUERY OK source="settings" db=0.6ms idle=555.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:03.953 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZknTE5DPlAA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/133/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d0/36/d0361df33b59549e4d72a70edb97d419f40f84c3f146e75a67afcce70f806fed.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:06.227 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZknTE5DPlAA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/133/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d0/36/d0361df33b59549e4d72a70edb97d419f40f84c3f146e75a67afcce70f806fed.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:06.228 [debug] QUERY OK db=0.1ms idle=828.4ms begin [] 14:28:06.229 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:28:03Z], "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].mp4", [["en", "/downloads/Tiny Desk/2020-12-09 Hayley Williams: Tiny Desk (Home) Concert/Hayley Williams: Tiny Desk (Home) Concert [ZknTE5DPlAA].en.srt"]], ~U[2026-07-24 12:28:06Z], 133] 14:28:06.230 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/133/metadata.json.gz", "/config/metadata/media_items/133/thumbnail.jpg", 133, ~U[2026-07-24 12:28:06Z], ~U[2026-07-24 12:28:06Z]] 14:28:06.230 [debug] QUERY OK db=0.3ms commit [] 14:28:06.233 [debug] QUERY OK source="media_items" db=1.7ms idle=587.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [207217486, ~U[2026-07-24 12:28:06Z], 133] 14:28:06.233 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:06.234 [info] {"args":{"id":133},"id":81,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15162830,"event":"job:stop","queue_time":894069720,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:06.242 [info] {"args":{"id":135},"id":83,"meta":{},"system_time":1784896086242047919,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:06.243 [debug] QUERY OK source="media_items" db=0.6ms idle=598.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [135] 14:28:06.243 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:06.243 [debug] QUERY OK source="sources" db=0.3ms idle=12.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:28:06.244 [debug] QUERY OK source="media_profiles" db=0.4ms queue=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" = ?) [2] 14:28:06.245 [debug] QUERY OK source="media_items" db=0.4ms idle=9.9ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [135] 14:28:06.246 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.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" = ?) [135] 14:28:06.247 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:28:06.247 [debug] QUERY OK source="settings" db=0.3ms queue=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 [] 14:28:06.248 [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:28:06.248 [debug] Running yt-dlp command for action: get_downloadable_status 14:28:06.249 [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 [] 14:28:06.249 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:06.249 [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 [] 14:28:06.249 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cMIJsoaxRjk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/e9/fce9ec9ef80e49f1b5b04cf7a37459fda77eed4470f8a0093a153fdfc631b6b1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:06.503 [info] GET /sources/1/sync_files_on_disk 14:28:06.504 [debug] QUERY OK source="settings" db=0.5ms idle=255.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:06.505 [debug] QUERY OK source="settings" db=0.4ms idle=255.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:06.505 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:28:06.505 [error] #PID<0.3961.0> running PinchflatWeb.Endpoint (connection #PID<0.3960.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/sync_files_on_disk ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3960.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/sync_files_on_disk", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33268}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.3961.0>, params: %{}, path_info: ["sources", "1", "sync_files_on_disk"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/sync_files_on_disk", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU5iK0Ka9rH218AABlh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3960.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/sync_files_on_disk", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33268}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/sync_files_on_disk (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.3960.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/sync_files_on_disk", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33268}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYWTFuVGY5VWItVVducFNPQTJWOFR4eUt2.qkqUa8amAf8TO1YzNN8slAdroG4T9-49ZAQ8vt-ix0Q", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path (truncated) 14:28:08.687 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cMIJsoaxRjk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/e9/fce9ec9ef80e49f1b5b04cf7a37459fda77eed4470f8a0093a153fdfc631b6b1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:08.687 [debug] Running yt-dlp command for action: download 14:28:08.688 [debug] QUERY OK source="settings" db=0.5ms idle=1043.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:08.689 [debug] QUERY OK source="settings" db=0.2ms queue=0.5ms idle=1044.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:08.689 [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 [] 14:28:08.690 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cMIJsoaxRjk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/29/a1/29a179cc853eae6e149be50237ae835c025484a281822894c2ab47218dfc6c4e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:13.908 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y-PLr-BPxKU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/5a/74/5a7457f5171e7ad8e59c2ae9da29ae7b9a9df041f6c55821ed727f09bff30513.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:13.933 [debug] Running yt-dlp command for action: download_thumbnail 14:28:13.934 [debug] QUERY OK source="settings" db=0.1ms idle=1290.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:13.935 [debug] QUERY OK source="settings" db=0.3ms idle=1290.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:13.935 [debug] QUERY OK source="settings" db=0.3ms idle=1291.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:13.936 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y-PLr-BPxKU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/134/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/02/19/0219552f5aba8c86a62ccd8f5129974ac9eef859839cc66bf93ee2009afd99ef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:16.518 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y-PLr-BPxKU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/134/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/02/19/0219552f5aba8c86a62ccd8f5129974ac9eef859839cc66bf93ee2009afd99ef.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:16.519 [debug] QUERY OK db=0.3ms idle=875.4ms begin [] 14:28:16.521 [debug] QUERY OK source="media_items" db=1.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:28:13Z], "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].mp4", [["en", "/downloads/Tiny Desk/2024-05-24 Nelly Furtado: Tiny Desk Concert/Nelly Furtado: Tiny Desk Concert [y-PLr-BPxKU].en.srt"]], ~U[2026-07-24 12:28:16Z], 134] 14:28:16.522 [debug] QUERY OK source="media_metadata" db=1.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/134/metadata.json.gz", "/config/metadata/media_items/134/thumbnail.jpg", 134, ~U[2026-07-24 12:28:16Z], ~U[2026-07-24 12:28:16Z]] 14:28:16.523 [debug] QUERY OK db=0.5ms commit [] 14:28:16.525 [debug] QUERY OK source="media_items" db=1.3ms idle=880.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [371503944, ~U[2026-07-24 12:28:16Z], 134] 14:28:16.525 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:16.526 [info] {"args":{"id":134},"id":82,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20082326,"event":"job:stop","queue_time":896442772,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:16.532 [info] {"args":{"id":136},"id":84,"meta":{},"system_time":1784896096532457973,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:16.533 [debug] QUERY OK source="media_items" db=0.6ms idle=112.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [136] 14:28:16.533 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:16.534 [debug] QUERY OK source="sources" db=0.1ms idle=10.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:28:16.534 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:28:16.534 [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 [136] 14:28:16.535 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [136] 14:28:16.536 [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" = ?) [2] 14:28:16.536 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:16.536 [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 [] 14:28:16.537 [debug] Running yt-dlp command for action: get_downloadable_status 14:28:16.537 [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 [] 14:28:16.538 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:16.538 [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 [] 14:28:16.538 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=QrR_gm6RqCo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/35/4e354f1076c46cbf5a54c24499847d09483d59a4b04a025a6eedd99bfc91fcb2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:17.593 [info] GET /media_profiles/new 14:28:17.593 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 14:28:17.594 [debug] QUERY OK source="settings" db=0.2ms idle=1057.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:17.594 [debug] QUERY OK source="settings" db=0.1ms idle=1056.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:17.594 [debug] QUERY OK source="settings" db=0.2ms idle=1056.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:17.595 [debug] QUERY OK source="settings" db=0.2ms idle=1056.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:17.596 [debug] QUERY OK source="settings" db=0.3ms idle=174.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:17.597 [info] Sent 200 in 4ms 14:28:20.240 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=QrR_gm6RqCo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/35/4e354f1076c46cbf5a54c24499847d09483d59a4b04a025a6eedd99bfc91fcb2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:20.241 [debug] Running yt-dlp command for action: download 14:28:20.241 [debug] QUERY OK source="settings" db=0.1ms idle=1597.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:20.241 [debug] QUERY OK source="settings" db=0.1ms idle=1597.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:20.242 [debug] QUERY OK source="settings" db=0.2ms idle=1597.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:20.242 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=QrR_gm6RqCo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b8/a1/b8a12caf2874e4ff99d217b16966aab18cceb50b3c778cdf87d27b440ecdf840.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:22.608 [info] {"source":"oban","duration":1813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:24.425 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cMIJsoaxRjk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/29/a1/29a179cc853eae6e149be50237ae835c025484a281822894c2ab47218dfc6c4e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:24.447 [debug] Running yt-dlp command for action: download_thumbnail 14:28:24.448 [debug] QUERY OK source="settings" db=0.1ms idle=804.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:24.449 [debug] QUERY OK source="settings" db=0.3ms idle=804.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:24.449 [debug] QUERY OK source="settings" db=0.2ms idle=805.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:24.449 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cMIJsoaxRjk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/135/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/36/81/36819167b4d2aa81b14aa5881352408acda6e0cc7a59f65924394ae47d364821.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:26.814 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=cMIJsoaxRjk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/135/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/36/81/36819167b4d2aa81b14aa5881352408acda6e0cc7a59f65924394ae47d364821.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:26.814 [debug] QUERY OK db=0.0ms idle=1170.8ms begin [] 14:28:26.815 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:28:24Z], "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].mp4", [["en", "/downloads/Tiny Desk/2024-03-15 Justin Timberlake: Tiny Desk Concert/Justin Timberlake: Tiny Desk Concert [cMIJsoaxRjk].en.srt"]], ~U[2026-07-24 12:28:26Z], 135] 14:28:26.816 [debug] QUERY OK source="media_metadata" db=0.7ms 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/135/metadata.json.gz", "/config/metadata/media_items/135/thumbnail.jpg", 135, ~U[2026-07-24 12:28:26Z], ~U[2026-07-24 12:28:26Z]] 14:28:26.817 [debug] QUERY OK db=0.2ms commit [] 14:28:26.818 [debug] QUERY OK source="media_items" db=1.2ms idle=1173.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [461809825, ~U[2026-07-24 12:28:26Z], 135] 14:28:26.819 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:26.820 [info] {"args":{"id":135},"id":83,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20577604,"event":"job:stop","queue_time":904240752,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:26.826 [info] {"args":{"id":137},"id":85,"meta":{},"system_time":1784896106826560700,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:26.827 [debug] QUERY OK source="media_items" db=0.5ms idle=379.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [137] 14:28:26.827 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:26.827 [debug] QUERY OK source="sources" db=0.1ms idle=10.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:28:26.828 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.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" = ?) [2] 14:28:26.828 [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 [137] 14:28:26.830 [debug] QUERY OK source="media_metadata" db=0.4ms idle=3.1ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [137] 14:28:26.830 [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" = ?) [2] 14:28:26.830 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:26.831 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:26.831 [debug] Running yt-dlp command for action: get_downloadable_status 14:28:26.832 [debug] QUERY OK source="settings" db=0.0ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:26.832 [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 [] 14:28:26.832 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:26.832 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=21ix1OwPoY8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2f/9e/2f9e5b589e8e4c19764790fb1e55f4fd2597b1c7e4318048d8a36a2e72b16b60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:35.104 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=21ix1OwPoY8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2f/9e/2f9e5b589e8e4c19764790fb1e55f4fd2597b1c7e4318048d8a36a2e72b16b60.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:35.105 [debug] Running yt-dlp command for action: download 14:28:35.106 [debug] QUERY OK source="settings" db=0.5ms queue=0.4ms idle=643.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:35.106 [debug] QUERY OK source="settings" db=0.2ms idle=462.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:35.106 [debug] QUERY OK source="settings" db=0.1ms idle=462.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:35.107 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=21ix1OwPoY8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ec/30/ec30d2e4c1fcd83cc0f872df0cd2cd1657e7fca71f6175df9347ced35758a540.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:37.354 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=QrR_gm6RqCo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b8/a1/b8a12caf2874e4ff99d217b16966aab18cceb50b3c778cdf87d27b440ecdf840.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:37.367 [debug] Running yt-dlp command for action: download_thumbnail 14:28:37.370 [debug] QUERY OK source="settings" db=0.6ms idle=905.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:37.372 [debug] QUERY OK source="settings" db=2.0ms idle=726.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:37.374 [debug] QUERY OK source="settings" db=1.4ms queue=0.1ms idle=728.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:37.374 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=QrR_gm6RqCo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/136/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/23/f2/23f22768a12c160a0237c9868a652a081f1e3f1317689f2227672399ca2c798f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:41.212 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=QrR_gm6RqCo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/136/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/23/f2/23f22768a12c160a0237c9868a652a081f1e3f1317689f2227672399ca2c798f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:41.212 [debug] QUERY OK db=0.2ms idle=743.9ms begin [] 14:28:41.214 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:28:37Z], "/downloads/Tiny Desk/2018-08-08 Mac Miller: NPR Music Tiny Desk Concert/Mac Miller: NPR Music Tiny Desk Concert [QrR_gm6RqCo].mp4", ~U[2026-07-24 12:28:41Z], 136] 14:28:41.215 [debug] QUERY OK source="media_metadata" db=0.7ms 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/136/metadata.json.gz", "/config/metadata/media_items/136/thumbnail.jpg", 136, ~U[2026-07-24 12:28:41Z], ~U[2026-07-24 12:28:41Z]] 14:28:41.215 [debug] QUERY OK db=0.2ms commit [] 14:28:41.217 [debug] QUERY OK source="media_items" db=1.4ms idle=571.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [353920461, ~U[2026-07-24 12:28:41Z], 136] 14:28:41.217 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:41.217 [info] {"args":{"id":136},"id":84,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24684769,"event":"job:stop","queue_time":912531767,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:41.223 [info] {"args":{"id":138},"id":86,"meta":{},"system_time":1784896121223489374,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:28:41.224 [debug] QUERY OK source="media_items" db=0.5ms idle=579.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [138] 14:28:41.224 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:28:41.224 [debug] QUERY OK source="sources" db=0.1ms idle=9.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:28:41.225 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:28:41.225 [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 [138] 14:28:41.226 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [138] 14:28:41.227 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 14:28:41.227 [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 [] 14:28:41.227 [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 [] 14:28:41.228 [debug] Running yt-dlp command for action: get_downloadable_status 14:28:41.229 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:41.229 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:41.229 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:41.229 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OX-gMWH9qTQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/ef/52efb2410fc8ce12edb263d3f3bf245264f84872ad1b8147b5f086f94898fe6f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:43.417 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OX-gMWH9qTQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/ef/52efb2410fc8ce12edb263d3f3bf245264f84872ad1b8147b5f086f94898fe6f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:28:43.418 [debug] Running yt-dlp command for action: download 14:28:43.418 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:28:43.419 [debug] QUERY OK source="settings" db=0.2ms idle=775.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:43.419 [debug] QUERY OK source="settings" db=0.1ms idle=775.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:28:43.419 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OX-gMWH9qTQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/55/bf/55bf46c8d383b9dce5d351ec3d46f61fa793faa460a62b53351fad9859e68e64.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:28:52.609 [info] {"source":"oban","duration":564,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:53.211 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:29:00.543 [info] {"source":"oban","duration":222,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:29:08.559 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=21ix1OwPoY8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ec/30/ec30d2e4c1fcd83cc0f872df0cd2cd1657e7fca71f6175df9347ced35758a540.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:08.581 [debug] Running yt-dlp command for action: download_thumbnail 14:29:08.582 [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 [] 14:29:08.582 [debug] QUERY OK source="settings" db=0.5ms idle=938.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:08.583 [debug] QUERY OK source="settings" db=0.4ms idle=939.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:08.583 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=21ix1OwPoY8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/137/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/2a/67/2a6701ef8f5caefcf455aaf443a290dd3716bfac4eb96c0ec3389d646fa98ee9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:09.638 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OX-gMWH9qTQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/55/bf/55bf46c8d383b9dce5d351ec3d46f61fa793faa460a62b53351fad9859e68e64.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:09.661 [debug] Running yt-dlp command for action: download_thumbnail 14:29:09.662 [debug] QUERY OK source="settings" db=0.1ms idle=141.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:09.662 [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 [] 14:29:09.662 [debug] QUERY OK source="settings" db=0.3ms idle=18.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:09.663 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OX-gMWH9qTQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/138/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a8/73/a87396c822600436cd23e8338bef27775b8ebf33fe0f44ea9f402cd860651f74.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:10.961 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=21ix1OwPoY8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/137/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/2a/67/2a6701ef8f5caefcf455aaf443a290dd3716bfac4eb96c0ec3389d646fa98ee9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:10.962 [debug] QUERY OK db=0.0ms queue=0.3ms idle=1318.0ms begin [] 14:29:10.964 [debug] QUERY OK source="media_items" db=1.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:29:08Z], "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].mp4", [["en", "/downloads/Tiny Desk/2017-09-22 Snail Mail: NPR Music Tiny Desk Concert/Snail Mail: NPR Music Tiny Desk Concert [21ix1OwPoY8].en.srt"]], ~U[2026-07-24 12:29:10Z], 137] 14:29:10.964 [debug] QUERY OK source="media_metadata" db=0.5ms 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/137/metadata.json.gz", "/config/metadata/media_items/137/thumbnail.jpg", 137, ~U[2026-07-24 12:29:10Z], ~U[2026-07-24 12:29:10Z]] 14:29:10.965 [debug] QUERY OK db=0.2ms commit [] 14:29:10.966 [debug] QUERY OK source="media_items" db=1.3ms idle=1303.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [327936175, ~U[2026-07-24 12:29:10Z], 137] 14:29:10.966 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:10.967 [info] {"args":{"id":137},"id":85,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":44140220,"event":"job:stop","queue_time":919825848,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:10.973 [info] {"args":{"id":139},"id":87,"meta":{},"system_time":1784896150973604023,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:10.974 [debug] QUERY OK source="media_items" db=0.3ms idle=452.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [139] 14:29:10.974 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:10.975 [debug] QUERY OK source="sources" db=0.2ms idle=9.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:29:10.975 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:29:10.976 [debug] QUERY OK source="media_items" db=0.5ms 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 [139] 14:29:10.977 [debug] QUERY OK source="media_metadata" db=0.2ms idle=3.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [139] 14:29:10.978 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:29:10.978 [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 [] 14:29:10.979 [debug] QUERY OK source="settings" db=0.3ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:10.979 [debug] Running yt-dlp command for action: get_downloadable_status 14:29:10.980 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:10.981 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:10.981 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:10.981 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8zHdLF3-coA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/ce/69cea481fc553aa94443a991f7ec3daed3fd758e33e4642eca5e635c65c3e085.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:12.014 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OX-gMWH9qTQ --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/138/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a8/73/a87396c822600436cd23e8338bef27775b8ebf33fe0f44ea9f402cd860651f74.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:12.017 [debug] QUERY OK db=0.1ms queue=0.7ms idle=1036.9ms begin [] 14:29:12.019 [debug] QUERY OK source="media_items" db=2.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:29:09Z], "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].mp4", [["en", "/downloads/Tiny Desk/2017-06-26 Tigers Jaw: NPR Music Tiny Desk Concert/Tigers Jaw: NPR Music Tiny Desk Concert [OX-gMWH9qTQ].en.srt"]], ~U[2026-07-24 12:29:12Z], 138] 14:29:12.022 [debug] QUERY OK source="media_metadata" db=2.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/138/metadata.json.gz", "/config/metadata/media_items/138/thumbnail.jpg", 138, ~U[2026-07-24 12:29:12Z], ~U[2026-07-24 12:29:12Z]] 14:29:12.034 [debug] QUERY OK db=12.4ms commit [] 14:29:12.040 [debug] QUERY OK source="media_items" db=4.6ms idle=1054.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [136038873, ~U[2026-07-24 12:29:12Z], 138] 14:29:12.041 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:12.041 [info] {"args":{"id":138},"id":86,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":30817572,"event":"job:stop","queue_time":932222856,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:12.048 [info] {"args":{"id":140},"id":88,"meta":{},"system_time":1784896152048547619,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:12.049 [debug] QUERY OK source="media_items" db=0.8ms idle=525.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [140] 14:29:12.049 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:12.050 [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" = ?) [2] 14:29:12.051 [debug] QUERY OK source="media_profiles" db=0.5ms 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" = ?) [2] 14:29:12.052 [debug] QUERY OK source="media_items" db=0.3ms idle=10.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [140] 14:29:12.053 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [140] 14:29:12.053 [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" = ?) [2] 14:29:12.054 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:12.054 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:12.055 [debug] Running yt-dlp command for action: get_downloadable_status 14:29:12.056 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:12.056 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:12.056 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:12.057 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=N1w-hDiJ4dM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/bb/e7bb7aa54771d038b2da539f97340eeee06c2d77c22ea5e6ac155ab3bd3e12c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:13.262 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8zHdLF3-coA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/69/ce/69cea481fc553aa94443a991f7ec3daed3fd758e33e4642eca5e635c65c3e085.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:13.263 [debug] Running yt-dlp command for action: download 14:29:13.264 [debug] QUERY OK source="settings" db=0.4ms idle=1209.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:13.265 [debug] QUERY OK source="settings" db=0.5ms idle=1208.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:13.265 [debug] QUERY OK source="settings" db=0.3ms idle=1208.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:13.265 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8zHdLF3-coA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/94/73/947360b5da6330994273ca6b8e9442cafe904033dbbeacc9556b4fff668e8193.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:14.306 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=N1w-hDiJ4dM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/bb/e7bb7aa54771d038b2da539f97340eeee06c2d77c22ea5e6ac155ab3bd3e12c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:14.306 [debug] Running yt-dlp command for action: download 14:29:14.307 [debug] QUERY OK source="settings" db=0.4ms idle=1042.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:14.307 [debug] QUERY OK source="settings" db=0.0ms idle=1042.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:14.308 [debug] QUERY OK source="settings" db=0.2ms idle=1042.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:14.308 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=N1w-hDiJ4dM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4a/68/4a68803b4bbf413e3ee15e4deadcbc7dfa087070d19b6071a95d1fde259a6262.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:22.610 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:24.163 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8zHdLF3-coA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/94/73/947360b5da6330994273ca6b8e9442cafe904033dbbeacc9556b4fff668e8193.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:24.184 [debug] Running yt-dlp command for action: download_thumbnail 14:29:24.185 [debug] QUERY OK source="settings" db=0.1ms idle=644.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:24.185 [debug] QUERY OK source="settings" db=0.0ms idle=541.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:24.186 [debug] QUERY OK source="settings" db=0.2ms idle=542.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:24.186 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8zHdLF3-coA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/139/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9d/06/9d06e7db29e324c693bdb3d4ac6d44136c921f7790328c2a81074a0298804f7d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:26.640 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=8zHdLF3-coA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/139/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9d/06/9d06e7db29e324c693bdb3d4ac6d44136c921f7790328c2a81074a0298804f7d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:26.641 [debug] QUERY OK db=0.2ms idle=997.6ms begin [] 14:29:26.642 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:29:24Z], "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].mp4", [["en", "/downloads/Tiny Desk/2017-05-01 alt-J: Tiny Desk Concert/alt-J: Tiny Desk Concert [8zHdLF3-coA].en.srt"]], ~U[2026-07-24 12:29:26Z], 139] 14:29:26.661 [debug] QUERY OK source="media_metadata" db=18.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/139/metadata.json.gz", "/config/metadata/media_items/139/thumbnail.jpg", 139, ~U[2026-07-24 12:29:26Z], ~U[2026-07-24 12:29:26Z]] 14:29:26.663 [debug] QUERY OK db=1.4ms commit [] 14:29:26.665 [debug] QUERY OK source="media_items" db=1.2ms idle=1019.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [202638699, ~U[2026-07-24 12:29:26Z], 139] 14:29:26.665 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:26.665 [info] {"args":{"id":139},"id":87,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":15691661,"event":"job:stop","queue_time":958972799,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:26.672 [info] {"args":{"id":141},"id":89,"meta":{},"system_time":1784896166672513948,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:26.673 [debug] QUERY OK source="media_items" db=0.6ms idle=127.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" = ?) [141] 14:29:26.673 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:26.674 [debug] QUERY OK source="sources" db=0.4ms idle=10.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:29:26.674 [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" = ?) [2] 14:29:26.675 [debug] QUERY OK source="media_items" db=0.1ms 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 [141] 14:29:26.675 [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" = ?) [141] 14:29:26.676 [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" = ?) [2] 14:29:26.676 [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 [] 14:29:26.676 [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 [] 14:29:26.676 [debug] Running yt-dlp command for action: get_downloadable_status 14:29:26.677 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:26.677 [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 [] 14:29:26.678 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:26.678 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-hLJNZSIwP8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/ba/febabd41df529d3ed7d9e152b50db371bab887a4eaab86523b44485bfa0d9769.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:28.936 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-hLJNZSIwP8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/ba/febabd41df529d3ed7d9e152b50db371bab887a4eaab86523b44485bfa0d9769.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:28.936 [debug] Running yt-dlp command for action: download 14:29:28.937 [debug] QUERY OK source="settings" db=0.3ms idle=389.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:28.938 [debug] QUERY OK source="settings" db=0.6ms idle=293.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:28.938 [debug] QUERY OK source="settings" db=0.2ms idle=294.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:28.938 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-hLJNZSIwP8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b8/74/b8747a234e5043e5261247b4871302b9cdb4d5e33a3bebac469e3942426a0b9b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:34.779 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=N1w-hDiJ4dM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4a/68/4a68803b4bbf413e3ee15e4deadcbc7dfa087070d19b6071a95d1fde259a6262.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:34.785 [debug] Running yt-dlp command for action: download_thumbnail 14:29:34.785 [debug] QUERY OK source="settings" db=0.1ms idle=229.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:34.786 [debug] QUERY OK source="settings" db=0.0ms idle=142.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:34.786 [debug] QUERY OK source="settings" db=0.0ms 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 [] 14:29:34.786 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=N1w-hDiJ4dM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/140/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/71/43/7143b74bf7f8d3c2f95651661ae6e30b5b8f64c6bef295651f8ea30ee8170913.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:37.087 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=N1w-hDiJ4dM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/140/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/71/43/7143b74bf7f8d3c2f95651661ae6e30b5b8f64c6bef295651f8ea30ee8170913.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:37.088 [debug] QUERY OK db=0.0ms queue=0.2ms idle=528.1ms begin [] 14:29:37.089 [debug] QUERY OK source="media_items" db=1.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:29:34Z], "/downloads/Tiny Desk/2017-12-14 Tyler, The Creator: NPR Music Tiny Desk Concert/Tyler, The Creator: NPR Music Tiny Desk Concert [N1w-hDiJ4dM].mp4", ~U[2026-07-24 12:29:37Z], 140] 14:29:37.090 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/140/metadata.json.gz", "/config/metadata/media_items/140/thumbnail.jpg", 140, ~U[2026-07-24 12:29:37Z], ~U[2026-07-24 12:29:37Z]] 14:29:37.090 [debug] QUERY OK db=0.3ms commit [] 14:29:37.092 [debug] QUERY OK source="media_items" db=1.6ms idle=447.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [471668309, ~U[2026-07-24 12:29:37Z], 140] 14:29:37.093 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:37.093 [info] {"args":{"id":140},"id":88,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":25044725,"event":"job:stop","queue_time":958047782,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:37.100 [info] {"args":{"id":142},"id":90,"meta":{},"system_time":1784896177100585377,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:37.101 [debug] QUERY OK source="media_items" db=0.4ms idle=456.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" = ?) [142] 14:29:37.101 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:37.102 [debug] QUERY OK source="sources" db=0.6ms 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" = ?) [2] 14:29:37.102 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.2ms 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" = ?) [2] 14:29:37.103 [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 [142] 14:29:37.104 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [142] 14:29:37.104 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 14:29:37.105 [debug] QUERY OK source="settings" db=0.4ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:37.106 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:37.107 [debug] Running yt-dlp command for action: get_downloadable_status 14:29:37.109 [debug] QUERY OK source="settings" db=0.5ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:37.110 [debug] QUERY OK source="settings" db=0.8ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:37.111 [debug] QUERY OK source="settings" db=0.7ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:37.112 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oCcks-fwq2c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8c/8d/8c8db7d5501c489310aa1e292e7a50265b267e0f60da72bb99aec9f04fae9e44.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:40.825 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oCcks-fwq2c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8c/8d/8c8db7d5501c489310aa1e292e7a50265b267e0f60da72bb99aec9f04fae9e44.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:40.825 [debug] Running yt-dlp command for action: download 14:29:40.826 [debug] QUERY OK source="settings" db=0.6ms idle=259.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:40.827 [debug] QUERY OK source="settings" db=0.4ms idle=182.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:40.827 [debug] QUERY OK source="settings" db=0.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 [] 14:29:40.828 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oCcks-fwq2c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/79/81/79817a696c2a37ef012064828e0036860659a75b4426f59b7c8430ebef18ad9c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:52.611 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:53.505 [info] CONNECTED TO Phoenix.LiveView.Socket in 28µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:29:55.006 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-hLJNZSIwP8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b8/74/b8747a234e5043e5261247b4871302b9cdb4d5e33a3bebac469e3942426a0b9b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:55.013 [debug] Running yt-dlp command for action: download_thumbnail 14:29:55.014 [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 [] 14:29:55.014 [debug] QUERY OK source="settings" db=0.0ms idle=426.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:55.015 [debug] QUERY OK source="settings" db=0.2ms idle=371.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:55.015 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-hLJNZSIwP8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/141/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e5/70/e570285e87c8cd2c4d08d537a3aa70f464c9c733fb80b2859b3418e08f4d9171.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:55.373 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oCcks-fwq2c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/79/81/79817a696c2a37ef012064828e0036860659a75b4426f59b7c8430ebef18ad9c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:55.399 [debug] Running yt-dlp command for action: download_thumbnail 14:29:55.400 [debug] QUERY OK source="settings" db=0.1ms idle=756.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:55.401 [debug] QUERY OK source="settings" db=0.1ms idle=756.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:55.401 [debug] QUERY OK source="settings" db=0.2ms idle=386.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:55.401 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oCcks-fwq2c --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/142/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/62/1a/621aae5f3d756fd9656d3c51b77c280c87fabe023ed7c9c9c7d1015481a7e889.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:57.399 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=-hLJNZSIwP8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/141/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e5/70/e570285e87c8cd2c4d08d537a3aa70f464c9c733fb80b2859b3418e08f4d9171.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:57.400 [debug] QUERY OK db=0.1ms idle=807.4ms begin [] 14:29:57.400 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:29:55Z], "/downloads/Tiny Desk/2017-12-04 Phoebe Bridgers: NPR Music Tiny Desk Concert/Phoebe Bridgers: NPR Music Tiny Desk Concert [-hLJNZSIwP8].mp4", ~U[2026-07-24 12:29:57Z], 141] 14:29:57.401 [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/141/metadata.json.gz", "/config/metadata/media_items/141/thumbnail.jpg", 141, ~U[2026-07-24 12:29:57Z], ~U[2026-07-24 12:29:57Z]] 14:29:57.403 [debug] QUERY OK db=1.1ms commit [] 14:29:57.405 [debug] QUERY OK source="media_items" db=1.7ms idle=759.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [184184627, ~U[2026-07-24 12:29:57Z], 141] 14:29:57.406 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:57.408 [info] {"args":{"id":141},"id":89,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":30733608,"event":"job:stop","queue_time":969671852,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:57.414 [info] {"args":{"id":143},"id":91,"meta":{},"system_time":1784896197414684106,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:57.415 [debug] QUERY OK source="media_items" db=0.2ms idle=771.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [143] 14:29:57.415 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:57.416 [debug] QUERY OK source="sources" db=0.5ms queue=0.2ms 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" = ?) [2] 14:29:57.417 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.3ms idle=11.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" = ?) [2] 14:29:57.417 [debug] QUERY OK source="media_items" db=0.4ms 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 [143] 14:29:57.419 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.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" = ?) [143] 14:29:57.419 [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" = ?) [2] 14:29:57.420 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.420 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.421 [debug] Running yt-dlp command for action: get_downloadable_status 14:29:57.422 [debug] QUERY OK source="settings" db=0.3ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.423 [debug] QUERY OK source="settings" db=0.5ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.423 [debug] QUERY OK source="settings" db=0.4ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.423 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4iQmPv_dTI0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8f/32/8f322e87077b47990c0920c1dbe592d36ef5dbb18dccedd8b65e0a43bb692b32.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:57.866 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oCcks-fwq2c --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/142/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/62/1a/621aae5f3d756fd9656d3c51b77c280c87fabe023ed7c9c9c7d1015481a7e889.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:57.867 [debug] QUERY OK db=0.1ms idle=446.8ms begin [] 14:29:57.869 [debug] QUERY OK source="media_items" db=2.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:29:55Z], "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].mp4", [["en", "/downloads/Tiny Desk/2023-08-15 Post Malone: Tiny Desk Concert/Post Malone: Tiny Desk Concert [oCcks-fwq2c].en.srt"]], ~U[2026-07-24 12:29:57Z], 142] 14:29:57.870 [debug] QUERY OK source="media_metadata" db=0.7ms 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/142/metadata.json.gz", "/config/metadata/media_items/142/thumbnail.jpg", 142, ~U[2026-07-24 12:29:57Z], ~U[2026-07-24 12:29:57Z]] 14:29:57.871 [debug] QUERY OK db=0.4ms commit [] 14:29:57.873 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=448.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [297182743, ~U[2026-07-24 12:29:57Z], 142] 14:29:57.873 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:57.873 [info] {"args":{"id":142},"id":90,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20772953,"event":"job:stop","queue_time":978099765,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:57.880 [info] {"args":{"id":144},"id":92,"meta":{},"system_time":1784896197880483887,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:29:57.881 [debug] QUERY OK source="media_items" db=0.4ms idle=284.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [144] 14:29:57.881 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:29:57.882 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms 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" = ?) [2] 14:29:57.882 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.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" = ?) [2] 14:29:57.883 [debug] QUERY OK source="media_items" db=0.5ms 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 [144] 14:29:57.885 [debug] QUERY OK source="media_metadata" db=0.1ms idle=4.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" = ?) [144] 14:29:57.885 [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" = ?) [2] 14:29:57.885 [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 [] 14:29:57.886 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.886 [debug] Running yt-dlp command for action: get_downloadable_status 14:29:57.887 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.888 [debug] QUERY OK source="settings" db=0.4ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:57.888 [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 [] 14:29:57.888 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BPRVzA67Dbs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/45/e7/45e760e6bce9147b7d7b27ebf10337f807e02c40c48b8082f9a2a7e38ebb8ba6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:29:59.921 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4iQmPv_dTI0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8f/32/8f322e87077b47990c0920c1dbe592d36ef5dbb18dccedd8b65e0a43bb692b32.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:29:59.922 [debug] Running yt-dlp command for action: download 14:29:59.923 [debug] QUERY OK source="settings" db=0.7ms queue=0.3ms idle=321.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:59.924 [debug] QUERY OK source="settings" db=0.3ms idle=280.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:59.924 [debug] QUERY OK source="settings" db=0.2ms idle=280.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:29:59.925 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4iQmPv_dTI0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/23/b9/23b95a11f449e69f869c5ae504ff09e823b2e5c69af2098fbae42d29b3acc93a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:00.307 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BPRVzA67Dbs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/45/e7/45e760e6bce9147b7d7b27ebf10337f807e02c40c48b8082f9a2a7e38ebb8ba6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:00.308 [debug] Running yt-dlp command for action: download 14:30:00.309 [debug] QUERY OK source="settings" db=0.9ms idle=664.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:00.310 [debug] QUERY OK source="settings" db=1.1ms idle=665.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:00.312 [debug] QUERY OK source="settings" db=1.2ms idle=387.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:00.312 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BPRVzA67Dbs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e0/ef/e0ef2173544757701cc3cb9ee4eea95567986f7c4d4a73b5fcb56ccc7805f559.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:00.544 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:30:14.427 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4iQmPv_dTI0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/23/b9/23b95a11f449e69f869c5ae504ff09e823b2e5c69af2098fbae42d29b3acc93a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:14.449 [debug] Running yt-dlp command for action: download_thumbnail 14:30:14.449 [debug] QUERY OK source="settings" db=0.1ms idle=824.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:14.450 [debug] QUERY OK source="settings" db=0.1ms idle=806.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:14.450 [debug] QUERY OK source="settings" db=0.3ms idle=806.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:14.450 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4iQmPv_dTI0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/143/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8d/f9/8df939d7065f75cfa7e929e812234e8b7a8c8c8d71907cff2d45c81fc6260ae4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:16.877 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BPRVzA67Dbs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e0/ef/e0ef2173544757701cc3cb9ee4eea95567986f7c4d4a73b5fcb56ccc7805f559.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:16.896 [debug] Running yt-dlp command for action: download_thumbnail 14:30:16.897 [debug] QUERY OK source="settings" db=0.1ms idle=1253.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:16.897 [debug] QUERY OK source="settings" db=0.1ms idle=1253.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:16.898 [debug] QUERY OK source="settings" db=0.1ms idle=1253.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:16.898 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BPRVzA67Dbs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/144/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a0/3e/a03e629e9bb255c39af37470283eca31573af3c53b466d5c6cd69c49cd5f28e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:17.372 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4iQmPv_dTI0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/143/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8d/f9/8df939d7065f75cfa7e929e812234e8b7a8c8c8d71907cff2d45c81fc6260ae4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:17.374 [debug] QUERY OK db=0.8ms idle=1729.1ms begin [] 14:30:17.376 [debug] QUERY OK source="media_items" db=2.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:30:14Z], "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].mp4", [["en", "/downloads/Tiny Desk/2023-04-10 Fred again..: Tiny Desk Concert/Fred again..: Tiny Desk Concert [4iQmPv_dTI0].en.srt"]], ~U[2026-07-24 12:30:17Z], 143] 14:30:17.379 [debug] QUERY OK source="media_metadata" db=2.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/143/metadata.json.gz", "/config/metadata/media_items/143/thumbnail.jpg", 143, ~U[2026-07-24 12:30:17Z], ~U[2026-07-24 12:30:17Z]] 14:30:17.379 [debug] QUERY OK db=0.8ms commit [] 14:30:17.391 [debug] QUERY OK source="media_items" db=10.3ms idle=749.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [275778895, ~U[2026-07-24 12:30:17Z], 143] 14:30:17.392 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:17.392 [info] {"args":{"id":143},"id":91,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":19977365,"event":"job:stop","queue_time":996413762,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:17.401 [info] {"args":{"id":145},"id":93,"meta":{},"system_time":1784896217400973048,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:17.402 [debug] QUERY OK source="media_items" db=0.4ms idle=503.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [145] 14:30:17.403 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:17.404 [debug] QUERY OK source="sources" db=0.9ms queue=0.1ms idle=23.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:30:17.407 [debug] QUERY OK source="media_profiles" db=1.8ms queue=0.1ms idle=14.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" = ?) [2] 14:30:17.408 [debug] QUERY OK source="media_items" db=0.2ms 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 [145] 14:30:17.411 [debug] QUERY OK source="media_metadata" db=0.1ms idle=10.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" = ?) [145] 14:30:17.411 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.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" = ?) [2] 14:30:17.413 [debug] QUERY OK source="settings" db=1.5ms queue=0.2ms 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:30:17.413 [debug] QUERY OK source="settings" db=0.1ms idle=6.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:17.414 [debug] Running yt-dlp command for action: get_downloadable_status 14:30:17.415 [debug] QUERY OK source="settings" db=0.2ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:17.415 [debug] QUERY OK source="settings" db=0.4ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:17.416 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:17.416 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/3c/523c2c0ef2f29e429034e915384f099bb415e8b2f9131ee15f03e30a42203835.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:19.224 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=BPRVzA67Dbs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/144/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a0/3e/a03e629e9bb255c39af37470283eca31573af3c53b466d5c6cd69c49cd5f28e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:19.225 [debug] QUERY OK db=0.1ms idle=590.1ms begin [] 14:30:19.226 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:30:16Z], "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].mp4", [["en", "/downloads/Tiny Desk/2023-02-13 Kenny Beats: Tiny Desk Concert/Kenny Beats: Tiny Desk Concert [BPRVzA67Dbs].en.srt"]], ~U[2026-07-24 12:30:19Z], 144] 14:30:19.227 [debug] QUERY OK source="media_metadata" db=0.7ms 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/144/metadata.json.gz", "/config/metadata/media_items/144/thumbnail.jpg", 144, ~U[2026-07-24 12:30:19Z], ~U[2026-07-24 12:30:19Z]] 14:30:19.227 [debug] QUERY OK db=0.1ms commit [] 14:30:19.228 [debug] QUERY OK source="media_items" db=1.1ms idle=583.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [180429193, ~U[2026-07-24 12:30:19Z], 144] 14:30:19.229 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:19.229 [info] {"args":{"id":144},"id":92,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21348556,"event":"job:stop","queue_time":994879750,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:19.235 [info] {"args":{"id":146},"id":94,"meta":{},"system_time":1784896219235613298,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:19.236 [debug] QUERY OK source="media_items" db=0.2ms idle=591.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [146] 14:30:19.236 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:19.236 [debug] QUERY OK source="sources" db=0.2ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:30:19.237 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:30:19.237 [debug] QUERY OK source="media_items" db=0.3ms idle=8.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [146] 14:30:19.238 [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" = ?) [146] 14:30:19.239 [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" = ?) [2] 14:30:19.239 [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 [] 14:30:19.239 [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 [] 14:30:19.240 [debug] Running yt-dlp command for action: get_downloadable_status 14:30:19.240 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:19.240 [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 [] 14:30:19.241 [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 [] 14:30:19.241 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=glHqWvkpRqo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ad/a2/ada2a3d80cc822027df8afa0c6385d93c7e8c2efb6ec78f6920f9508c9914d3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:19.607 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/3c/523c2c0ef2f29e429034e915384f099bb415e8b2f9131ee15f03e30a42203835.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:19.608 [debug] Running yt-dlp command for action: download 14:30:19.609 [debug] QUERY OK source="settings" db=0.6ms idle=369.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:19.609 [debug] QUERY OK source="settings" db=0.4ms idle=369.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:19.610 [debug] QUERY OK source="settings" db=0.3ms idle=369.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:19.610 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/34/24/3424af58f853f9107977f49aa1b12385fc1a3e66cf62f603e598f94eed49ab61.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:21.614 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=glHqWvkpRqo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ad/a2/ada2a3d80cc822027df8afa0c6385d93c7e8c2efb6ec78f6920f9508c9914d3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:21.614 [debug] Running yt-dlp command for action: download 14:30:21.615 [debug] QUERY OK source="settings" db=0.2ms idle=978.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:21.615 [debug] QUERY OK source="settings" db=0.4ms idle=971.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:21.616 [debug] QUERY OK source="settings" db=0.2ms idle=971.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:21.616 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=glHqWvkpRqo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1d/4d/1d4da5ef1fd89838dea7e9651984f36fb8a6eccd5fe887bc6d0bffb2024778f6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:22.542 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/34/24/3424af58f853f9107977f49aa1b12385fc1a3e66cf62f603e598f94eed49ab61.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 14:30:22.542 [error] yt-dlp download error for media item #145: "ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 14:30:22.548 [debug] QUERY OK source="media_items" db=5.6ms idle=1898.7ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n", ~U[2026-07-24 12:30:22Z], 145] 14:30:22.550 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":145},"id":93,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5147529,"event":"job:exception","queue_time":1011398795,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:22.556 [info] {"args":{"id":147},"id":95,"meta":{},"system_time":1784896222556434500,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:22.557 [debug] QUERY OK source="media_items" db=0.2ms idle=940.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [147] 14:30:22.557 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:22.558 [debug] QUERY OK source="sources" db=0.2ms idle=917.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:30:22.558 [debug] QUERY OK source="media_profiles" db=0.3ms idle=9.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:30:22.559 [debug] QUERY OK source="media_items" db=0.7ms 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 [147] 14:30:22.560 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [147] 14:30:22.561 [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" = ?) [2] 14:30:22.561 [debug] QUERY OK source="settings" db=0.4ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:22.562 [debug] QUERY OK source="settings" db=0.3ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:22.562 [debug] Running yt-dlp command for action: get_downloadable_status 14:30:22.563 [debug] QUERY OK source="settings" db=0.2ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:22.564 [debug] QUERY OK source="settings" db=0.2ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:22.564 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:22.564 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=j82L3pLjb_0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/06/d0/06d025ea7d7ee22d667bbfba79aa7a9ddcb9d1b647d63c4623641cf37b6e40a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:22.612 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:24.830 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=j82L3pLjb_0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/06/d0/06d025ea7d7ee22d667bbfba79aa7a9ddcb9d1b647d63c4623641cf37b6e40a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:24.830 [debug] Running yt-dlp command for action: download 14:30:24.830 [debug] QUERY OK source="settings" db=0.1ms idle=1186.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:24.831 [debug] QUERY OK source="settings" db=0.1ms idle=1186.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:24.831 [debug] QUERY OK source="settings" db=0.1ms idle=1187.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:24.831 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=j82L3pLjb_0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/92/74/927462e5c469562dbc96c0ff3473b72864293ccc37ccf2232ea6d5cb3a775a19.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:37.528 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=glHqWvkpRqo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1d/4d/1d4da5ef1fd89838dea7e9651984f36fb8a6eccd5fe887bc6d0bffb2024778f6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:37.536 [debug] Running yt-dlp command for action: download_thumbnail 14:30:37.537 [debug] QUERY OK source="settings" db=0.2ms idle=893.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:37.537 [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 [] 14:30:37.537 [debug] QUERY OK source="settings" db=0.0ms 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 [] 14:30:37.538 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=glHqWvkpRqo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/146/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ba/df/badfa6b443221d5bdc3cfe71afecd94083bd9a69b96831916b4e62175389ff69.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:39.955 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=glHqWvkpRqo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/146/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ba/df/badfa6b443221d5bdc3cfe71afecd94083bd9a69b96831916b4e62175389ff69.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:39.956 [debug] QUERY OK db=0.1ms idle=1312.3ms begin [] 14:30:39.958 [debug] QUERY OK source="media_items" db=1.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:30:37Z], "/downloads/Tiny Desk/2022-06-29 Denzel Curry: Tiny Desk Concert/Denzel Curry: Tiny Desk Concert [glHqWvkpRqo].mp4", ~U[2026-07-24 12:30:39Z], 146] 14:30:39.959 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/146/metadata.json.gz", "/config/metadata/media_items/146/thumbnail.jpg", 146, ~U[2026-07-24 12:30:39Z], ~U[2026-07-24 12:30:39Z]] 14:30:39.959 [debug] QUERY OK db=0.6ms commit [] 14:30:39.963 [debug] QUERY OK source="media_items" db=3.5ms idle=1316.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [380513038, ~U[2026-07-24 12:30:39Z], 146] 14:30:39.964 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:39.965 [info] {"args":{"id":146},"id":94,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20728732,"event":"job:stop","queue_time":1011234845,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:39.971 [info] {"args":{"id":148},"id":96,"meta":{},"system_time":1784896239971652348,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:39.972 [debug] QUERY OK source="media_items" db=0.4ms idle=300.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" = ?) [148] 14:30:39.972 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:39.973 [debug] QUERY OK source="sources" db=1.0ms idle=12.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:30:39.974 [debug] QUERY OK source="media_profiles" db=0.8ms idle=10.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:30:39.975 [debug] QUERY OK source="media_items" db=0.5ms 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 [148] 14:30:39.978 [debug] QUERY OK source="media_metadata" db=0.4ms idle=6.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [148] 14:30:39.980 [debug] QUERY OK source="media_profiles" db=1.3ms idle=6.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:30:39.981 [debug] QUERY OK source="settings" db=0.1ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:39.981 [debug] QUERY OK source="settings" db=0.3ms idle=6.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:39.982 [debug] Running yt-dlp command for action: get_downloadable_status 14:30:39.983 [debug] QUERY OK source="settings" db=0.1ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:39.983 [debug] QUERY OK source="settings" db=0.2ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:39.984 [debug] QUERY OK source="settings" db=0.3ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:39.985 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GYJ03MIPoIk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/62/cc/62cc6a60dc26c5fdac6f885df25a73922e13e5d4339e90edd6cc85f46f763808.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:42.244 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GYJ03MIPoIk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/62/cc/62cc6a60dc26c5fdac6f885df25a73922e13e5d4339e90edd6cc85f46f763808.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:42.245 [debug] Running yt-dlp command for action: download 14:30:42.245 [debug] QUERY OK source="settings" db=0.4ms idle=601.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:42.246 [debug] QUERY OK source="settings" db=0.6ms idle=601.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:42.246 [debug] QUERY OK source="settings" db=0.4ms idle=602.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:42.247 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GYJ03MIPoIk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d8/3d/d83d0c7496e108e41ab7631c874a4df6c14d86756aba1d03d216e873d9b3fc56.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:44.175 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=j82L3pLjb_0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/92/74/927462e5c469562dbc96c0ff3473b72864293ccc37ccf2232ea6d5cb3a775a19.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: WARNING: Some SponsorBlock segments are from a video of different duration, maybe from an old version of this video 14:30:44.198 [debug] Running yt-dlp command for action: download_thumbnail 14:30:44.199 [debug] QUERY OK source="settings" db=0.1ms idle=555.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:44.199 [debug] QUERY OK source="settings" db=0.1ms idle=555.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:44.199 [debug] QUERY OK source="settings" db=0.0ms idle=555.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:44.199 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=j82L3pLjb_0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/147/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fa/e4/fae47af44f825db47803d9a33d7a1e804ecc514c6b7dd0890ccab939f05010b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:46.776 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=j82L3pLjb_0 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/147/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fa/e4/fae47af44f825db47803d9a33d7a1e804ecc514c6b7dd0890ccab939f05010b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:46.776 [debug] QUERY OK db=0.0ms idle=1132.6ms begin [] 14:30:46.777 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:30:44Z], "/downloads/Tiny Desk/2020-03-16 Coldplay: NPR Music Tiny Desk Concert/Coldplay: NPR Music Tiny Desk Concert [j82L3pLjb_0].mp4", [["en", "/downloads/Tiny Desk/2020-03-16 Coldplay: NPR Music Tiny Desk Concert/Coldplay: NPR Music Tiny Desk Concert [j82L3pLjb_0].en.srt"]], ~U[2026-07-24 12:30:46Z], 147] 14:30:46.784 [debug] QUERY OK source="media_metadata" db=6.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/147/metadata.json.gz", "/config/metadata/media_items/147/thumbnail.jpg", 147, ~U[2026-07-24 12:30:46Z], ~U[2026-07-24 12:30:46Z]] 14:30:46.785 [debug] QUERY OK db=0.8ms commit [] 14:30:46.787 [debug] QUERY OK source="media_items" db=1.4ms idle=1141.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [369049452, ~U[2026-07-24 12:30:46Z], 147] 14:30:46.787 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:46.787 [info] {"args":{"id":147},"id":95,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24230889,"event":"job:stop","queue_time":1012555754,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:46.794 [info] {"args":{"id":149},"id":97,"meta":{},"system_time":1784896246794450444,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:30:46.795 [debug] QUERY OK source="media_items" db=0.4ms idle=106.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" = ?) [149] 14:30:46.795 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:30:46.796 [debug] QUERY OK source="sources" db=0.8ms idle=10.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:30:46.797 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:30:46.797 [debug] QUERY OK source="media_items" db=0.3ms 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 [149] 14:30:46.798 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.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" = ?) [149] 14:30:46.799 [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" = ?) [2] 14:30:46.799 [debug] QUERY OK source="settings" db=0.3ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:46.800 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:46.800 [debug] Running yt-dlp command for action: get_downloadable_status 14:30:46.801 [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:30:46.801 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:46.802 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:46.802 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NGsgb8m0Yns --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/ac/00acd725b41d3f638b1266416a580f7026098dccb1eea52def67d0c84d63644a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:48.990 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NGsgb8m0Yns --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/00/ac/00acd725b41d3f638b1266416a580f7026098dccb1eea52def67d0c84d63644a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:48.990 [debug] Running yt-dlp command for action: download 14:30:48.991 [debug] QUERY OK source="settings" db=0.2ms idle=346.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:48.991 [debug] QUERY OK source="settings" db=0.3ms idle=347.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:48.991 [debug] QUERY OK source="settings" db=0.1ms idle=347.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:48.992 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NGsgb8m0Yns --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/05/fe/05fe32e9c3852a6a8b016336f26d2069f34e0fa6f6e2669e203d497a2adc52ae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:30:52.613 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:53.610 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:30:58.542 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NGsgb8m0Yns --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/05/fe/05fe32e9c3852a6a8b016336f26d2069f34e0fa6f6e2669e203d497a2adc52ae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:30:58.546 [debug] Running yt-dlp command for action: download_thumbnail 14:30:58.546 [debug] QUERY OK source="settings" db=0.1ms idle=1902.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:58.547 [debug] QUERY OK source="settings" db=0.1ms idle=1903.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:58.547 [debug] QUERY OK source="settings" db=0.1ms idle=1843.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:30:58.547 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NGsgb8m0Yns --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/149/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/25/99/2599c54f7141044dc98cb761f204ca87d9ed380dd3d13a8b1fe755dfed4d2694.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:00.546 [info] {"source":"oban","duration":246,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:31:00.891 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=NGsgb8m0Yns --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/149/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/25/99/2599c54f7141044dc98cb761f204ca87d9ed380dd3d13a8b1fe755dfed4d2694.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:00.892 [debug] QUERY OK db=0.1ms idle=1247.2ms begin [] 14:31:00.894 [debug] QUERY OK source="media_items" db=1.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:30:58Z], "/downloads/Tiny Desk/2019-12-02 Carly Rae Jepsen: NPR Music Tiny Desk Concert/Carly Rae Jepsen: NPR Music Tiny Desk Concert [NGsgb8m0Yns].mp4", ~U[2026-07-24 12:31:00Z], 149] 14:31:00.895 [debug] QUERY OK source="media_metadata" db=0.7ms 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/149/metadata.json.gz", "/config/metadata/media_items/149/thumbnail.jpg", 149, ~U[2026-07-24 12:31:00Z], ~U[2026-07-24 12:31:00Z]] 14:31:00.895 [debug] QUERY OK db=0.6ms commit [] 14:31:00.897 [debug] QUERY OK source="media_items" db=1.2ms idle=1251.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [180212481, ~U[2026-07-24 12:31:00Z], 149] 14:31:00.897 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:00.898 [info] {"args":{"id":149},"id":97,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":14103263,"event":"job:stop","queue_time":1031793800,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:00.904 [info] {"args":{"id":150},"id":98,"meta":{},"system_time":1784896260904564859,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:00.905 [debug] QUERY OK source="media_items" db=0.4ms idle=193.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [150] 14:31:00.905 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:00.906 [debug] QUERY OK source="sources" db=0.6ms idle=10.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:31:00.907 [debug] QUERY OK source="media_profiles" db=0.7ms idle=9.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" = ?) [2] 14:31:00.908 [debug] QUERY OK source="media_items" db=0.8ms 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 [150] 14:31:00.911 [debug] QUERY OK source="media_metadata" db=0.2ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [150] 14:31:00.912 [debug] QUERY OK source="media_profiles" db=1.2ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:31:00.913 [debug] QUERY OK source="settings" db=0.4ms idle=6.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:00.914 [debug] QUERY OK source="settings" db=0.8ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:00.915 [debug] Running yt-dlp command for action: get_downloadable_status 14:31:00.916 [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 [] 14:31:00.917 [debug] QUERY OK source="settings" db=0.5ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:00.917 [debug] QUERY OK source="settings" db=0.4ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:00.918 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FvVnP8G6ITs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/43/22/4322c23efeebee8dde4b26ceb9613d8e7f483b8a37c1bae8f03e3dcca91fffa8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:01.483 [info] GET /media/c597e591-e045-41bf-b467-4da4a3975d6d/stream 14:31:01.483 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "c597e591-e045-41bf-b467-4da4a3975d6d", "v" => "1784894538"} Pipelines: [:maybe_basic_auth] 14:31:01.483 [debug] QUERY OK source="media_items" db=0.1ms idle=570.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" = ?) ["c597e591-e045-41bf-b467-4da4a3975d6d"] 14:31:01.483 [debug] Invalid range request for media item: c597e591-e045-41bf-b467-4da4a3975d6d - serving full file 14:31:01.484 [info] Sent 200 in 813µs 14:31:01.641 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GYJ03MIPoIk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d8/3d/d83d0c7496e108e41ab7631c874a4df6c14d86756aba1d03d216e873d9b3fc56.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:01.650 [debug] Running yt-dlp command for action: download_thumbnail 14:31:01.652 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=737.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:01.653 [debug] QUERY OK source="settings" db=0.7ms idle=735.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:01.653 [debug] QUERY OK source="settings" db=0.7ms idle=735.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:01.654 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GYJ03MIPoIk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/148/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/57/f7/57f76ff00e131ff47263b271bbf020beb86b021790fc0870308af469a0c2a109.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:03.433 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FvVnP8G6ITs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/43/22/4322c23efeebee8dde4b26ceb9613d8e7f483b8a37c1bae8f03e3dcca91fffa8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:03.434 [debug] Running yt-dlp command for action: download 14:31:03.434 [debug] QUERY OK source="settings" db=0.5ms idle=1781.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:03.435 [debug] QUERY OK source="settings" db=0.2ms idle=1780.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:03.435 [debug] QUERY OK source="settings" db=0.0ms idle=790.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:03.435 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FvVnP8G6ITs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4e/cc/4ecc40802fe9ac2692f21fdb6164b64af8e2301492f071f1ad125eb155f441ff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:04.202 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=GYJ03MIPoIk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/148/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/57/f7/57f76ff00e131ff47263b271bbf020beb86b021790fc0870308af469a0c2a109.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:04.203 [debug] QUERY OK db=0.3ms idle=1378.6ms begin [] 14:31:04.206 [debug] QUERY OK source="media_items" db=2.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:31:01Z], "/downloads/Tiny Desk/2019-12-09 Megan Thee Stallion: NPR Music Tiny Desk Concert/Megan Thee Stallion: NPR Music Tiny Desk Concert [GYJ03MIPoIk].mp4", ~U[2026-07-24 12:31:04Z], 148] 14:31:04.207 [debug] QUERY OK source="media_metadata" db=0.7ms 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/148/metadata.json.gz", "/config/metadata/media_items/148/thumbnail.jpg", 148, ~U[2026-07-24 12:31:04Z], ~U[2026-07-24 12:31:04Z]] 14:31:04.207 [debug] QUERY OK db=0.3ms commit [] 14:31:04.209 [debug] QUERY OK source="media_items" db=1.6ms idle=773.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [577987769, ~U[2026-07-24 12:31:04Z], 148] 14:31:04.209 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:04.211 [info] {"args":{"id":148},"id":96,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24238157,"event":"job:stop","queue_time":1027970822,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:04.217 [info] {"args":{"id":151},"id":99,"meta":{},"system_time":1784896264217526311,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:04.218 [debug] QUERY OK source="media_items" db=0.3ms idle=392.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" = ?) [151] 14:31:04.218 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:04.218 [debug] QUERY OK source="sources" db=0.2ms idle=10.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:31:04.219 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:31:04.219 [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 [151] 14:31:04.221 [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" = ?) [151] 14:31:04.221 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:31:04.222 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:04.222 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:04.222 [debug] Running yt-dlp command for action: get_downloadable_status 14:31:04.224 [debug] QUERY OK source="settings" db=0.9ms 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:31:04.224 [debug] QUERY OK source="settings" db=0.2ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:04.225 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:04.225 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bdneye4pzMw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/ab/f2ab2d5cabb2aa11dd20d59cc9cf46469e5623efb373a462f94c5ffaffa4d27c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:06.281 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bdneye4pzMw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f2/ab/f2ab2d5cabb2aa11dd20d59cc9cf46469e5623efb373a462f94c5ffaffa4d27c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:06.281 [debug] Running yt-dlp command for action: download 14:31:06.282 [debug] QUERY OK source="settings" db=0.2ms idle=637.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:06.282 [debug] QUERY OK source="settings" db=0.2ms idle=637.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:06.283 [debug] QUERY OK source="settings" db=0.1ms idle=637.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:06.283 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bdneye4pzMw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e8/23/e82332cf9b3334578887923286bc2b5f5d02ac173264ded5afd7aae9db8c040d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:20.375 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bdneye4pzMw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e8/23/e82332cf9b3334578887923286bc2b5f5d02ac173264ded5afd7aae9db8c040d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:20.380 [debug] Running yt-dlp command for action: download_thumbnail 14:31:20.382 [debug] QUERY OK source="settings" db=0.2ms idle=737.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:20.382 [debug] QUERY OK source="settings" db=0.1ms idle=737.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:20.383 [debug] QUERY OK source="settings" db=0.5ms idle=737.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:20.383 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bdneye4pzMw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/151/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/06/bc/06bc478013b0976a78598573d490a82a253cfef49d6c2244e74b6e5ee0693ca7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:22.616 [info] {"source":"oban","duration":2037,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:22.894 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bdneye4pzMw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/151/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/06/bc/06bc478013b0976a78598573d490a82a253cfef49d6c2244e74b6e5ee0693ca7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:22.896 [debug] QUERY OK db=0.6ms idle=1250.7ms begin [] 14:31:22.898 [debug] QUERY OK source="media_items" db=1.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:31:20Z], "/downloads/Tiny Desk/2019-07-17 Sting And Shaggy: NPR Music Tiny Desk Concert/Sting And Shaggy: NPR Music Tiny Desk Concert [bdneye4pzMw].mp4", ~U[2026-07-24 12:31:22Z], 151] 14:31:22.900 [debug] QUERY OK source="media_metadata" db=1.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/151/metadata.json.gz", "/config/metadata/media_items/151/thumbnail.jpg", 151, ~U[2026-07-24 12:31:22Z], ~U[2026-07-24 12:31:22Z]] 14:31:22.900 [debug] QUERY OK db=0.6ms commit [] 14:31:22.904 [debug] QUERY OK source="media_items" db=2.4ms idle=1256.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [269614481, ~U[2026-07-24 12:31:22Z], 151] 14:31:22.905 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:22.906 [info] {"args":{"id":151},"id":99,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":18687518,"event":"job:stop","queue_time":1045216797,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:22.914 [info] {"args":{"id":152},"id":100,"meta":{},"system_time":1784896282914332405,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:22.918 [debug] QUERY OK source="media_items" db=4.0ms idle=51.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" = ?) [152] 14:31:22.919 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:22.920 [debug] QUERY OK source="sources" db=0.8ms idle=18.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:31:22.922 [debug] QUERY OK source="media_profiles" db=1.1ms idle=16.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:31:22.922 [debug] QUERY OK source="media_items" db=0.5ms idle=15.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [152] 14:31:22.924 [debug] QUERY OK source="media_metadata" db=0.2ms idle=9.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [152] 14:31:22.924 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 14:31:22.924 [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 [] 14:31:22.925 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:22.926 [debug] Running yt-dlp command for action: get_downloadable_status 14:31:22.928 [debug] QUERY OK source="settings" db=0.8ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:22.928 [debug] QUERY OK source="settings" db=0.5ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:22.929 [debug] QUERY OK source="settings" db=0.4ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:22.929 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8UKQJZsv4o --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/4c/b04cf70a50a3a8763458ed9c7302b2fbfe7435c57ee652718d5b4261f592c629.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:25.269 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8UKQJZsv4o --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/4c/b04cf70a50a3a8763458ed9c7302b2fbfe7435c57ee652718d5b4261f592c629.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:25.270 [debug] Running yt-dlp command for action: download 14:31:25.270 [debug] QUERY OK source="settings" db=0.1ms idle=625.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:25.270 [debug] QUERY OK source="settings" db=0.1ms idle=625.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:25.271 [debug] QUERY OK source="settings" db=0.1ms idle=625.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:25.271 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8UKQJZsv4o --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/5e/b6/5eb6a4aa9af61617f8ba01ede2b5901ab07563b85058079eda6912748b19c259.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:36.626 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FvVnP8G6ITs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4e/cc/4ecc40802fe9ac2692f21fdb6164b64af8e2301492f071f1ad125eb155f441ff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:36.632 [debug] Running yt-dlp command for action: download_thumbnail 14:31:36.633 [debug] QUERY OK source="settings" db=0.5ms idle=1987.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:36.634 [debug] QUERY OK source="settings" db=0.3ms idle=1988.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:36.634 [debug] QUERY OK source="settings" db=0.4ms idle=1989.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:36.634 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FvVnP8G6ITs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/150/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/58/0958a86dcc0a9fe0128e049f7d1691fa479f91981d8a96faddc50d474db13a3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:38.958 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FvVnP8G6ITs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/150/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/58/0958a86dcc0a9fe0128e049f7d1691fa479f91981d8a96faddc50d474db13a3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:38.958 [debug] QUERY OK db=0.1ms idle=1313.8ms begin [] 14:31:38.960 [debug] QUERY OK source="media_items" db=1.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:31:36Z], "/downloads/Tiny Desk/2019-10-28 Taylor Swift: NPR Music Tiny Desk Concert/Taylor Swift: NPR Music Tiny Desk Concert [FvVnP8G6ITs].mp4", ~U[2026-07-24 12:31:38Z], 150] 14:31:38.960 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/150/metadata.json.gz", "/config/metadata/media_items/150/thumbnail.jpg", 150, ~U[2026-07-24 12:31:38Z], ~U[2026-07-24 12:31:38Z]] 14:31:38.961 [debug] QUERY OK db=0.2ms commit [] 14:31:38.963 [debug] QUERY OK source="media_items" db=1.4ms idle=1316.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [496225791, ~U[2026-07-24 12:31:38Z], 150] 14:31:38.963 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:38.963 [info] {"args":{"id":150},"id":98,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":38058626,"event":"job:stop","queue_time":1043903791,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:38.969 [info] {"args":{"id":153},"id":101,"meta":{},"system_time":1784896298969545803,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:38.970 [debug] QUERY OK source="media_items" db=0.2ms idle=74.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" = ?) [153] 14:31:38.970 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:38.970 [debug] QUERY OK source="sources" db=0.1ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:31:38.970 [debug] QUERY OK source="media_profiles" db=0.2ms 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" = ?) [2] 14:31:38.971 [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 [153] 14:31:38.971 [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" = ?) [153] 14:31:38.972 [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" = ?) [2] 14:31:38.972 [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 [] 14:31:38.972 [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 [] 14:31:38.972 [debug] Running yt-dlp command for action: get_downloadable_status 14:31:38.973 [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 [] 14:31:38.974 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:38.974 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:38.974 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EkPrXL-H5Qc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/65/f1/65f18b826fa5156c812cf50429abfad95b553a8699114fefb22f126ea1e2e227.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:41.094 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EkPrXL-H5Qc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/65/f1/65f18b826fa5156c812cf50429abfad95b553a8699114fefb22f126ea1e2e227.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:41.094 [debug] Running yt-dlp command for action: download 14:31:41.095 [debug] QUERY OK source="settings" db=0.3ms idle=449.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:41.095 [debug] QUERY OK source="settings" db=0.1ms idle=450.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:41.095 [debug] QUERY OK source="settings" db=0.1ms idle=450.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:41.095 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EkPrXL-H5Qc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b1/b1/b1b1176884606e63d39f01801bce49ef9c9a9fe18c70a5b5333c9e22751caea8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:42.572 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8UKQJZsv4o --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/5e/b6/5eb6a4aa9af61617f8ba01ede2b5901ab07563b85058079eda6912748b19c259.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:42.593 [debug] Running yt-dlp command for action: download_thumbnail 14:31:42.593 [debug] QUERY OK source="settings" db=0.2ms idle=1694.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:42.594 [debug] QUERY OK source="settings" db=0.1ms idle=1498.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:42.594 [debug] QUERY OK source="settings" db=0.2ms idle=1499.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:42.595 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8UKQJZsv4o --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/152/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/3e/dd/3edd4a8306a1ff49e2d924b9f187f38094b280963dc4db0d33108f13a5bedc58.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:45.049 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8UKQJZsv4o --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/152/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/3e/dd/3edd4a8306a1ff49e2d924b9f187f38094b280963dc4db0d33108f13a5bedc58.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:45.050 [debug] QUERY OK db=0.1ms queue=0.1ms idle=1404.9ms begin [] 14:31:45.051 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:31:42Z], "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].mp4", [["en", "/downloads/Tiny Desk/2019-04-09 Weezer: NPR Music Tiny Desk Concert/Weezer: NPR Music Tiny Desk Concert [t8UKQJZsv4o].en.srt"]], ~U[2026-07-24 12:31:45Z], 152] 14:31:45.052 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/152/metadata.json.gz", "/config/metadata/media_items/152/thumbnail.jpg", 152, ~U[2026-07-24 12:31:45Z], ~U[2026-07-24 12:31:45Z]] 14:31:45.052 [debug] QUERY OK db=0.2ms commit [] 14:31:45.054 [debug] QUERY OK source="media_items" db=1.0ms idle=1408.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [282489016, ~U[2026-07-24 12:31:45Z], 152] 14:31:45.054 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:45.055 [info] {"args":{"id":152},"id":100,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":22140642,"event":"job:stop","queue_time":1061911965,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:45.061 [info] {"args":{"id":154},"id":102,"meta":{},"system_time":1784896305061493955,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:31:45.062 [debug] QUERY OK source="media_items" db=0.5ms idle=153.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" = ?) [154] 14:31:45.062 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:31:45.062 [debug] QUERY OK source="sources" db=0.1ms idle=9.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:31:45.063 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:31:45.063 [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 [154] 14:31:45.064 [debug] QUERY OK source="media_metadata" db=0.2ms idle=3.0ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [154] 14:31:45.065 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 14:31:45.065 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:45.066 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:45.066 [debug] Running yt-dlp command for action: get_downloadable_status 14:31:45.067 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:45.067 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:45.067 [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 [] 14:31:45.067 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=A8a2EosJIbM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/82/87/8287afe023a58bd624e2beb908028e119480768991c11a19384e560fe6ad4a93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:47.415 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=A8a2EosJIbM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/82/87/8287afe023a58bd624e2beb908028e119480768991c11a19384e560fe6ad4a93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:47.415 [debug] Running yt-dlp command for action: download 14:31:47.417 [debug] QUERY OK source="settings" db=1.2ms idle=771.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:47.417 [debug] QUERY OK source="settings" db=0.1ms idle=772.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:47.418 [debug] QUERY OK source="settings" db=0.2ms idle=772.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:47.418 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=A8a2EosJIbM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4f/94/4f945b9d1e0683e001d3afff58b4cd14402838af210f8d5dc64c3994881626e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:31:50.571 [info] GET /media_profiles/1/edit 14:31:50.571 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 14:31:50.572 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1926.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:31:50.573 [debug] QUERY OK source="settings" db=0.4ms queue=0.4ms idle=1927.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:50.574 [debug] QUERY OK source="settings" db=0.6ms idle=1928.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:50.575 [debug] QUERY OK source="settings" db=0.6ms idle=1659.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:50.576 [info] Sent 200 in 5ms 14:31:52.618 [info] {"source":"oban","duration":620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:53.698 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:31:55.136 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EkPrXL-H5Qc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b1/b1/b1b1176884606e63d39f01801bce49ef9c9a9fe18c70a5b5333c9e22751caea8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:31:55.141 [debug] Running yt-dlp command for action: download_thumbnail 14:31:55.142 [debug] QUERY OK source="settings" db=0.1ms idle=1497.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:55.142 [debug] QUERY OK source="settings" db=0.1ms idle=1497.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:55.142 [debug] QUERY OK source="settings" db=0.1ms idle=1497.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:31:55.143 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EkPrXL-H5Qc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/153/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/5a/37/5a37bee19346b449c0645acbbc8698be4be26c8bb3b745b9f33a883c9ac6321b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:00.097 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=EkPrXL-H5Qc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/153/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/5a/37/5a37bee19346b449c0645acbbc8698be4be26c8bb3b745b9f33a883c9ac6321b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:00.097 [debug] QUERY OK db=0.1ms idle=1452.5ms begin [] 14:32:00.098 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:31:55Z], "/downloads/Tiny Desk/2018-10-22 Florence + the Machine: NPR Music Tiny Desk Concert/Florence + the Machine: NPR Music Tiny Desk Concert [EkPrXL-H5Qc].mp4", ~U[2026-07-24 12:32:00Z], 153] 14:32:00.099 [debug] QUERY OK source="media_metadata" db=0.7ms 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/153/metadata.json.gz", "/config/metadata/media_items/153/thumbnail.jpg", 153, ~U[2026-07-24 12:32:00Z], ~U[2026-07-24 12:32:00Z]] 14:32:00.111 [debug] QUERY OK db=11.3ms commit [] 14:32:00.115 [debug] QUERY OK source="media_items" db=3.7ms idle=1466.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [234920495, ~U[2026-07-24 12:32:00Z], 153] 14:32:00.115 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:00.115 [info] {"args":{"id":153},"id":101,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21145839,"event":"job:stop","queue_time":1075968851,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:00.122 [info] {"args":{"id":155},"id":103,"meta":{},"system_time":1784896320122518167,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:00.123 [debug] QUERY OK source="media_items" db=0.2ms idle=191.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [155] 14:32:00.123 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:00.123 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:32:00.124 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:32:00.124 [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 [155] 14:32:00.125 [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" = ?) [155] 14:32:00.125 [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" = ?) [2] 14:32:00.125 [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 [] 14:32:00.125 [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 [] 14:32:00.125 [debug] Running yt-dlp command for action: get_downloadable_status 14:32:00.126 [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 [] 14:32:00.126 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:00.126 [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 [] 14:32:00.127 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FftvVi42U4o --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/eb/a2/eba2c9cb054894a2c93671d741ba57f457086407ac6e90a16c71a1d6383b3c59.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:00.546 [info] {"source":"oban","duration":141,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:32:03.773 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FftvVi42U4o --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/eb/a2/eba2c9cb054894a2c93671d741ba57f457086407ac6e90a16c71a1d6383b3c59.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:03.773 [debug] Running yt-dlp command for action: download 14:32:03.774 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=839.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:03.774 [debug] QUERY OK source="settings" db=0.1ms idle=129.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:03.774 [debug] QUERY OK source="settings" db=0.1ms idle=129.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:03.774 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FftvVi42U4o --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/31/2e/312e1aff5c58ddb0a71099be3a79192d9756f2ca42526d13e2b269c334a5a030.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:04.223 [info] GET /media_profiles/2/edit 14:32:04.223 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 14:32:04.224 [debug] QUERY OK source="media_profiles" db=0.4ms idle=578.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:32:04.224 [debug] QUERY OK source="settings" db=0.0ms idle=450.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:04.224 [debug] QUERY OK source="settings" db=0.0ms idle=450.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:04.225 [debug] QUERY OK source="settings" db=0.1ms idle=450.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:04.226 [info] Sent 200 in 3ms 14:32:18.193 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FftvVi42U4o --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/31/2e/312e1aff5c58ddb0a71099be3a79192d9756f2ca42526d13e2b269c334a5a030.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:18.237 [debug] Running yt-dlp command for action: download_thumbnail 14:32:18.238 [debug] QUERY OK source="settings" db=0.1ms idle=593.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:18.238 [debug] QUERY OK source="settings" db=0.3ms idle=593.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:18.239 [debug] QUERY OK source="settings" db=0.3ms idle=593.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:18.239 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FftvVi42U4o --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/155/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/7a/ce/7ace75c0d78d283134d483b9a6bd4e7299b0fe2274d3c13da674be794cbb93f0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:20.611 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=FftvVi42U4o --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/155/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/7a/ce/7ace75c0d78d283134d483b9a6bd4e7299b0fe2274d3c13da674be794cbb93f0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:20.612 [debug] QUERY OK db=0.0ms idle=967.2ms begin [] 14:32:20.613 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:32:18Z], "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].mp4", [["en", "/downloads/Tiny Desk/2023-10-13 Becky G: Tiny Desk Concert/Becky G: Tiny Desk Concert [FftvVi42U4o].en.srt"]], ~U[2026-07-24 12:32:20Z], 155] 14:32:20.613 [debug] QUERY OK source="media_metadata" db=0.5ms 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/155/metadata.json.gz", "/config/metadata/media_items/155/thumbnail.jpg", 155, ~U[2026-07-24 12:32:20Z], ~U[2026-07-24 12:32:20Z]] 14:32:20.614 [debug] QUERY OK db=0.3ms commit [] 14:32:20.615 [debug] QUERY OK source="media_items" db=1.1ms idle=969.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [344500025, ~U[2026-07-24 12:32:20Z], 155] 14:32:20.615 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:20.616 [info] {"args":{"id":155},"id":103,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20493269,"event":"job:stop","queue_time":1092121797,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:20.622 [info] {"args":{"id":156},"id":104,"meta":{},"system_time":1784896340622586944,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:20.623 [debug] QUERY OK source="media_items" db=0.4ms idle=665.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" = ?) [156] 14:32:20.623 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:20.624 [debug] QUERY OK source="sources" db=0.4ms idle=9.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:32:20.624 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:32:20.625 [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 [156] 14:32:20.626 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [156] 14:32:20.626 [debug] QUERY OK source="media_profiles" db=0.0ms 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" = ?) [2] 14:32:20.626 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.626 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.627 [debug] Running yt-dlp command for action: get_downloadable_status 14:32:20.627 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.627 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.628 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:20.628 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=evBgLWQwAFA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9c/a5/9ca50d7879693565beed4c5b0020220be46f159b0a5dc14dabd8bc6ac48700d7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:22.620 [info] {"source":"oban","duration":1907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:23.231 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=A8a2EosJIbM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4f/94/4f945b9d1e0683e001d3afff58b4cd14402838af210f8d5dc64c3994881626e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:23.253 [debug] Running yt-dlp command for action: download_thumbnail 14:32:23.253 [debug] QUERY OK source="settings" db=0.1ms idle=1607.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:23.254 [debug] QUERY OK source="settings" db=0.1ms idle=1607.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:23.254 [debug] QUERY OK source="settings" db=0.0ms idle=1291.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:23.254 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=A8a2EosJIbM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/154/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ea/c8/eac8dec4716772e8ff47b6c57a546609d006094421b94568fb0e9ce8b72cb11f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:24.594 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=evBgLWQwAFA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9c/a5/9ca50d7879693565beed4c5b0020220be46f159b0a5dc14dabd8bc6ac48700d7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:24.595 [debug] Running yt-dlp command for action: download 14:32:24.595 [debug] QUERY OK source="settings" db=0.1ms idle=1341.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:24.595 [debug] QUERY OK source="settings" db=0.1ms idle=1341.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:24.595 [debug] QUERY OK source="settings" db=0.1ms idle=1341.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:24.596 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=evBgLWQwAFA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ce/9e/ce9ef0ec513c680102be9ecc61a66043268e41bf3bca92438f9035e5c5f49e34.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:25.881 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=A8a2EosJIbM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/154/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ea/c8/eac8dec4716772e8ff47b6c57a546609d006094421b94568fb0e9ce8b72cb11f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:25.882 [debug] QUERY OK db=0.0ms idle=914.6ms begin [] 14:32:25.883 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:32:23Z], "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].mp4", [["en", "/downloads/Tiny Desk/2018-09-19 Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert/Hobo Johnson and The Lovemakers: NPR Music Tiny Desk Concert [A8a2EosJIbM].en.srt"]], ~U[2026-07-24 12:32:25Z], 154] 14:32:25.883 [debug] QUERY OK source="media_metadata" db=0.5ms 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/154/metadata.json.gz", "/config/metadata/media_items/154/thumbnail.jpg", 154, ~U[2026-07-24 12:32:25Z], ~U[2026-07-24 12:32:25Z]] 14:32:25.884 [debug] QUERY OK db=0.2ms commit [] 14:32:25.885 [debug] QUERY OK source="media_items" db=0.8ms idle=238.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [409762046, ~U[2026-07-24 12:32:25Z], 154] 14:32:25.885 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:25.885 [info] {"args":{"id":154},"id":102,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":40823900,"event":"job:stop","queue_time":1080060817,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:25.892 [info] {"args":{"id":157},"id":105,"meta":{},"system_time":1784896345892565859,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:25.893 [debug] QUERY OK source="media_items" db=0.2ms idle=246.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [157] 14:32:25.893 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:25.893 [debug] QUERY OK source="sources" db=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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:32:25.894 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=8.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:32:25.894 [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 [157] 14:32:25.896 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [157] 14:32:25.896 [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" = ?) [2] 14:32:25.896 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:25.897 [debug] QUERY OK source="settings" db=0.0ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:25.897 [debug] Running yt-dlp command for action: get_downloadable_status 14:32:25.897 [debug] QUERY OK source="settings" db=0.0ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:25.898 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:25.898 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:25.898 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CIjXUg1s5gc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/2b/812bd8c6027181c7762467ec1b5f66325b5590bb273bfea646e09fe927be3738.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:27.172 [info] GET /sources/2/media/178/edit 14:32:27.172 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "178", "source_id" => "2"} Pipelines: [:browser] 14:32:27.173 [debug] QUERY OK source="media_items" db=0.3ms idle=1274.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [178] 14:32:27.173 [debug] QUERY OK source="settings" db=0.1ms idle=1275.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:27.173 [debug] QUERY OK source="settings" db=0.1ms idle=1275.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:27.174 [debug] QUERY OK source="settings" db=0.1ms idle=1205.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:27.175 [info] Sent 200 in 2ms 14:32:29.486 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CIjXUg1s5gc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/2b/812bd8c6027181c7762467ec1b5f66325b5590bb273bfea646e09fe927be3738.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:29.486 [debug] Running yt-dlp command for action: download 14:32:29.487 [debug] QUERY OK source="settings" db=0.1ms idle=841.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:29.487 [debug] QUERY OK source="settings" db=0.1ms idle=841.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:29.487 [debug] QUERY OK source="settings" db=0.0ms idle=841.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:29.487 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CIjXUg1s5gc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/08/61/08619267ede6c0728e5546448774945f7651500871221c8cb976b16e63bbb3db.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:36.475 [info] GET /sources/2/media/134/edit 14:32:36.475 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "134", "source_id" => "2"} Pipelines: [:browser] 14:32:36.475 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1829.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" = ?) [134] 14:32:36.476 [debug] QUERY OK source="settings" db=0.1ms idle=1830.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:36.476 [debug] QUERY OK source="settings" db=0.1ms idle=1830.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:36.477 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1495.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:36.478 [info] Sent 200 in 3ms 14:32:38.951 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=evBgLWQwAFA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ce/9e/ce9ef0ec513c680102be9ecc61a66043268e41bf3bca92438f9035e5c5f49e34.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:38.957 [debug] Running yt-dlp command for action: download_thumbnail 14:32:38.958 [debug] QUERY OK source="settings" db=0.1ms idle=1312.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:38.958 [debug] QUERY OK source="settings" db=0.0ms idle=1312.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:38.958 [debug] QUERY OK source="settings" db=0.0ms idle=1312.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:38.958 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=evBgLWQwAFA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/156/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ec/7f/ec7f2a9045c71b23d2b0b29648e2e8fc86a91079b5fe9634a06c1cec8d3d019b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:41.928 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=evBgLWQwAFA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/156/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ec/7f/ec7f2a9045c71b23d2b0b29648e2e8fc86a91079b5fe9634a06c1cec8d3d019b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:41.929 [debug] QUERY OK db=0.1ms queue=0.1ms idle=1283.5ms begin [] 14:32:41.930 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:32:38Z], "/downloads/Tiny Desk/2015-11-09 Aurora: NPR Music Tiny Desk Concert/Aurora: NPR Music Tiny Desk Concert [evBgLWQwAFA].mp4", ~U[2026-07-24 12:32:41Z], 156] 14:32:41.931 [debug] QUERY OK source="media_metadata" db=0.5ms 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/156/metadata.json.gz", "/config/metadata/media_items/156/thumbnail.jpg", 156, ~U[2026-07-24 12:32:41Z], ~U[2026-07-24 12:32:41Z]] 14:32:41.931 [debug] QUERY OK db=0.2ms commit [] 14:32:41.933 [debug] QUERY OK source="media_items" db=0.9ms idle=1286.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [191318770, ~U[2026-07-24 12:32:41Z], 156] 14:32:41.933 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:41.934 [info] {"args":{"id":156},"id":104,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21311067,"event":"job:stop","queue_time":1110621803,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:41.940 [info] {"args":{"id":158},"id":106,"meta":{},"system_time":1784896361940546105,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:41.941 [debug] QUERY OK source="media_items" db=0.7ms idle=294.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [158] 14:32:41.942 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:41.943 [debug] QUERY OK source="sources" db=0.4ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:32:41.943 [debug] QUERY OK source="media_profiles" db=0.4ms idle=9.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:32:41.944 [debug] QUERY OK source="media_items" db=0.5ms 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 [158] 14:32:41.946 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [158] 14:32:41.946 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 14:32:41.947 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:41.947 [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:32:41.948 [debug] Running yt-dlp command for action: get_downloadable_status 14:32:41.948 [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:32:41.949 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:41.949 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:41.949 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/4f/684f0facca46207b6e648c7b71f679d73c9c9e9a37d20c4f78a19d9c6c52478b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:45.550 [info] GET /sources/2/media/175/edit 14:32:45.550 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "175", "source_id" => "2"} Pipelines: [:browser] 14:32:45.551 [debug] QUERY OK source="media_items" db=0.1ms idle=1905.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [175] 14:32:45.551 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=1905.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:45.552 [debug] QUERY OK source="settings" db=0.3ms idle=1906.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:45.553 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/4f/684f0facca46207b6e648c7b71f679d73c9c9e9a37d20c4f78a19d9c6c52478b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:45.553 [debug] Running yt-dlp command for action: download 14:32:45.554 [debug] QUERY OK source="settings" db=0.6ms queue=0.6ms idle=1557.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:45.554 [debug] QUERY OK source="settings" db=0.7ms idle=557.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:45.554 [info] Sent 200 in 4ms 14:32:45.555 [debug] QUERY OK source="settings" db=0.3ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:45.555 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:45.555 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1b/b7/1bb7fa0cf98bb2c8cb81e6ff682a4441b048ea8049707ae448933d458b1bf71d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:49.706 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1b/b7/1bb7fa0cf98bb2c8cb81e6ff682a4441b048ea8049707ae448933d458b1bf71d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: unable to download video data: HTTP Error 403: Forbidden 14:32:49.706 [error] yt-dlp download error for media item #158: "ERROR: unable to download video data: HTTP Error 403: Forbidden\n" 14:32:49.709 [debug] QUERY OK source="media_items" db=2.7ms idle=1061.2ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: unable to download video data: HTTP Error 403: Forbidden\n", ~U[2026-07-24 12:32:49Z], 158] 14:32:49.710 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":158},"id":106,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7769544,"event":"job:exception","queue_time":1126939799,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:49.717 [info] {"args":{"id":159},"id":107,"meta":{},"system_time":1784896369717573932,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:32:49.718 [debug] QUERY OK source="media_items" db=0.2ms idle=1071.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [159] 14:32:49.718 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:32:49.719 [debug] QUERY OK source="sources" db=0.3ms idle=717.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:32:49.719 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 14:32:49.720 [debug] QUERY OK source="media_items" db=0.7ms 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 [159] 14:32:49.721 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [159] 14:32:49.722 [debug] QUERY OK source="media_profiles" db=0.4ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:32:49.722 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:49.723 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:49.724 [debug] Running yt-dlp command for action: get_downloadable_status 14:32:49.725 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:49.725 [debug] QUERY OK source="settings" db=0.2ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:49.726 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:49.726 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=JrEJmvuKSwo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/43/24/4324df1569342686d6b8b4f0a26edb92621eb2dd8ea5268bac420195e2457232.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:52.012 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=JrEJmvuKSwo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/43/24/4324df1569342686d6b8b4f0a26edb92621eb2dd8ea5268bac420195e2457232.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:32:52.012 [debug] Running yt-dlp command for action: download 14:32:52.014 [debug] QUERY OK source="settings" db=1.7ms idle=366.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:52.017 [debug] QUERY OK source="settings" db=1.0ms queue=0.3ms idle=369.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:52.022 [debug] QUERY OK source="settings" db=4.3ms queue=0.3ms idle=371.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:52.023 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=JrEJmvuKSwo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8e/50/8e5067b366bfa2e5ed45458efccb57491adf331843add65712fd409e1c0f68d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:32:52.622 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:53.727 [info] GET /sources/2/media/135/edit 14:32:53.727 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "135", "source_id" => "2"} Pipelines: [:browser] 14:32:53.728 [debug] QUERY OK source="media_items" db=0.2ms idle=711.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [135] 14:32:53.728 [debug] QUERY OK source="settings" db=0.3ms idle=82.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:53.730 [debug] QUERY OK source="settings" db=1.0ms idle=83.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:53.731 [debug] QUERY OK source="settings" db=0.3ms idle=84.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:32:53.732 [info] Sent 200 in 4ms 14:32:53.848 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:33:00.548 [info] {"source":"oban","duration":447,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:33:00.583 [info] GET /sources/2/media/130/edit 14:33:00.584 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "130", "source_id" => "2"} Pipelines: [:browser] 14:33:00.584 [debug] QUERY OK source="media_items" db=0.3ms idle=938.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" = ?) [130] 14:33:00.584 [debug] QUERY OK source="settings" db=0.1ms idle=938.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:00.585 [debug] QUERY OK source="settings" db=0.2ms idle=939.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:00.585 [debug] QUERY OK source="settings" db=0.2ms idle=559.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:00.586 [info] Sent 200 in 3ms 14:33:01.433 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CIjXUg1s5gc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/08/61/08619267ede6c0728e5546448774945f7651500871221c8cb976b16e63bbb3db.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:01.440 [debug] Running yt-dlp command for action: download_thumbnail 14:33:01.441 [debug] QUERY OK source="settings" db=0.2ms idle=856.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:01.441 [debug] QUERY OK source="settings" db=0.1ms idle=856.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:01.441 [debug] QUERY OK source="settings" db=0.1ms idle=856.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:01.441 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CIjXUg1s5gc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/157/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/3b/a1/3ba157548d97f9687f9c9f9203d8c90bfc9aad8016b81020ba2017d780164484.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:03.929 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=CIjXUg1s5gc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/157/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/3b/a1/3ba157548d97f9687f9c9f9203d8c90bfc9aad8016b81020ba2017d780164484.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:03.930 [debug] QUERY OK db=0.5ms idle=1284.0ms begin [] 14:33:03.931 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "uploaded_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:33:01Z], "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].mp4", [["en", "/downloads/Tiny Desk/2014-10-29 T-Pain: NPR Music Tiny Desk Concert/T-Pain: NPR Music Tiny Desk Concert [CIjXUg1s5gc].en.srt"]], ~U[2014-10-29 00:00:00Z], ~U[2026-07-24 12:33:03Z], 157] 14:33:03.932 [debug] QUERY OK source="media_metadata" db=0.7ms 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/157/metadata.json.gz", "/config/metadata/media_items/157/thumbnail.jpg", 157, ~U[2026-07-24 12:33:03Z], ~U[2026-07-24 12:33:03Z]] 14:33:03.932 [debug] QUERY OK db=0.2ms commit [] 14:33:03.934 [debug] QUERY OK source="media_items" db=1.2ms idle=1286.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [170731240, ~U[2026-07-24 12:33:03Z], 157] 14:33:03.934 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:03.934 [info] {"args":{"id":157},"id":105,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":38041671,"event":"job:stop","queue_time":1112891850,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:03.940 [info] {"args":{"id":160},"id":108,"meta":{},"system_time":1784896383940388999,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:03.940 [debug] QUERY OK source="media_items" db=0.1ms idle=294.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" = ?) [160] 14:33:03.941 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:03.941 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=8.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:33:03.942 [debug] QUERY OK source="media_profiles" db=0.3ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:03.942 [debug] QUERY OK source="media_items" db=0.4ms 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 [160] 14:33:03.943 [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" = ?) [160] 14:33:03.943 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:03.944 [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 [] 14:33:03.944 [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 [] 14:33:03.944 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:03.945 [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 [] 14:33:03.945 [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 [] 14:33:03.946 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:03.946 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kMnDHUKGMWs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0b/3d/0b3da3af4e94c08b37b351f5adf8fb93b63d8a4bdbe257ae215277d9038859c8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:05.999 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=JrEJmvuKSwo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8e/50/8e5067b366bfa2e5ed45458efccb57491adf331843add65712fd409e1c0f68d4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:06.021 [debug] Running yt-dlp command for action: download_thumbnail 14:33:06.022 [debug] QUERY OK source="settings" db=0.1ms idle=984.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.022 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:33:06.023 [debug] QUERY OK source="settings" db=0.1ms idle=376.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.023 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=JrEJmvuKSwo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/159/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c2/15/c21522f7499994b3d4b4dc8a10680b1b2faef410a5428f0f0dc3dd0e8ce56cc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:06.303 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kMnDHUKGMWs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0b/3d/0b3da3af4e94c08b37b351f5adf8fb93b63d8a4bdbe257ae215277d9038859c8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:06.304 [debug] Running yt-dlp command for action: download 14:33:06.304 [debug] QUERY OK source="settings" db=0.4ms idle=658.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.304 [debug] QUERY OK source="settings" db=0.0ms idle=282.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.305 [debug] QUERY OK source="settings" db=0.2ms idle=282.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.305 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kMnDHUKGMWs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f5/f3/f5f3288a27728e2d0ae76b3023da148031fffad5709b2c1e4a981da0c70a73e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:06.788 [info] GET /sources/2/media/173/edit 14:33:06.788 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "173", "source_id" => "2"} Pipelines: [:browser] 14:33:06.789 [debug] QUERY OK source="media_items" db=0.9ms idle=765.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [173] 14:33:06.790 [debug] QUERY OK source="settings" db=0.2ms queue=0.5ms idle=750.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.790 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=485.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.791 [debug] QUERY OK source="settings" db=0.3ms idle=486.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:06.792 [info] Sent 200 in 4ms 14:33:08.464 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=JrEJmvuKSwo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/159/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c2/15/c21522f7499994b3d4b4dc8a10680b1b2faef410a5428f0f0dc3dd0e8ce56cc2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:08.465 [debug] QUERY OK db=0.2ms idle=1674.5ms begin [] 14:33:08.465 [debug] QUERY OK source="media_items" db=0.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:33:06Z], "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].mp4", [["en", "/downloads/Tiny Desk/2012-12-03 Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert/Macklemore & Ryan Lewis: NPR Music Tiny Desk Concert [JrEJmvuKSwo].en.srt"]], ~U[2026-07-24 12:33:08Z], 159] 14:33:08.466 [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/159/metadata.json.gz", "/config/metadata/media_items/159/thumbnail.jpg", 159, ~U[2026-07-24 12:33:08Z], ~U[2026-07-24 12:33:08Z]] 14:33:08.466 [debug] QUERY OK db=0.2ms commit [] 14:33:08.467 [debug] QUERY OK source="media_items" db=0.7ms idle=1676.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [293393777, ~U[2026-07-24 12:33:08Z], 159] 14:33:08.467 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:08.468 [info] {"args":{"id":159},"id":107,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":18750356,"event":"job:stop","queue_time":1132716736,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:08.474 [info] {"args":{"id":161},"id":109,"meta":{},"system_time":1784896388474555571,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:08.475 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=426.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" = ?) [161] 14:33:08.475 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:08.475 [debug] QUERY OK source="sources" db=0.3ms idle=8.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:33:08.476 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:08.476 [debug] QUERY OK source="media_items" db=0.5ms 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 [161] 14:33:08.477 [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" = ?) [161] 14:33:08.478 [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" = ?) [2] 14:33:08.478 [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 [] 14:33:08.478 [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 [] 14:33:08.479 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:08.480 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:08.480 [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 [] 14:33:08.480 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:08.480 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XWIvfE01J0k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/16/9d/169d5f201b977aad1147671982c980e531ff3d0266e2520b7dab89775dc1a3d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:10.882 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XWIvfE01J0k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/16/9d/169d5f201b977aad1147671982c980e531ff3d0266e2520b7dab89775dc1a3d3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:10.882 [debug] Running yt-dlp command for action: download 14:33:10.883 [debug] QUERY OK source="settings" db=0.3ms idle=1237.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:10.884 [debug] QUERY OK source="settings" db=0.5ms idle=1237.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:10.884 [debug] QUERY OK source="settings" db=0.1ms idle=1238.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:10.884 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XWIvfE01J0k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/04/5b/045bd800532481f8e56ade6ae691f48b45b79f1bb126a245d62f5ab449d348a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:12.286 [info] GET /sources/2/media/176/edit 14:33:12.286 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "176", "source_id" => "2"} Pipelines: [:browser] 14:33:12.287 [debug] QUERY OK source="media_items" db=0.6ms idle=1402.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" = ?) [176] 14:33:12.287 [debug] QUERY OK source="settings" db=0.2ms idle=1402.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:12.288 [debug] QUERY OK source="settings" db=0.3ms idle=1236.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:12.288 [debug] QUERY OK source="settings" db=0.1ms idle=642.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:12.289 [info] Sent 200 in 3ms 14:33:15.726 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XWIvfE01J0k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/04/5b/045bd800532481f8e56ade6ae691f48b45b79f1bb126a245d62f5ab449d348a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:15.730 [debug] Running yt-dlp command for action: download_thumbnail 14:33:15.730 [debug] QUERY OK source="settings" db=0.1ms idle=672.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:15.731 [debug] QUERY OK source="settings" db=0.3ms idle=85.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:15.731 [debug] QUERY OK source="settings" db=0.2ms idle=85.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:15.731 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XWIvfE01J0k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/161/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/11/39/11398a42b1005a951c161a278663029ba8e2796a1c89cbc14195b96e813bac9d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:17.520 [info] GET /sources/2/media/174/edit 14:33:17.520 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "174", "source_id" => "2"} Pipelines: [:browser] 14:33:17.520 [debug] QUERY OK source="media_items" db=0.2ms idle=1789.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" = ?) [174] 14:33:17.521 [debug] QUERY OK source="settings" db=0.2ms queue=0.4ms idle=1789.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:17.522 [debug] QUERY OK source="settings" db=0.3ms idle=1790.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:17.523 [debug] QUERY OK source="settings" db=0.4ms idle=1463.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:17.524 [info] Sent 200 in 3ms 14:33:17.990 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=XWIvfE01J0k --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/161/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/11/39/11398a42b1005a951c161a278663029ba8e2796a1c89cbc14195b96e813bac9d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:17.990 [debug] QUERY OK db=0.0ms idle=929.9ms begin [] 14:33:17.991 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:33:15Z], "/downloads/Tiny Desk/2009-11-02 Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert/Edward Sharpe And The Magnetic Zeroes: NPR Music Tiny Desk Concert [XWIvfE01J0k].mp4", ~U[2026-07-24 12:33:17Z], 161] 14:33:17.992 [debug] QUERY OK source="media_metadata" db=0.5ms 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/161/metadata.json.gz", "/config/metadata/media_items/161/thumbnail.jpg", 161, ~U[2026-07-24 12:33:17Z], ~U[2026-07-24 12:33:17Z]] 14:33:17.992 [debug] QUERY OK db=0.3ms commit [] 14:33:17.994 [debug] QUERY OK source="media_items" db=1.4ms idle=472.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [47335246, ~U[2026-07-24 12:33:17Z], 161] 14:33:17.994 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:17.995 [info] {"args":{"id":161},"id":109,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":9519973,"event":"job:stop","queue_time":1146473738,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:18.002 [info] {"args":{"id":162},"id":110,"meta":{},"system_time":1784896398002018704,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:18.002 [debug] QUERY OK source="media_items" db=0.5ms idle=479.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [162] 14:33:18.003 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:18.004 [debug] QUERY OK source="sources" db=0.6ms idle=10.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:33:18.006 [debug] QUERY OK source="media_profiles" db=2.1ms idle=9.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:18.007 [debug] QUERY OK source="media_items" db=0.9ms idle=11.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [162] 14:33:18.010 [debug] QUERY OK source="media_metadata" db=0.3ms queue=0.2ms idle=8.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [162] 14:33:18.011 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:18.012 [debug] QUERY OK source="settings" db=1.0ms 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 [] 14:33:18.013 [debug] QUERY OK source="settings" db=0.5ms idle=6.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.014 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:18.015 [debug] QUERY OK source="settings" db=0.2ms idle=7.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.016 [debug] QUERY OK source="settings" db=0.5ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.016 [debug] QUERY OK source="settings" db=0.3ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.017 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bJUUnXZVIfY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f3/32/f332851d45be8ccd4ec9d059a1cdfcb7027bb4dd4c78f1cecd68b4de3c43f512.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:18.834 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kMnDHUKGMWs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f5/f3/f5f3288a27728e2d0ae76b3023da148031fffad5709b2c1e4a981da0c70a73e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:18.845 [debug] Running yt-dlp command for action: download_thumbnail 14:33:18.846 [debug] QUERY OK source="settings" db=0.2ms idle=832.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.846 [debug] QUERY OK source="settings" db=0.4ms idle=830.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.847 [debug] QUERY OK source="settings" db=0.5ms idle=830.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:18.847 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kMnDHUKGMWs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/160/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9d/59/9d5941d6fa6a40f77774cbcc3751076bab4ed3a5dc2d09b6e5f772d223b02cf0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:21.006 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kMnDHUKGMWs --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/160/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9d/59/9d5941d6fa6a40f77774cbcc3751076bab4ed3a5dc2d09b6e5f772d223b02cf0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:21.008 [debug] QUERY OK db=0.6ms idle=1361.9ms begin [] 14:33:21.011 [debug] QUERY OK source="media_items" db=2.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:33:18Z], "/downloads/Tiny Desk/2011-09-13 Foster The People: NPR Music Tiny Desk Concert/Foster The People: NPR Music Tiny Desk Concert [kMnDHUKGMWs].mp4", ~U[2026-07-24 12:33:21Z], 160] 14:33:21.013 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/160/metadata.json.gz", "/config/metadata/media_items/160/thumbnail.jpg", 160, ~U[2026-07-24 12:33:21Z], ~U[2026-07-24 12:33:21Z]] 14:33:21.013 [debug] QUERY OK db=0.4ms commit [] 14:33:21.015 [debug] QUERY OK source="media_items" db=1.2ms idle=946.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [289542206, ~U[2026-07-24 12:33:21Z], 160] 14:33:21.016 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:21.016 [info] {"args":{"id":160},"id":108,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":17075754,"event":"job:stop","queue_time":1144939781,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:21.023 [info] {"args":{"id":163},"id":111,"meta":{},"system_time":1784896401023548936,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:21.024 [debug] QUERY OK source="media_items" db=0.1ms idle=377.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [163] 14:33:21.024 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:21.024 [debug] QUERY OK source="sources" db=0.1ms queue=0.2ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:33:21.025 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.2ms idle=9.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:21.025 [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 [163] 14:33:21.027 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [163] 14:33:21.027 [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" = ?) [2] 14:33:21.028 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.028 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.029 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:21.030 [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:33:21.030 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.031 [debug] QUERY OK source="settings" db=0.4ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.031 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4MsoqUv5gv4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/14/fc/14fc55bec32c797a9075fa8b3d51c53de7c430fb502c8c45193d621c2f9c88b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:21.718 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bJUUnXZVIfY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f3/32/f332851d45be8ccd4ec9d059a1cdfcb7027bb4dd4c78f1cecd68b4de3c43f512.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:21.718 [debug] Running yt-dlp command for action: download 14:33:21.719 [debug] QUERY OK source="settings" db=0.5ms queue=0.3ms idle=690.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.720 [debug] QUERY OK source="settings" db=0.8ms idle=689.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.721 [debug] QUERY OK source="settings" db=0.7ms idle=690.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:21.722 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bJUUnXZVIfY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1c/d7/1cd70d76b9cbb84f6a10a95995153bfe01725274467b1f4b19706758396a7b00.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:22.295 [info] GET /sources/2/media/179/edit 14:33:22.295 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "179", "source_id" => "2"} Pipelines: [:browser] 14:33:22.295 [debug] QUERY OK source="media_items" db=0.1ms idle=1227.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" = ?) [179] 14:33:22.296 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=576.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:22.296 [debug] QUERY OK source="settings" db=0.1ms idle=575.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:22.297 [debug] QUERY OK source="settings" db=0.3ms idle=575.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:22.298 [info] Sent 200 in 3ms 14:33:22.623 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:23.665 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4MsoqUv5gv4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/14/fc/14fc55bec32c797a9075fa8b3d51c53de7c430fb502c8c45193d621c2f9c88b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:23.665 [debug] Running yt-dlp command for action: download 14:33:23.666 [debug] QUERY OK source="settings" db=0.2ms idle=594.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:23.666 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:33:23.667 [debug] QUERY OK source="settings" db=0.3ms idle=20.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:23.667 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4MsoqUv5gv4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/10/1a/101a7990953a0bb5c0dd8e79534643154152d1750ccb522d4b8c37d3c3c5996d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:26.661 [info] GET /sources/2/media/177/edit 14:33:26.661 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "177", "source_id" => "2"} Pipelines: [:browser] 14:33:26.662 [debug] QUERY OK source="media_items" db=0.5ms idle=1015.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [177] 14:33:26.662 [debug] QUERY OK source="settings" db=0.1ms idle=1016.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:26.663 [debug] QUERY OK source="settings" db=0.4ms idle=1016.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:26.664 [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 [] 14:33:26.664 [info] Sent 200 in 3ms 14:33:30.587 [info] GET /sources/2/media/124/edit 14:33:30.587 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "124", "source_id" => "2"} Pipelines: [:browser] 14:33:30.588 [debug] QUERY OK source="media_items" db=0.8ms idle=1941.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" = ?) [124] 14:33:30.588 [debug] QUERY OK source="settings" db=0.1ms idle=1942.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:30.589 [debug] QUERY OK source="settings" db=0.1ms idle=1943.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:30.589 [debug] QUERY OK source="settings" db=0.0ms 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 [] 14:33:30.590 [info] Sent 200 in 3ms 14:33:33.778 [info] GET /sources/2/media/127/edit 14:33:33.778 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "127", "source_id" => "2"} Pipelines: [:browser] 14:33:33.779 [debug] QUERY OK source="media_items" db=0.5ms idle=692.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" = ?) [127] 14:33:33.780 [debug] QUERY OK source="settings" db=0.3ms idle=133.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:33.780 [debug] QUERY OK source="settings" db=0.3ms idle=134.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:33.781 [debug] QUERY OK source="settings" db=0.5ms idle=134.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:33.782 [info] Sent 200 in 4ms 14:33:36.646 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bJUUnXZVIfY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1c/d7/1cd70d76b9cbb84f6a10a95995153bfe01725274467b1f4b19706758396a7b00.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:36.668 [debug] Running yt-dlp command for action: download_thumbnail 14:33:36.669 [debug] QUERY OK source="settings" db=0.1ms idle=1023.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:36.669 [debug] QUERY OK source="settings" db=0.1ms idle=1023.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:36.669 [debug] QUERY OK source="settings" db=0.1ms idle=1023.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:36.669 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bJUUnXZVIfY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/162/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a3/9a/a39adcbe1cc9dfde598821d1c93eacf5f9646e9aacd9bc759f676f3de4b8caf4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:36.926 [info] GET /sources/2/media/126/edit 14:33:36.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "126", "source_id" => "2"} Pipelines: [:browser] 14:33:36.927 [debug] QUERY OK source="media_items" db=0.6ms idle=1280.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" = ?) [126] 14:33:36.928 [debug] QUERY OK source="settings" db=0.5ms idle=836.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:36.928 [debug] QUERY OK source="settings" db=0.3ms idle=259.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:36.929 [debug] QUERY OK source="settings" db=0.8ms idle=259.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:36.931 [info] Sent 200 in 5ms 14:33:39.095 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bJUUnXZVIfY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/162/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/a3/9a/a39adcbe1cc9dfde598821d1c93eacf5f9646e9aacd9bc759f676f3de4b8caf4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:39.097 [debug] QUERY OK db=0.7ms queue=0.1ms idle=1002.5ms begin [] 14:33:39.100 [debug] QUERY OK source="media_items" db=2.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:33:36Z], "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].mp4", [["en", "/downloads/Tiny Desk/2021-12-01 Wet Leg: Tiny Desk (Home) Concert/Wet Leg: Tiny Desk (Home) Concert [bJUUnXZVIfY].en.srt"]], ~U[2026-07-24 12:33:39Z], 162] 14:33:39.103 [debug] QUERY OK source="media_metadata" db=3.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/162/metadata.json.gz", "/config/metadata/media_items/162/thumbnail.jpg", 162, ~U[2026-07-24 12:33:39Z], ~U[2026-07-24 12:33:39Z]] 14:33:39.104 [debug] QUERY OK db=0.5ms commit [] 14:33:39.106 [debug] QUERY OK source="media_items" db=1.3ms idle=458.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [217701720, ~U[2026-07-24 12:33:39Z], 162] 14:33:39.106 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:39.106 [info] {"args":{"id":162},"id":110,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21104504,"event":"job:stop","queue_time":1154000802,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:39.113 [info] {"args":{"id":164},"id":112,"meta":{},"system_time":1784896419113527468,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:39.114 [debug] QUERY OK source="media_items" db=0.6ms idle=15.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [164] 14:33:39.115 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:39.115 [debug] QUERY OK source="sources" db=0.5ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:33:39.116 [debug] QUERY OK source="media_profiles" db=0.5ms idle=9.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:39.117 [debug] QUERY OK source="media_items" db=0.6ms idle=9.8ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [164] 14:33:39.118 [debug] QUERY OK source="media_metadata" db=0.3ms idle=4.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [164] 14:33:39.118 [debug] QUERY OK source="media_profiles" db=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" = ?) [2] 14:33:39.119 [debug] QUERY OK source="settings" db=0.1ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.120 [debug] QUERY OK source="settings" db=1.0ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.121 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:39.122 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.122 [debug] QUERY OK source="settings" db=0.4ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.123 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.123 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=z3ZFoo4-TdU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/35/a7/35a76d813a1d5209bc694a24f74965b0b5d89c3d8e7438a768300321568f3e0b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:39.795 [info] GET /sources/2/media/125/edit 14:33:39.796 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "125", "source_id" => "2"} Pipelines: [:browser] 14:33:39.797 [debug] QUERY OK source="media_items" db=1.5ms idle=677.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [125] 14:33:39.803 [debug] QUERY OK source="settings" db=0.9ms idle=681.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.803 [debug] QUERY OK source="settings" db=0.5ms idle=681.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.804 [debug] QUERY OK source="settings" db=0.7ms idle=681.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:39.805 [info] Sent 200 in 9ms 14:33:41.191 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=z3ZFoo4-TdU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/35/a7/35a76d813a1d5209bc694a24f74965b0b5d89c3d8e7438a768300321568f3e0b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:41.191 [debug] Running yt-dlp command for action: download 14:33:41.192 [debug] QUERY OK source="settings" db=0.2ms idle=1389.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:41.192 [debug] QUERY OK source="settings" db=0.2ms idle=1388.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:41.193 [debug] QUERY OK source="settings" db=0.2ms idle=1388.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:41.193 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=z3ZFoo4-TdU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/47/3f/473f980bfccf1a959138e5b77b91589d6d323c5e6972bc89d758c9ba6467dc86.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:42.164 [info] GET /sources/2/media/123/edit 14:33:42.164 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "123", "source_id" => "2"} Pipelines: [:browser] 14:33:42.166 [debug] QUERY OK source="media_items" db=1.0ms queue=0.1ms idle=973.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" = ?) [123] 14:33:42.168 [debug] QUERY OK source="settings" db=1.0ms idle=974.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:42.169 [debug] QUERY OK source="settings" db=0.7ms idle=975.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:42.170 [debug] QUERY OK source="settings" db=0.9ms idle=523.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:42.172 [info] Sent 200 in 7ms 14:33:42.788 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4MsoqUv5gv4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/10/1a/101a7990953a0bb5c0dd8e79534643154152d1750ccb522d4b8c37d3c3c5996d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:42.812 [debug] Running yt-dlp command for action: download_thumbnail 14:33:42.813 [debug] QUERY OK source="settings" db=0.1ms idle=709.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:42.814 [debug] QUERY OK source="settings" db=0.0ms idle=647.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:42.814 [debug] QUERY OK source="settings" db=0.0ms idle=645.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:42.814 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4MsoqUv5gv4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/163/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/52/9d/529d02ebf5fed38dcaf054c105f4198f4479fa3f486f42b4da34f05f0e536aec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:44.411 [info] GET /sources/2/media/122 14:33:44.411 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "122", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:33:44.412 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1597.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [122] 14:33:44.412 [debug] QUERY OK source="tasks" db=0.1ms idle=1598.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" [122] 14:33:44.412 [debug] QUERY OK source="sources" db=0.2ms idle=1306.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:33:44.413 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=767.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" = ?) [70] 14:33:44.414 [debug] QUERY OK source="settings" db=0.3ms idle=306.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:44.414 [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 [] 14:33:44.414 [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 [] 14:33:44.415 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:44.416 [info] Sent 200 in 5ms 14:33:45.301 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4MsoqUv5gv4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/163/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/52/9d/529d02ebf5fed38dcaf054c105f4198f4479fa3f486f42b4da34f05f0e536aec.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:45.302 [debug] QUERY OK db=0.1ms idle=888.4ms begin [] 14:33:45.304 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:33:42Z], "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].mp4", [["en", "/downloads/Tiny Desk/2021-10-26 Ed Sheeran: Tiny Desk (Home) Concert/Ed Sheeran: Tiny Desk (Home) Concert [4MsoqUv5gv4].en.srt"]], ~U[2026-07-24 12:33:45Z], 163] 14:33:45.305 [debug] QUERY OK source="media_metadata" db=1.0ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/163/metadata.json.gz", "/config/metadata/media_items/163/thumbnail.jpg", 163, ~U[2026-07-24 12:33:45Z], ~U[2026-07-24 12:33:45Z]] 14:33:45.305 [debug] QUERY OK db=0.3ms commit [] 14:33:45.307 [debug] QUERY OK source="media_items" db=1.4ms idle=891.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [350355362, ~U[2026-07-24 12:33:45Z], 163] 14:33:45.307 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:45.308 [info] {"args":{"id":163},"id":111,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24284154,"event":"job:stop","queue_time":1155022805,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:45.315 [info] {"args":{"id":165},"id":113,"meta":{},"system_time":1784896425315368660,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:33:45.315 [debug] QUERY OK source="media_items" db=0.2ms idle=206.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" = ?) [165] 14:33:45.316 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:33:45.316 [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" = ?) [2] 14:33:45.317 [debug] QUERY OK source="media_profiles" db=0.1ms idle=9.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:33:45.317 [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 [165] 14:33:45.317 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [165] 14:33:45.318 [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" = ?) [2] 14:33:45.318 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:45.318 [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 [] 14:33:45.319 [debug] Running yt-dlp command for action: get_downloadable_status 14:33:45.320 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:45.320 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:45.321 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:45.321 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yN0I5xTjaGo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/6e/d26e484e5bad71da16c5a7d22fda567bd96ac3e5f3a6bb4c2092d1330474129b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:46.411 [info] GET /sources/1/media/121 14:33:46.411 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "121", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:33:46.412 [debug] QUERY OK source="media_items" db=0.4ms idle=1092.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [121] 14:33:46.412 [debug] QUERY OK source="tasks" db=0.3ms idle=1091.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" [121] 14:33:46.412 [debug] QUERY OK source="sources" db=0.5ms idle=1091.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:33:46.413 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1091.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" = ?) [65] 14:33:46.413 [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 [] 14:33:46.413 [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 [] 14:33:46.413 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:46.414 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:33:46.416 [info] Sent 200 in 5ms 14:33:47.439 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yN0I5xTjaGo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d2/6e/d26e484e5bad71da16c5a7d22fda567bd96ac3e5f3a6bb4c2092d1330474129b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:33:47.440 [debug] Running yt-dlp command for action: download 14:33:47.440 [debug] QUERY OK source="settings" db=0.3ms idle=1027.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:47.441 [debug] QUERY OK source="settings" db=0.1ms idle=1027.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:47.441 [debug] QUERY OK source="settings" db=0.3ms idle=1027.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:47.442 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yN0I5xTjaGo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a1/3e/a13eb67cb0f39a567a1456f0822e096341f27fe2baa3a5ff517b79d8eacdfc09.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:33:51.338 [info] GET /sources/2/force_metadata_refresh 14:33:51.339 [debug] QUERY OK source="settings" db=0.2ms idle=1218.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.339 [debug] QUERY OK source="settings" db=0.2ms idle=693.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:51.339 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:33:51.340 [error] #PID<0.4240.0> running PinchflatWeb.Endpoint (connection #PID<0.4239.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.4239.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45788}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4240.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://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], 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", "GMU52PbMCVWq2qEAAEsi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4239.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45788}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4239.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45788}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", b (truncated) 14:33:52.592 [info] GET /sources/1/force_metadata_refresh 14:33:52.593 [debug] QUERY OK source="settings" db=0.2ms idle=1946.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:52.593 [debug] QUERY OK source="settings" db=0.2ms idle=1470.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:52.593 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:33:52.594 [error] #PID<0.4242.0> running PinchflatWeb.Endpoint (connection #PID<0.4241.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/force_metadata_refresh ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4241.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45804}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4242.0>, params: %{}, path_info: ["sources", "1", "force_metadata_refresh"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU52UGJ__w1Sg8AAEtC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4241.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45804}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4241.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 45804}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", b (truncated) 14:33:52.624 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:53.967 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:33:56.452 [info] GET /sources/2/force_download_pending 14:33:56.452 [debug] QUERY OK source="settings" db=0.1ms idle=1324.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.453 [debug] QUERY OK source="settings" db=0.4ms idle=806.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:33:56.453 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:33:56.454 [error] #PID<0.4246.0> running PinchflatWeb.Endpoint (connection #PID<0.4245.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4245.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_download_pending", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60186}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4246.0>, params: %{}, path_info: ["sources", "2", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU52ieYXubNHkgAAEti"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4245.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_download_pending", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60186}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4245.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_download_pending", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60186}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", b (truncated) 14:34:00.548 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:34:05.002 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yN0I5xTjaGo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a1/3e/a13eb67cb0f39a567a1456f0822e096341f27fe2baa3a5ff517b79d8eacdfc09.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:05.007 [debug] Running yt-dlp command for action: download_thumbnail 14:34:05.008 [debug] QUERY OK source="settings" db=0.1ms idle=1362.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:05.008 [debug] QUERY OK source="settings" db=0.0ms idle=1362.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:05.008 [debug] QUERY OK source="settings" db=0.0ms idle=1362.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:05.008 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yN0I5xTjaGo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/165/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4a/17/4a173c8ea7ae32c42ac2ac4e714d4050d8bd51b4325a353325fc9333a3af18a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:07.256 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=yN0I5xTjaGo --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/165/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4a/17/4a173c8ea7ae32c42ac2ac4e714d4050d8bd51b4325a353325fc9333a3af18a1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:07.257 [debug] QUERY OK db=0.2ms idle=1110.3ms begin [] 14:34:07.259 [debug] QUERY OK source="media_items" db=1.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:34:05Z], "/downloads/Tiny Desk/2021-07-23 Vince Staples: Tiny Desk (Home) Concert/Vince Staples: Tiny Desk (Home) Concert [yN0I5xTjaGo].mp4", ~U[2026-07-24 12:34:07Z], 165] 14:34:07.264 [debug] QUERY OK source="media_metadata" db=4.7ms 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/165/metadata.json.gz", "/config/metadata/media_items/165/thumbnail.jpg", 165, ~U[2026-07-24 12:34:07Z], ~U[2026-07-24 12:34:07Z]] 14:34:07.265 [debug] QUERY OK db=0.7ms commit [] 14:34:07.266 [debug] QUERY OK source="media_items" db=1.3ms idle=619.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [150889748, ~U[2026-07-24 12:34:07Z], 165] 14:34:07.267 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:07.267 [info] {"args":{"id":165},"id":113,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21951706,"event":"job:stop","queue_time":1175314787,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:07.273 [info] {"args":{"id":166},"id":114,"meta":{},"system_time":1784896447273556280,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:07.274 [debug] QUERY OK source="media_items" db=0.2ms idle=124.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [166] 14:34:07.274 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:07.274 [debug] QUERY OK source="sources" db=0.2ms idle=9.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:07.275 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=8.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:07.276 [debug] QUERY OK source="media_items" db=0.3ms 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 [166] 14:34:07.277 [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" = ?) [166] 14:34:07.277 [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" = ?) [2] 14:34:07.277 [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 [] 14:34:07.277 [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 [] 14:34:07.278 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:07.278 [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 [] 14:34:07.279 [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 [] 14:34:07.279 [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 [] 14:34:07.279 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ehw07lXL1AY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/b4/38b48f3b82b66a35a2f32b79e2e7229669296dbca053692e95b6f20946db195d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:08.738 [info] GET /sources/1/force_download_pending 14:34:08.739 [debug] QUERY OK source="settings" db=0.1ms idle=588.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:08.739 [debug] QUERY OK source="settings" db=0.0ms idle=93.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:08.739 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:34:08.740 [error] #PID<0.4256.0> running PinchflatWeb.Endpoint (connection #PID<0.4255.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/force_download_pending ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4255.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_download_pending", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35498}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4256.0>, params: %{}, path_info: ["sources", "1", "force_download_pending"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/force_download_pending", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU53QPu1u2Ya-0AAEui"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4255.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_download_pending", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35498}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_download_pending (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4255.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_download_pending", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35498}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSzNPYmRHZVpXSS03cVk0Y2NPNG9mWlFM.hWJkSHab_nnX7UMoz4jDfmHRi1_HgFnNE14TvO1NznQ", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", b (truncated) 14:34:09.472 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ehw07lXL1AY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/b4/38b48f3b82b66a35a2f32b79e2e7229669296dbca053692e95b6f20946db195d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:09.473 [debug] Running yt-dlp command for action: download 14:34:09.473 [debug] QUERY OK source="settings" db=0.1ms idle=827.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:09.473 [debug] QUERY OK source="settings" db=0.1ms idle=827.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:09.473 [debug] QUERY OK source="settings" db=0.2ms idle=734.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:09.474 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ehw07lXL1AY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/be/87/be874b805dfe846fe2406fe3d4fe3a2af46b3a01f9bb4aeb1ce467ca02f51902.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:22.625 [info] {"source":"oban","duration":512,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:28.092 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ehw07lXL1AY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/be/87/be874b805dfe846fe2406fe3d4fe3a2af46b3a01f9bb4aeb1ce467ca02f51902.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:28.113 [debug] Running yt-dlp command for action: download_thumbnail 14:34:28.114 [debug] QUERY OK source="settings" db=0.1ms idle=1468.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:28.114 [debug] QUERY OK source="settings" db=0.2ms idle=1468.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:28.114 [debug] QUERY OK source="settings" db=0.1ms idle=1468.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:28.114 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ehw07lXL1AY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/166/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/1e/81/1e81c29aee31a2d7de28962f6c3657e3163a004cc6e3fee827c77eb54ea0c70c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:30.450 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Ehw07lXL1AY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/166/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/1e/81/1e81c29aee31a2d7de28962f6c3657e3163a004cc6e3fee827c77eb54ea0c70c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:30.451 [debug] QUERY OK db=0.2ms idle=805.3ms begin [] 14:34:30.453 [debug] QUERY OK source="media_items" db=1.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:34:28Z], "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].mp4", [["en", "/downloads/Tiny Desk/2021-04-14 Demi Lovato: Tiny Desk (Home) Concert/Demi Lovato: Tiny Desk (Home) Concert [Ehw07lXL1AY].en.srt"]], ~U[2026-07-24 12:34:30Z], 166] 14:34:30.454 [debug] QUERY OK source="media_metadata" db=1.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/166/metadata.json.gz", "/config/metadata/media_items/166/thumbnail.jpg", 166, ~U[2026-07-24 12:34:30Z], ~U[2026-07-24 12:34:30Z]] 14:34:30.455 [debug] QUERY OK db=0.4ms commit [] 14:34:30.456 [debug] QUERY OK source="media_items" db=1.1ms idle=809.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [144241994, ~U[2026-07-24 12:34:30Z], 166] 14:34:30.456 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:30.457 [info] {"args":{"id":166},"id":114,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":23183354,"event":"job:stop","queue_time":1194272812,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:30.463 [info] {"args":{"id":167},"id":115,"meta":{},"system_time":1784896470463563648,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:30.464 [debug] QUERY OK source="media_items" db=0.3ms idle=283.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" = ?) [167] 14:34:30.464 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:30.464 [debug] QUERY OK source="sources" db=0.2ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:30.465 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:30.465 [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 [167] 14:34:30.465 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [167] 14:34:30.466 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:30.466 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.466 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.467 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:30.467 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.467 [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 [] 14:34:30.467 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.468 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ea/0a/ea0a2c0f7bd54a1f2b638f6a4de078a5c59e222b1e2c52ea085e914f399fbe8f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:32.638 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ea/0a/ea0a2c0f7bd54a1f2b638f6a4de078a5c59e222b1e2c52ea085e914f399fbe8f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:32.639 [debug] Running yt-dlp command for action: download 14:34:32.639 [debug] QUERY OK source="settings" db=0.2ms idle=993.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:32.639 [debug] QUERY OK source="settings" db=0.0ms 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 [] 14:34:32.640 [debug] QUERY OK source="settings" db=0.2ms idle=994.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:32.640 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9e/4f/9e4f38d24a5045c08ecc06d1bf0e2c6465f46d900962e80b37a9c53eef2a2d9b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:35.386 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9e/4f/9e4f38d24a5045c08ecc06d1bf0e2c6465f46d900962e80b37a9c53eef2a2d9b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: unable to download video data: HTTP Error 403: Forbidden 14:34:35.386 [error] yt-dlp download error for media item #167: "ERROR: unable to download video data: HTTP Error 403: Forbidden\n" 14:34:35.388 [debug] QUERY OK source="media_items" db=1.2ms idle=1741.0ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? ["ERROR: unable to download video data: HTTP Error 403: Forbidden\n", ~U[2026-07-24 12:34:35Z], 167] 14:34:35.388 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":167},"id":115,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":4924699,"event":"job:exception","queue_time":1215462861,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:35.395 [info] {"args":{"id":168},"id":116,"meta":{},"system_time":1784896475395774806,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:35.396 [debug] QUERY OK source="media_items" db=0.4ms idle=1208.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" = ?) [168] 14:34:35.396 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:35.397 [debug] QUERY OK source="sources" db=0.2ms idle=206.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:35.398 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:35.398 [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 [168] 14:34:35.399 [debug] QUERY OK source="media_metadata" db=0.3ms idle=3.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [168] 14:34:35.400 [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" = ?) [2] 14:34:35.400 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:35.400 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:35.401 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:35.402 [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 [] 14:34:35.402 [debug] QUERY OK source="settings" db=0.3ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:35.403 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:35.403 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Su6kidaGW_8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5d/ab/5dabf5b46db665935d5092be56e12eb328a28643dfb6dce123b2f29f4f9c22a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:35.965 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=z3ZFoo4-TdU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/47/3f/473f980bfccf1a959138e5b77b91589d6d323c5e6972bc89d758c9ba6467dc86.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:35.969 [debug] Running yt-dlp command for action: download_thumbnail 14:34:35.970 [debug] QUERY OK source="settings" db=0.1ms idle=569.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:35.970 [debug] QUERY OK source="settings" db=0.3ms idle=569.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:35.971 [debug] QUERY OK source="settings" db=0.2ms idle=568.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:35.971 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=z3ZFoo4-TdU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/164/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/ae/09aeb6577d0857e132b7d209fac0f3eeb7dc3b2ceb151df0016f2bb6c609a2fb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:37.672 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Su6kidaGW_8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5d/ab/5dabf5b46db665935d5092be56e12eb328a28643dfb6dce123b2f29f4f9c22a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:37.672 [debug] Running yt-dlp command for action: download 14:34:37.672 [debug] QUERY OK source="settings" db=0.1ms idle=1026.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:37.672 [debug] QUERY OK source="settings" db=0.1ms idle=479.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:37.673 [debug] QUERY OK source="settings" db=0.0ms idle=26.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:37.673 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Su6kidaGW_8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d8/ff/d8ff0d2c05765547a5bf8efb47d6c13418e3865e003758f7d642b1b55ee6927c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:38.315 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=z3ZFoo4-TdU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/164/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/ae/09aeb6577d0857e132b7d209fac0f3eeb7dc3b2ceb151df0016f2bb6c609a2fb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:38.316 [debug] QUERY OK db=0.3ms idle=670.0ms begin [] 14:34:38.318 [debug] QUERY OK source="media_items" db=2.3ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:34:35Z], "/downloads/Tiny Desk/2021-09-03 Rico Nasty: Tiny Desk (Home) Concert/Rico Nasty: Tiny Desk (Home) Concert [z3ZFoo4-TdU].mp4", ~U[2026-07-24 12:34:38Z], 164] 14:34:38.320 [debug] QUERY OK source="media_metadata" db=1.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/164/metadata.json.gz", "/config/metadata/media_items/164/thumbnail.jpg", 164, ~U[2026-07-24 12:34:38Z], ~U[2026-07-24 12:34:38Z]] 14:34:38.321 [debug] QUERY OK db=0.7ms commit [] 14:34:38.323 [debug] QUERY OK source="media_items" db=1.6ms idle=649.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [263538025, ~U[2026-07-24 12:34:38Z], 164] 14:34:38.323 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:38.324 [info] {"args":{"id":164},"id":112,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":59210433,"event":"job:stop","queue_time":1171112762,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:38.331 [info] {"args":{"id":169},"id":117,"meta":{},"system_time":1784896478331432753,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:38.332 [debug] QUERY OK source="media_items" db=0.3ms idle=137.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [169] 14:34:38.332 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:38.332 [debug] QUERY OK source="sources" db=0.2ms idle=10.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:38.333 [debug] QUERY OK source="media_profiles" db=0.2ms idle=9.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:38.333 [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 [169] 14:34:38.335 [debug] QUERY OK source="media_metadata" db=0.0ms idle=3.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [169] 14:34:38.335 [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" = ?) [2] 14:34:38.336 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:38.336 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:38.337 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:38.338 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:38.339 [debug] QUERY OK source="settings" db=0.6ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:38.339 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:38.340 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=W5-yezpcZNU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/29/3e/293eca6d15cf1589c47fbe4df6ba645d4b8adce68c653941db76c5f1f29d4260.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:40.931 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=W5-yezpcZNU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/29/3e/293eca6d15cf1589c47fbe4df6ba645d4b8adce68c653941db76c5f1f29d4260.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:40.932 [debug] Running yt-dlp command for action: download 14:34:40.932 [debug] QUERY OK source="settings" db=0.2ms idle=1286.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:40.933 [debug] QUERY OK source="settings" db=0.2ms idle=1287.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:40.933 [debug] QUERY OK source="settings" db=0.2ms idle=1287.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:40.934 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=W5-yezpcZNU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b1/2e/b12e0d9a94e1f519f2a8c28123955134d3f244fcab08aef2e993f3053cad47ba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:44.999 [info] GET / 14:34:44.999 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:34:45.000 [debug] QUERY OK source="settings" db=0.5ms idle=1353.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:45.000 [debug] QUERY OK source="media_profiles" db=0.0ms idle=797.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:34:45.000 [debug] QUERY OK source="sources" db=0.3ms idle=354.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:34:45.001 [debug] QUERY OK source="media_items" db=0.5ms idle=355.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:34:45.001 [debug] QUERY OK source="media_items" db=0.2ms idle=355.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:34:45.002 [debug] QUERY OK source="settings" db=0.3ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:45.003 [debug] QUERY OK source="settings" db=0.3ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:45.004 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:45.005 [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:34:45.006 [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", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [168, 169] 14:34:45.007 [debug] QUERY OK source="media_items" db=0.1ms 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 (m0."media_filepath" IS NULL)) [] 14:34:45.008 [debug] QUERY OK source="media_items" db=0.5ms idle=3.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:34:45.008 [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" = ?) [2] 14:34:45.011 [debug] QUERY OK source="media_items" db=0.5ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:34:45.011 [debug] QUERY OK source="media_items" db=0.5ms idle=5.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:34:45.012 [debug] QUERY OK source="sources" db=0.4ms idle=4.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:45.014 [info] Sent 200 in 15ms 14:34:50.265 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Su6kidaGW_8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d8/ff/d8ff0d2c05765547a5bf8efb47d6c13418e3865e003758f7d642b1b55ee6927c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:50.271 [debug] Running yt-dlp command for action: download_thumbnail 14:34:50.272 [debug] QUERY OK source="settings" db=0.4ms idle=1626.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:50.273 [debug] QUERY OK source="settings" db=0.4ms idle=1627.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:50.273 [debug] QUERY OK source="settings" db=0.1ms idle=1627.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:50.274 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Su6kidaGW_8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/168/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/08/4d/084da022752e6f274d4493f3c2f58b1c3ca157d4a1e984ea77d62d5574714dd8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:52.544 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Su6kidaGW_8 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/168/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/08/4d/084da022752e6f274d4493f3c2f58b1c3ca157d4a1e984ea77d62d5574714dd8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:52.545 [debug] QUERY OK db=0.2ms idle=1331.1ms begin [] 14:34:52.546 [debug] QUERY OK source="media_items" db=1.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:34:50Z], "/downloads/Tiny Desk/2021-03-17 Justin Bieber: Tiny Desk (Home) Concert/Justin Bieber: Tiny Desk (Home) Concert [Su6kidaGW_8].mp4", ~U[2026-07-24 12:34:52Z], 168] 14:34:52.547 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/168/metadata.json.gz", "/config/metadata/media_items/168/thumbnail.jpg", 168, ~U[2026-07-24 12:34:52Z], ~U[2026-07-24 12:34:52Z]] 14:34:52.548 [debug] QUERY OK db=0.2ms commit [] 14:34:52.549 [debug] QUERY OK source="media_items" db=1.2ms idle=902.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [309354595, ~U[2026-07-24 12:34:52Z], 168] 14:34:52.549 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:52.550 [info] {"args":{"id":168},"id":116,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":17153968,"event":"job:stop","queue_time":1218394778,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:52.556 [info] {"args":{"id":170},"id":118,"meta":{},"system_time":1784896492556665632,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:52.557 [debug] QUERY OK source="media_items" db=0.3ms idle=341.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" = ?) [170] 14:34:52.557 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:52.558 [debug] QUERY OK source="sources" db=0.3ms idle=9.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:52.558 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:52.559 [debug] QUERY OK source="media_items" db=0.4ms 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 [170] 14:34:52.560 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [170] 14:34:52.561 [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" = ?) [2] 14:34:52.561 [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 [] 14:34:52.561 [debug] QUERY OK source="settings" db=0.1ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:52.561 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:52.562 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:52.562 [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 [] 14:34:52.563 [debug] QUERY OK source="settings" db=0.5ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:52.563 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=F4neLJQC1_E --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2f/69/2f694a513f457da0d5101f86681b826342fd270f6ec49413b05e32e7975a4565.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:52.626 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:54.063 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:34:54.817 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=F4neLJQC1_E --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2f/69/2f694a513f457da0d5101f86681b826342fd270f6ec49413b05e32e7975a4565.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:54.817 [debug] Running yt-dlp command for action: download 14:34:54.818 [debug] QUERY OK source="settings" db=0.3ms idle=1172.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:54.819 [debug] QUERY OK source="settings" db=0.5ms idle=1172.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:54.819 [debug] QUERY OK source="settings" db=0.2ms idle=1173.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:54.819 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=F4neLJQC1_E --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/27/8a/278ae3046fe88479b73bde5a20d8ef15667fe16d74a15eea0821485400ed70b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:56.827 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=W5-yezpcZNU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b1/2e/b12e0d9a94e1f519f2a8c28123955134d3f244fcab08aef2e993f3053cad47ba.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:56.832 [debug] Running yt-dlp command for action: download_thumbnail 14:34:56.833 [debug] QUERY OK source="settings" db=0.1ms idle=1187.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:56.834 [debug] QUERY OK source="settings" db=0.3ms idle=611.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:56.834 [debug] QUERY OK source="settings" db=0.1ms idle=188.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:56.834 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=W5-yezpcZNU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/169/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8c/ca/8ccac39dfe921b65e2b2e0cc8df207d069dec99ecf6a9bdd672f2cb954f57aff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:59.372 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=W5-yezpcZNU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/169/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/8c/ca/8ccac39dfe921b65e2b2e0cc8df207d069dec99ecf6a9bdd672f2cb954f57aff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:34:59.373 [debug] QUERY OK db=0.1ms idle=727.2ms begin [] 14:34:59.374 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:34:56Z], "/downloads/Tiny Desk/2021-01-28 Miley Cyrus: Tiny Desk (Home) Concert/Miley Cyrus: Tiny Desk (Home) Concert [W5-yezpcZNU].mp4", ~U[2026-07-24 12:34:59Z], 169] 14:34:59.375 [debug] QUERY OK source="media_metadata" db=0.5ms 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/169/metadata.json.gz", "/config/metadata/media_items/169/thumbnail.jpg", 169, ~U[2026-07-24 12:34:59Z], ~U[2026-07-24 12:34:59Z]] 14:34:59.375 [debug] QUERY OK db=0.3ms commit [] 14:34:59.377 [debug] QUERY OK source="media_items" db=1.2ms idle=730.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [161817817, ~U[2026-07-24 12:34:59Z], 169] 14:34:59.377 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:59.377 [info] {"args":{"id":169},"id":117,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21046069,"event":"job:stop","queue_time":1219330778,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:59.384 [info] {"args":{"id":171},"id":119,"meta":{},"system_time":1784896499384343329,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:59.384 [debug] QUERY OK source="media_items" db=0.3ms idle=157.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" = ?) [171] 14:34:59.385 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:59.385 [debug] QUERY OK source="sources" db=0.2ms idle=9.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:34:59.385 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:59.386 [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 [171] 14:34:59.387 [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" = ?) [171] 14:34:59.387 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:34:59.388 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:59.388 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:59.389 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:59.390 [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:34:59.391 [debug] QUERY OK source="settings" db=0.5ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:59.391 [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 [] 14:34:59.391 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4sZ2_aGsLKU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fa/20/fa20dff1cda7e23906fa1dc379ab3e6aec200a39e4e9d8731a9ea3cc40ee7e91.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:00.550 [info] {"source":"oban","duration":199,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:35:01.883 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4sZ2_aGsLKU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fa/20/fa20dff1cda7e23906fa1dc379ab3e6aec200a39e4e9d8731a9ea3cc40ee7e91.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:01.884 [debug] Running yt-dlp command for action: download 14:35:01.884 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1233.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:01.884 [debug] QUERY OK source="settings" db=0.0ms idle=1233.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:01.885 [debug] QUERY OK source="settings" db=0.3ms idle=1233.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:01.885 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4sZ2_aGsLKU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0d/15/0d15676044971f52f0e6a277af526e6bf53b572fe436721f626b0f8f9e895073.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:06.158 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=F4neLJQC1_E --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/27/8a/278ae3046fe88479b73bde5a20d8ef15667fe16d74a15eea0821485400ed70b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:06.179 [debug] Running yt-dlp command for action: download_thumbnail 14:35:06.180 [debug] QUERY OK source="settings" db=0.1ms idle=941.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:06.181 [debug] QUERY OK source="settings" db=0.4ms idle=530.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:06.181 [debug] QUERY OK source="settings" db=0.2ms idle=530.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:06.181 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=F4neLJQC1_E --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/170/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4c/9e/4c9e2a351013bbee5415b4590888261f9ac23122d7159a69bab403de0ae6fe99.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:08.755 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=F4neLJQC1_E --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/170/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/4c/9e/4c9e2a351013bbee5415b4590888261f9ac23122d7159a69bab403de0ae6fe99.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:08.756 [debug] QUERY OK db=0.4ms idle=1105.3ms begin [] 14:35:08.758 [debug] QUERY OK source="media_items" db=1.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:35:06Z], "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].mp4", [["en", "/downloads/Tiny Desk/2020-12-04 Dua Lipa: Tiny Desk (Home) Concert/Dua Lipa: Tiny Desk (Home) Concert [F4neLJQC1_E].en.srt"]], ~U[2026-07-24 12:35:08Z], 170] 14:35:08.759 [debug] QUERY OK source="media_metadata" db=1.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/170/metadata.json.gz", "/config/metadata/media_items/170/thumbnail.jpg", 170, ~U[2026-07-24 12:35:08Z], ~U[2026-07-24 12:35:08Z]] 14:35:08.760 [debug] QUERY OK db=0.4ms commit [] 14:35:08.762 [debug] QUERY OK source="media_items" db=1.2ms idle=1109.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [265312342, ~U[2026-07-24 12:35:08Z], 170] 14:35:08.762 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:08.762 [info] {"args":{"id":170},"id":118,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16205514,"event":"job:stop","queue_time":1231555809,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:08.768 [info] {"args":{"id":172},"id":120,"meta":{},"system_time":1784896508768407882,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:08.768 [debug] QUERY OK source="media_items" db=0.1ms idle=523.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" = ?) [172] 14:35:08.769 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:08.769 [debug] QUERY OK source="sources" db=0.2ms idle=8.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:35:08.769 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:35:08.770 [debug] QUERY OK source="media_items" db=0.2ms idle=7.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [172] 14:35:08.771 [debug] QUERY OK source="media_metadata" db=0.4ms idle=2.4ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [172] 14:35:08.772 [debug] QUERY OK source="media_profiles" db=0.8ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:35:08.772 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:08.773 [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 [] 14:35:08.773 [debug] Running yt-dlp command for action: get_downloadable_status 14:35:08.774 [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 [] 14:35:08.774 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:08.774 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:08.774 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=C24hUt18RWY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/19/64/1964d4a72410125804bdeda0f620bf11ba70a3208df6d657e963efdbd1f3c362.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:10.737 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=C24hUt18RWY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/19/64/1964d4a72410125804bdeda0f620bf11ba70a3208df6d657e963efdbd1f3c362.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:10.738 [debug] Running yt-dlp command for action: download 14:35:10.738 [debug] QUERY OK source="settings" db=0.2ms idle=490.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.739 [debug] QUERY OK source="settings" db=0.2ms idle=87.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.739 [debug] QUERY OK source="settings" db=0.2ms idle=88.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:10.739 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=C24hUt18RWY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bb/f0/bbf0e84a584ddbf0466981f2f8ce408a5b67286015c998b5b5bf16317fc90937.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:22.628 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:22.809 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=C24hUt18RWY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bb/f0/bbf0e84a584ddbf0466981f2f8ce408a5b67286015c998b5b5bf16317fc90937.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:22.817 [debug] Running yt-dlp command for action: download_thumbnail 14:35:22.818 [debug] QUERY OK source="settings" db=0.1ms idle=554.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:22.819 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=190.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:22.820 [debug] QUERY OK source="settings" db=0.5ms idle=168.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:22.820 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=C24hUt18RWY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/172/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ba/07/ba07a893c9236fa588540ec6e9f53acd5fcb64d8baf32e69c8d1af53d230456a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:24.431 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4sZ2_aGsLKU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/0d/15/0d15676044971f52f0e6a277af526e6bf53b572fe436721f626b0f8f9e895073.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:24.436 [debug] Running yt-dlp command for action: download_thumbnail 14:35:24.437 [debug] QUERY OK source="settings" db=0.2ms idle=1618.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:24.437 [debug] QUERY OK source="settings" db=0.2ms idle=1617.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:24.438 [debug] QUERY OK source="settings" db=0.4ms idle=1617.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:24.438 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4sZ2_aGsLKU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/171/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d8/a2/d8a2befe3032bd654b763fb5f5c95b3966a2926b3f597a12d051b2a26b370076.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:25.282 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=C24hUt18RWY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/172/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ba/07/ba07a893c9236fa588540ec6e9f53acd5fcb64d8baf32e69c8d1af53d230456a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:25.283 [debug] QUERY OK db=0.5ms idle=845.6ms begin [] 14:35:25.284 [debug] QUERY OK source="media_items" db=1.2ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:35:22Z], "/downloads/Tiny Desk/2020-08-24 Tame Impala: Tiny Desk (Home) Concert/Tame Impala: Tiny Desk (Home) Concert [C24hUt18RWY].mp4", ~U[2026-07-24 12:35:25Z], 172] 14:35:25.285 [debug] QUERY OK source="media_metadata" db=0.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/172/metadata.json.gz", "/config/metadata/media_items/172/thumbnail.jpg", 172, ~U[2026-07-24 12:35:25Z], ~U[2026-07-24 12:35:25Z]] 14:35:25.286 [debug] QUERY OK db=0.3ms commit [] 14:35:25.287 [debug] QUERY OK source="media_items" db=1.0ms idle=848.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [298609998, ~U[2026-07-24 12:35:25Z], 172] 14:35:25.287 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:25.288 [info] {"args":{"id":172},"id":120,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16519534,"event":"job:stop","queue_time":1242767805,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:25.294 [info] {"args":{"id":173},"id":121,"meta":{},"system_time":1784896525294553759,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:25.295 [debug] QUERY OK source="media_items" db=0.2ms idle=25.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" = ?) [173] 14:35:25.295 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:25.295 [debug] QUERY OK source="sources" db=0.2ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:35:25.296 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.5ms idle=8.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:35:25.297 [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 [173] 14:35:25.299 [debug] QUERY OK source="media_metadata" db=0.2ms queue=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" = ?) [173] 14:35:25.299 [debug] QUERY OK source="media_profiles" db=0.4ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:35:25.300 [debug] QUERY OK source="settings" db=0.8ms 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:35:25.301 [debug] QUERY OK source="settings" db=0.0ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:25.301 [debug] Running yt-dlp command for action: get_downloadable_status 14:35:25.302 [debug] QUERY OK source="settings" db=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:25.302 [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 [] 14:35:25.303 [debug] QUERY OK source="settings" db=0.3ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:25.303 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=AzUHNjKMeV4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/59/36/593692e5f978735f7d13ba8b69cf16fadadd0614c01fc978f1cafeceb442344b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:26.908 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4sZ2_aGsLKU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/171/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/d8/a2/d8a2befe3032bd654b763fb5f5c95b3966a2926b3f597a12d051b2a26b370076.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:26.909 [debug] QUERY OK db=0.0ms idle=638.5ms begin [] 14:35:26.910 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:35:24Z], "/downloads/Tiny Desk/2020-08-26 Billie Eilish: Tiny Desk (Home) Concert/Billie Eilish: Tiny Desk (Home) Concert [4sZ2_aGsLKU].mp4", ~U[2026-07-24 12:35:26Z], 171] 14:35:26.913 [debug] QUERY OK source="media_metadata" db=3.1ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/171/metadata.json.gz", "/config/metadata/media_items/171/thumbnail.jpg", 171, ~U[2026-07-24 12:35:26Z], ~U[2026-07-24 12:35:26Z]] 14:35:26.913 [debug] QUERY OK db=0.3ms commit [] 14:35:26.915 [debug] QUERY OK source="media_items" db=1.0ms idle=263.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [147294311, ~U[2026-07-24 12:35:26Z], 171] 14:35:26.915 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:26.915 [info] {"args":{"id":171},"id":119,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":27531211,"event":"job:stop","queue_time":1236383774,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:26.922 [info] {"args":{"id":174},"id":122,"meta":{},"system_time":1784896526922454286,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:26.922 [debug] QUERY OK source="media_items" db=0.1ms idle=271.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" = ?) [174] 14:35:26.923 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:26.923 [debug] QUERY OK source="sources" db=0.2ms idle=9.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:35:26.924 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.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" = ?) [2] 14:35:26.924 [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 [174] 14:35:26.925 [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" = ?) [174] 14:35:26.925 [debug] QUERY OK source="media_profiles" db=0.2ms 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" = ?) [2] 14:35:26.925 [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 [] 14:35:26.926 [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 [] 14:35:26.926 [debug] Running yt-dlp command for action: get_downloadable_status 14:35:26.926 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:26.927 [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 [] 14:35:26.927 [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 [] 14:35:26.927 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Gh9pCl1cL8A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8a/c8/8ac87196f39c49797ddae2bbcfbfd2f402b6e4112f90169a8235156b11491b3d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:27.788 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=AzUHNjKMeV4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/59/36/593692e5f978735f7d13ba8b69cf16fadadd0614c01fc978f1cafeceb442344b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:27.789 [debug] Running yt-dlp command for action: download 14:35:27.789 [debug] QUERY OK source="settings" db=0.3ms idle=863.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:27.790 [debug] QUERY OK source="settings" db=0.2ms idle=862.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:27.790 [debug] QUERY OK source="settings" db=0.2ms idle=863.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:27.790 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=AzUHNjKMeV4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/40/19/401975aed6ef643c17aecf3051dbab2d2edc7e1803cbca588822f5872345e3df.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:29.025 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Gh9pCl1cL8A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/8a/c8/8ac87196f39c49797ddae2bbcfbfd2f402b6e4112f90169a8235156b11491b3d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:29.025 [debug] Running yt-dlp command for action: download 14:35:29.026 [debug] QUERY OK source="settings" db=0.1ms idle=1236.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:29.026 [debug] QUERY OK source="settings" db=0.1ms idle=1236.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:29.026 [debug] QUERY OK source="settings" db=0.0ms idle=1236.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:29.026 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Gh9pCl1cL8A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ca/f6/caf6c4e9e5a277e29a1704ac0866636cd77d73958b9c994abdf9b4a2e301b53e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:39.327 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=AzUHNjKMeV4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/40/19/401975aed6ef643c17aecf3051dbab2d2edc7e1803cbca588822f5872345e3df.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:39.352 [debug] Running yt-dlp command for action: download_thumbnail 14:35:39.353 [debug] QUERY OK source="settings" db=0.1ms idle=702.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:39.353 [debug] QUERY OK source="settings" db=0.1ms idle=702.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:39.354 [debug] QUERY OK source="settings" db=0.1ms idle=703.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:39.354 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=AzUHNjKMeV4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/173/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c7/e4/c7e4d8a77ecec4c98d2712a40c8ff3742bc0d724cce6a68af0b26f6641e472d7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:41.713 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=AzUHNjKMeV4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/173/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/c7/e4/c7e4d8a77ecec4c98d2712a40c8ff3742bc0d724cce6a68af0b26f6641e472d7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:41.714 [debug] QUERY OK db=0.3ms idle=1063.0ms begin [] 14:35:41.715 [debug] QUERY OK source="media_items" db=0.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:35:39Z], "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].mp4", [["en", "/downloads/Tiny Desk/2025-07-09 Wet Leg: Tiny Desk Concert/Wet Leg: Tiny Desk Concert [AzUHNjKMeV4].en.srt"]], ~U[2026-07-24 12:35:41Z], 173] 14:35:41.716 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/173/metadata.json.gz", "/config/metadata/media_items/173/thumbnail.jpg", 173, ~U[2026-07-24 12:35:41Z], ~U[2026-07-24 12:35:41Z]] 14:35:41.725 [debug] QUERY OK db=8.9ms commit [] 14:35:41.728 [debug] QUERY OK source="media_items" db=2.2ms idle=1075.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [299689026, ~U[2026-07-24 12:35:41Z], 173] 14:35:41.728 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:41.729 [info] {"args":{"id":173},"id":121,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16434071,"event":"job:stop","queue_time":1257293829,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:41.735 [info] {"args":{"id":175},"id":123,"meta":{},"system_time":1784896541735431287,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:41.736 [debug] QUERY OK source="media_items" db=0.4ms idle=443.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [175] 14:35:41.736 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:41.736 [debug] QUERY OK source="sources" db=0.2ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:35:41.737 [debug] QUERY OK source="media_profiles" db=0.1ms idle=8.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:35:41.737 [debug] QUERY OK source="media_items" db=0.3ms idle=8.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [175] 14:35:41.738 [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" = ?) [175] 14:35:41.738 [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" = ?) [2] 14:35:41.738 [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 [] 14:35:41.739 [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 [] 14:35:41.739 [debug] Running yt-dlp command for action: get_downloadable_status 14:35:41.739 [debug] QUERY OK source="settings" db=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:41.740 [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 [] 14:35:41.740 [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 [] 14:35:41.740 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kfUcI82SZv4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/05/0a058fa72796938dfdfcebbc556fe9d58a93b5a7ca0e16d5294266db305947fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:45.843 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kfUcI82SZv4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/05/0a058fa72796938dfdfcebbc556fe9d58a93b5a7ca0e16d5294266db305947fd.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:45.843 [debug] Running yt-dlp command for action: download 14:35:45.844 [debug] QUERY OK source="settings" db=0.6ms idle=542.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:45.845 [debug] QUERY OK source="settings" db=0.6ms idle=193.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:45.845 [debug] QUERY OK source="settings" db=0.6ms idle=194.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:45.846 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kfUcI82SZv4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9f/5d/9f5d94066d934cfb334fb55a8244117d732d9d81d64ec3f671752aee5221e686.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:45.920 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Gh9pCl1cL8A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ca/f6/caf6c4e9e5a277e29a1704ac0866636cd77d73958b9c994abdf9b4a2e301b53e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:45.926 [debug] Running yt-dlp command for action: download_thumbnail 14:35:45.926 [debug] QUERY OK source="settings" db=0.2ms idle=275.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:45.927 [debug] QUERY OK source="settings" db=0.3ms idle=276.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:45.927 [debug] QUERY OK source="settings" db=0.3ms idle=83.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:45.928 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Gh9pCl1cL8A --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/174/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ad/01/ad01889e6486b2572777cee772739117e888a347b9c9272294615212c23b2082.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:48.247 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Gh9pCl1cL8A --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/174/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ad/01/ad01889e6486b2572777cee772739117e888a347b9c9272294615212c23b2082.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:48.248 [debug] QUERY OK db=0.1ms queue=0.1ms idle=944.7ms begin [] 14:35:48.249 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:35:45Z], "/downloads/Tiny Desk/2025-07-24 PUP: Tiny Desk Concert/PUP: Tiny Desk Concert [Gh9pCl1cL8A].mp4", ~U[2026-07-24 12:35:48Z], 174] 14:35:48.250 [debug] QUERY OK source="media_metadata" db=0.5ms 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/174/metadata.json.gz", "/config/metadata/media_items/174/thumbnail.jpg", 174, ~U[2026-07-24 12:35:48Z], ~U[2026-07-24 12:35:48Z]] 14:35:48.250 [debug] QUERY OK db=0.2ms commit [] 14:35:48.251 [debug] QUERY OK source="media_items" db=1.1ms idle=599.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [323270941, ~U[2026-07-24 12:35:48Z], 174] 14:35:48.252 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:48.252 [info] {"args":{"id":174},"id":122,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21329595,"event":"job:stop","queue_time":1256921800,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:48.258 [info] {"args":{"id":176},"id":124,"meta":{},"system_time":1784896548258460899,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:35:48.258 [debug] QUERY OK source="media_items" db=0.1ms idle=607.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" = ?) [176] 14:35:48.259 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:35:48.259 [debug] QUERY OK source="sources" db=0.1ms idle=8.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:35:48.259 [debug] QUERY OK source="media_profiles" db=0.1ms 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" = ?) [2] 14:35:48.260 [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 [176] 14:35:48.261 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [176] 14:35:48.261 [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" = ?) [2] 14:35:48.261 [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 [] 14:35:48.261 [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 [] 14:35:48.262 [debug] Running yt-dlp command for action: get_downloadable_status 14:35:48.262 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:48.262 [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 [] 14:35:48.263 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:48.263 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=56fJw8HUGuU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/b9/4db9128bd04bb46e15ccfc43a55e3cda157fbfdf523e0e9f3769f990d95d2068.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:50.409 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=56fJw8HUGuU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/b9/4db9128bd04bb46e15ccfc43a55e3cda157fbfdf523e0e9f3769f990d95d2068.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:35:50.410 [debug] Running yt-dlp command for action: download 14:35:50.410 [debug] QUERY OK source="settings" db=0.1ms idle=759.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:50.410 [debug] QUERY OK source="settings" db=0.3ms idle=759.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:50.411 [debug] QUERY OK source="settings" db=0.3ms idle=760.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:35:50.411 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=56fJw8HUGuU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fd/ff/fdff6bf4d8a725ec2f62242d82a2f54fa16cebb66c481aec4378918acba4d290.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:35:52.629 [info] {"source":"oban","duration":1002,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:54.456 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:36:00.551 [info] {"source":"oban","duration":246,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:36:04.999 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=56fJw8HUGuU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fd/ff/fdff6bf4d8a725ec2f62242d82a2f54fa16cebb66c481aec4378918acba4d290.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:05.029 [debug] Running yt-dlp command for action: download_thumbnail 14:36:05.031 [debug] QUERY OK source="settings" db=0.4ms idle=1370.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:05.032 [debug] QUERY OK source="settings" db=0.6ms idle=1370.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:05.032 [debug] QUERY OK source="settings" db=0.4ms idle=1371.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:05.033 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=56fJw8HUGuU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/176/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e2/60/e26019088c30c9734dd9b9298227691b9a44fa3e4b8928a3ae264910c576db90.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:07.062 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kfUcI82SZv4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9f/5d/9f5d94066d934cfb334fb55a8244117d732d9d81d64ec3f671752aee5221e686.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:07.088 [debug] Running yt-dlp command for action: download_thumbnail 14:36:07.089 [debug] QUERY OK source="settings" db=0.3ms idle=1427.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:07.089 [debug] QUERY OK source="settings" db=0.6ms idle=754.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:07.090 [debug] QUERY OK source="settings" db=0.4ms idle=429.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:07.090 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kfUcI82SZv4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/175/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0a/7e/0a7ebba1a5b390d9b5d3245f580220e07ca6bda9905a007b888ec7ef4da6964d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:07.529 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=56fJw8HUGuU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/176/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e2/60/e26019088c30c9734dd9b9298227691b9a44fa3e4b8928a3ae264910c576db90.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:07.533 [debug] QUERY OK db=1.0ms queue=0.6ms idle=870.6ms begin [] 14:36:07.537 [debug] QUERY OK source="media_items" db=3.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:36:05Z], "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].mp4", [["en", "/downloads/Tiny Desk/2025-09-05 PinkPantheress: Tiny Desk Concert/PinkPantheress: Tiny Desk Concert [56fJw8HUGuU].en.srt"]], ~U[2026-07-24 12:36:07Z], 176] 14:36:07.541 [debug] QUERY OK source="media_metadata" db=3.7ms 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/176/metadata.json.gz", "/config/metadata/media_items/176/thumbnail.jpg", 176, ~U[2026-07-24 12:36:07Z], ~U[2026-07-24 12:36:07Z]] 14:36:07.541 [debug] QUERY OK db=0.4ms commit [] 14:36:07.565 [debug] QUERY OK source="media_items" db=23.1ms idle=453.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [378484264, ~U[2026-07-24 12:36:07Z], 176] 14:36:07.568 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:07.590 [info] {"args":{"id":176},"id":124,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":19309902,"event":"job:stop","queue_time":1273257858,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:07.597 [info] {"args":{"id":177},"id":125,"meta":{},"system_time":1784896567597709001,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:07.598 [debug] QUERY OK source="media_items" db=0.3ms idle=257.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [177] 14:36:07.598 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:07.598 [debug] QUERY OK source="sources" db=0.1ms idle=56.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:36:07.599 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=33.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" = ?) [2] 14:36:07.599 [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 [177] 14:36:07.600 [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" = ?) [177] 14:36:07.601 [debug] QUERY OK source="media_profiles" db=0.5ms 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" = ?) [2] 14:36:07.601 [debug] QUERY OK source="settings" db=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:07.602 [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 [] 14:36:07.602 [debug] Running yt-dlp command for action: get_downloadable_status 14:36:07.603 [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 [] 14:36:07.604 [debug] QUERY OK source="settings" db=0.2ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:07.604 [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 [] 14:36:07.604 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ylL-SSRDyJc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/06/4606c4b44dfb1372588f814fe5ea846f52baab7dd7308f39ce9b7b96d235928b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:09.930 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=kfUcI82SZv4 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/175/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/0a/7e/0a7ebba1a5b390d9b5d3245f580220e07ca6bda9905a007b888ec7ef4da6964d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:09.932 [debug] QUERY OK db=0.6ms idle=1270.7ms begin [] 14:36:09.935 [debug] QUERY OK source="media_items" db=3.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:36:07Z], "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].mp4", [["en", "/downloads/Tiny Desk/2025-06-27 Rico Nasty: Tiny Desk Concert/Rico Nasty: Tiny Desk Concert [kfUcI82SZv4].en.srt"]], ~U[2026-07-24 12:36:09Z], 175] 14:36:09.937 [debug] QUERY OK source="media_metadata" db=1.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/175/metadata.json.gz", "/config/metadata/media_items/175/thumbnail.jpg", 175, ~U[2026-07-24 12:36:09Z], ~U[2026-07-24 12:36:09Z]] 14:36:09.938 [debug] QUERY OK db=0.2ms commit [] 14:36:09.939 [debug] QUERY OK source="media_items" db=1.3ms idle=1277.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [376059238, ~U[2026-07-24 12:36:09Z], 175] 14:36:09.940 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:09.941 [info] {"args":{"id":175},"id":123,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":28205019,"event":"job:stop","queue_time":1269734780,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:09.947 [info] {"args":{"id":178},"id":126,"meta":{},"system_time":1784896569947699829,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:09.948 [debug] QUERY OK source="media_items" db=0.5ms idle=604.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [178] 14:36:09.948 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:09.949 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=10.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:36:09.950 [debug] QUERY OK source="media_profiles" db=0.7ms idle=9.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:36:09.951 [debug] QUERY OK source="media_items" db=0.4ms idle=9.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [178] 14:36:09.952 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.7ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [178] 14:36:09.953 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:36:09.954 [debug] QUERY OK source="settings" db=0.5ms 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:36:09.954 [debug] QUERY OK source="settings" db=0.3ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:09.955 [debug] Running yt-dlp command for action: get_downloadable_status 14:36:09.956 [debug] QUERY OK source="settings" db=0.3ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:09.957 [debug] QUERY OK source="settings" db=0.5ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:09.958 [debug] QUERY OK source="settings" db=0.4ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:09.958 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Jg9uwVvOy0E --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/67/ab67b854ed09a9a5a544d3b7f3d650a3c780639f982b9eaffd7396fb248a8072.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:09.966 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ylL-SSRDyJc --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/06/4606c4b44dfb1372588f814fe5ea846f52baab7dd7308f39ce9b7b96d235928b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:09.966 [debug] Running yt-dlp command for action: download 14:36:09.967 [debug] QUERY OK source="settings" db=0.3ms idle=12.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:09.967 [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 [] 14:36:09.968 [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 [] 14:36:09.968 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ylL-SSRDyJc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/aa/a1/aaa1d9860e48ddcaf72b2e67677f1dd95adc8fc75005700544cdcb7f7912ba9f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:12.269 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Jg9uwVvOy0E --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ab/67/ab67b854ed09a9a5a544d3b7f3d650a3c780639f982b9eaffd7396fb248a8072.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:12.270 [debug] Running yt-dlp command for action: download 14:36:12.270 [debug] QUERY OK source="settings" db=0.4ms idle=923.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:12.271 [debug] QUERY OK source="settings" db=0.5ms idle=609.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:12.271 [debug] QUERY OK source="settings" db=0.5ms idle=610.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:12.272 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Jg9uwVvOy0E --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/86/54/8654a5a04eec4834ec7c12fc678b9ff72658bd6d58422fc9393b5dc2e71fa143.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:18.474 [info] GET / 14:36:18.474 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:36:18.474 [debug] QUERY OK source="settings" db=0.1ms idle=813.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:18.474 [debug] QUERY OK source="media_profiles" db=0.0ms idle=813.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:36:18.475 [debug] QUERY OK source="sources" db=0.0ms idle=814.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:36:18.475 [debug] QUERY OK source="media_items" db=0.7ms idle=814.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:36:18.476 [debug] QUERY OK source="media_items" db=0.1ms idle=120.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:36:18.476 [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 [] 14:36:18.476 [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 [] 14:36:18.476 [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 [] 14:36:18.477 [debug] QUERY OK source="tasks" db=0.2ms idle=1.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:36:18.478 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at", m0."id" FROM "media_items" AS m0 WHERE (m0."id" IN (?,?)) [177, 178] 14:36:18.479 [debug] QUERY OK source="media_items" db=0.1ms 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:36:18.479 [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:36:18.480 [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" = ?) [2] 14:36:18.482 [debug] QUERY OK source="media_items" db=0.2ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:36:18.483 [debug] QUERY OK source="media_items" db=0.6ms 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:36:18.483 [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" = ?) [2] 14:36:18.485 [info] Sent 200 in 10ms 14:36:22.379 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ylL-SSRDyJc --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/aa/a1/aaa1d9860e48ddcaf72b2e67677f1dd95adc8fc75005700544cdcb7f7912ba9f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:22.400 [debug] Running yt-dlp command for action: download_thumbnail 14:36:22.401 [debug] QUERY OK source="settings" db=0.2ms idle=740.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:22.401 [debug] QUERY OK source="settings" db=0.2ms idle=740.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:22.402 [debug] QUERY OK source="settings" db=0.1ms idle=741.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:22.402 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ylL-SSRDyJc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/177/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e9/d7/e9d7e400472709ecf9d0865eafb2075ce7e253a21aff1446694cdd7f320cab36.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:22.631 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:24.908 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ylL-SSRDyJc --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/177/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e9/d7/e9d7e400472709ecf9d0865eafb2075ce7e253a21aff1446694cdd7f320cab36.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:24.909 [debug] QUERY OK db=0.7ms idle=1247.4ms begin [] 14:36:24.911 [debug] QUERY OK source="media_items" db=2.3ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:36:22Z], "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].mp4", [["en", "/downloads/Tiny Desk/2025-09-10 Turnstile: Tiny Desk Concert/Turnstile: Tiny Desk Concert [ylL-SSRDyJc].en.srt"]], ~U[2026-07-24 12:36:24Z], 177] 14:36:24.913 [debug] QUERY OK source="media_metadata" db=1.5ms 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/177/metadata.json.gz", "/config/metadata/media_items/177/thumbnail.jpg", 177, ~U[2026-07-24 12:36:24Z], ~U[2026-07-24 12:36:24Z]] 14:36:24.913 [debug] QUERY OK db=0.3ms commit [] 14:36:24.916 [debug] QUERY OK source="media_items" db=2.7ms idle=1253.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [305508125, ~U[2026-07-24 12:36:24Z], 177] 14:36:24.917 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:24.917 [info] {"args":{"id":177},"id":125,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":17319443,"event":"job:stop","queue_time":1289596752,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:24.924 [info] {"args":{"id":179},"id":127,"meta":{},"system_time":1784896584924462129,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:24.925 [debug] QUERY OK source="media_items" db=0.3ms idle=559.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [179] 14:36:24.925 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:24.926 [debug] QUERY OK source="sources" db=0.5ms idle=11.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:36:24.926 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 14:36:24.927 [debug] QUERY OK source="media_items" db=0.6ms 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 [179] 14:36:24.929 [debug] QUERY OK source="media_metadata" db=0.3ms idle=4.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [179] 14:36:24.930 [debug] QUERY OK source="media_profiles" db=0.7ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:36:24.930 [debug] QUERY OK source="settings" db=0.5ms idle=4.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:24.931 [debug] QUERY OK source="settings" db=0.3ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:24.931 [debug] Running yt-dlp command for action: get_downloadable_status 14:36:24.932 [debug] QUERY OK source="settings" db=0.2ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:24.932 [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:36:24.933 [debug] QUERY OK source="settings" db=0.2ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:24.933 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wxaXWSVhRXU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/55/135541844f7ccdfdbf245f487f78c0abcf9e6bf630c44bdcb49d3e5192960b01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:25.579 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Jg9uwVvOy0E --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/86/54/8654a5a04eec4834ec7c12fc678b9ff72658bd6d58422fc9393b5dc2e71fa143.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:25.613 [debug] Running yt-dlp command for action: download_thumbnail 14:36:25.615 [debug] QUERY OK source="settings" db=0.5ms idle=683.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:25.615 [debug] QUERY OK source="settings" db=0.2ms idle=682.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:25.615 [debug] QUERY OK source="settings" db=0.2ms idle=682.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:25.616 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Jg9uwVvOy0E --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/178/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e6/c1/e6c19d6b33767ec2dc0c5bb670bdf65e91bb8a19bf939a7575053e06ee670f78.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:27.406 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wxaXWSVhRXU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/55/135541844f7ccdfdbf245f487f78c0abcf9e6bf630c44bdcb49d3e5192960b01.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:27.406 [debug] Running yt-dlp command for action: download 14:36:27.407 [debug] QUERY OK source="settings" db=0.1ms idle=745.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:27.407 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=746.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:27.408 [debug] QUERY OK source="settings" db=0.5ms idle=746.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:27.408 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wxaXWSVhRXU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/18/94/18940832e85d21b53b5042dac541e113ddecabe07434f8af78a6a8de34b452e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:28.041 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=Jg9uwVvOy0E --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/178/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e6/c1/e6c19d6b33767ec2dc0c5bb670bdf65e91bb8a19bf939a7575053e06ee670f78.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:28.042 [debug] QUERY OK db=0.5ms idle=1381.4ms begin [] 14:36:28.046 [debug] QUERY OK source="media_items" db=2.9ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:36:25Z], "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].mp4", [["en", "/downloads/Tiny Desk/2025-10-29 Oklou: Tiny Desk Concert/Oklou: Tiny Desk Concert [Jg9uwVvOy0E].en.srt"]], ~U[2026-07-24 12:36:28Z], 178] 14:36:28.047 [debug] QUERY OK source="media_metadata" db=1.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/178/metadata.json.gz", "/config/metadata/media_items/178/thumbnail.jpg", 178, ~U[2026-07-24 12:36:28Z], ~U[2026-07-24 12:36:28Z]] 14:36:28.048 [debug] QUERY OK db=0.3ms commit [] 14:36:28.049 [debug] QUERY OK source="media_items" db=1.3ms idle=678.8ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [201896904, ~U[2026-07-24 12:36:28Z], 178] 14:36:28.049 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:28.050 [info] {"args":{"id":178},"id":126,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":18102226,"event":"job:stop","queue_time":1289946754,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:28.056 [info] {"args":{"id":7},"id":11,"meta":{},"system_time":1784896588056531611,"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"]} 14:36:28.057 [debug] QUERY OK source="media_items" db=0.2ms idle=648.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" = ?) [7] 14:36:28.057 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:28.057 [debug] QUERY OK source="sources" db=0.1ms idle=9.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:36:28.057 [debug] QUERY OK source="media_profiles" db=0.2ms idle=7.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:28.058 [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 [7] 14:36:28.060 [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" = ?) [7] 14:36:28.060 [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] 14:36:28.061 [debug] QUERY OK source="settings" db=0.4ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:28.061 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:28.062 [debug] Running yt-dlp command for action: get_downloadable_status 14:36:28.063 [debug] QUERY OK source="settings" db=0.1ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:28.063 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:28.063 [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 [] 14:36:28.063 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ed/eb/edebd85f845f61f68b3308c96984aaeba1c44fd36fb37f4a2eafbb5f533aa35d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:31.428 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ed/eb/edebd85f845f61f68b3308c96984aaeba1c44fd36fb37f4a2eafbb5f533aa35d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:31.428 [debug] Running yt-dlp command for action: download 14:36:31.429 [debug] QUERY OK source="settings" db=0.2ms idle=1767.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:31.429 [debug] QUERY OK source="settings" db=0.4ms idle=1768.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:31.429 [debug] QUERY OK source="settings" db=0.1ms idle=1768.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:31.430 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1c/6b/1c6bea3f4c4177efc7fe9fb3715c4d40ecccb482265cfeed33636f290d9b0b5c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:41.966 [info] GET /media/a7b17008-f5f7-4106-8336-f315fd2f5fbe/stream 14:36:41.966 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "a7b17008-f5f7-4106-8336-f315fd2f5fbe", "v" => "1784895844"} Pipelines: [:maybe_basic_auth] 14:36:41.968 [debug] QUERY OK source="media_items" db=1.4ms idle=1305.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" = ?) ["a7b17008-f5f7-4106-8336-f315fd2f5fbe"] 14:36:41.968 [debug] Invalid range request for media item: a7b17008-f5f7-4106-8336-f315fd2f5fbe - serving full file 14:36:41.969 [info] Sent 200 in 2ms 14:36:45.441 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wxaXWSVhRXU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/18/94/18940832e85d21b53b5042dac541e113ddecabe07434f8af78a6a8de34b452e2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:45.471 [debug] Running yt-dlp command for action: download_thumbnail 14:36:45.472 [debug] QUERY OK source="settings" db=0.1ms idle=1811.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:45.473 [debug] QUERY OK source="settings" db=0.1ms idle=1041.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:45.473 [debug] QUERY OK source="settings" db=0.2ms idle=812.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:45.474 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wxaXWSVhRXU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/179/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b1/ac/b1ac570b020ffa1c0ea3e0f779f5a32b17272c338cf984d287a243a346a533f8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:48.373 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=wxaXWSVhRXU --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/179/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b1/ac/b1ac570b020ffa1c0ea3e0f779f5a32b17272c338cf984d287a243a346a533f8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:48.374 [debug] QUERY OK db=0.4ms idle=1712.6ms begin [] 14:36:48.376 [debug] QUERY OK source="media_items" db=2.4ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:36:45Z], "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].mp4", [["en", "/downloads/Tiny Desk/2026-05-13 Foo Fighters: Tiny Desk Concert/Foo Fighters: Tiny Desk Concert [wxaXWSVhRXU].en.srt"]], ~U[2026-07-24 12:36:48Z], 179] 14:36:48.381 [debug] QUERY OK source="media_metadata" db=4.2ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/179/metadata.json.gz", "/config/metadata/media_items/179/thumbnail.jpg", 179, ~U[2026-07-24 12:36:48Z], ~U[2026-07-24 12:36:48Z]] 14:36:48.381 [debug] QUERY OK db=0.5ms commit [] 14:36:48.385 [debug] QUERY OK source="media_items" db=2.8ms idle=1721.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [492746108, ~U[2026-07-24 12:36:48Z], 179] 14:36:48.385 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:48.386 [info] {"args":{"id":179},"id":127,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":23461002,"event":"job:stop","queue_time":1302923784,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:48.393 [info] {"args":{"id":8},"id":12,"meta":{},"system_time":1784896608393598837,"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"]} 14:36:48.394 [debug] QUERY OK source="media_items" db=0.5ms idle=952.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" = ?) [8] 14:36:48.395 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:48.396 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [1] 14:36:48.396 [debug] QUERY OK source="media_profiles" db=0.4ms idle=11.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:48.397 [debug] QUERY OK source="media_items" db=0.3ms queue=0.3ms idle=10.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [8] 14:36:48.398 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [8] 14:36:48.399 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:48.400 [debug] QUERY OK source="settings" db=0.6ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:48.400 [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 [] 14:36:48.401 [debug] Running yt-dlp command for action: get_downloadable_status 14:36:48.401 [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:36:48.402 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:48.402 [debug] QUERY OK source="settings" db=0.3ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:48.402 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/87/20/872004eaac25ce06b22a68565ed6facd8e271f7a5672b9de6bd199c32ae94a9f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:49.981 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1c/6b/1c6bea3f4c4177efc7fe9fb3715c4d40ecccb482265cfeed33636f290d9b0b5c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:50.005 [debug] Running yt-dlp command for action: download_thumbnail 14:36:50.006 [debug] QUERY OK source="settings" db=0.2ms idle=561.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:50.006 [debug] QUERY OK source="settings" db=0.1ms idle=328.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:50.006 [debug] QUERY OK source="settings" db=0.2ms idle=328.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:50.007 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/7/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e9/85/e98576fb6469e0f657e3654e45c3c1df712a39957c6521161e86397e6b8d1424.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:52.118 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/87/20/872004eaac25ce06b22a68565ed6facd8e271f7a5672b9de6bd199c32ae94a9f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:52.118 [debug] Running yt-dlp command for action: download 14:36:52.119 [debug] QUERY OK source="settings" db=0.2ms queue=0.6ms idle=669.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:52.120 [debug] QUERY OK source="settings" db=0.6ms idle=441.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:52.121 [debug] QUERY OK source="settings" db=0.7ms idle=442.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:52.121 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/18/7d/187de24c2df607c3468c00d00cf9b01cc92b6e95e77c78e64bcf69f7151567bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:52.632 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:53.918 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=1o74a8a0rBw --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/7/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/e9/85/e98576fb6469e0f657e3654e45c3c1df712a39957c6521161e86397e6b8d1424.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:53.919 [debug] QUERY OK db=0.5ms idle=466.3ms begin [] 14:36:53.920 [debug] QUERY OK source="media_items" db=0.7ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:36:49Z], "/downloads/The Standup/2026-04-04 Maintaining a codebase with AI | The Standup/Maintaining a codebase with AI | The Standup [1o74a8a0rBw].mp4", ~U[2026-07-24 12:36:53Z], 7] 14:36:53.921 [debug] QUERY OK source="media_metadata" db=0.5ms 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/7/metadata.json.gz", "/config/metadata/media_items/7/thumbnail.jpg", 7, ~U[2026-07-24 12:36:53Z], ~U[2026-07-24 12:36:53Z]] 14:36:53.921 [debug] QUERY OK db=0.2ms commit [] 14:36:53.922 [debug] QUERY OK source="media_items" db=1.1ms idle=243.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:36:53Z], 7] 14:36:53.924 [debug] QUERY OK source="media_items" db=1.2ms idle=245.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [500050435, ~U[2026-07-24 12:36:53Z], 7] 14:36:53.924 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:53.925 [info] {"args":{"id":7},"id":11,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":25868099,"event":"job:stop","queue_time":2083900879,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:36:53.931 [info] {"args":{"id":26},"id":30,"meta":{},"system_time":1784896613931444447,"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"]} 14:36:53.931 [debug] QUERY OK source="media_items" db=0.1ms idle=10.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [26] 14:36:53.932 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:36:53.932 [debug] QUERY OK source="sources" db=0.1ms idle=9.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:36:53.933 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.2ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:36:53.933 [debug] QUERY OK source="media_items" db=0.4ms 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 [26] 14:36:53.934 [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" = ?) [26] 14:36:53.934 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 14:36:53.935 [debug] QUERY OK source="settings" db=0.5ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:53.936 [debug] QUERY OK source="settings" db=0.6ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:53.937 [debug] Running yt-dlp command for action: get_downloadable_status 14:36:53.938 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:53.939 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:53.939 [debug] QUERY OK source="settings" db=0.3ms idle=4.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:53.940 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/11/c41186ef28eafcab0b23dbd4d0fb1100abd0c1992a8ffb68272ae8f11f3715c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:36:55.115 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:36:56.963 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/11/c41186ef28eafcab0b23dbd4d0fb1100abd0c1992a8ffb68272ae8f11f3715c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:36:56.963 [debug] Running yt-dlp command for action: download 14:36:56.963 [debug] QUERY OK source="settings" db=0.3ms idle=1285.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:56.964 [debug] QUERY OK source="settings" db=0.3ms idle=1285.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:56.964 [debug] QUERY OK source="settings" db=0.4ms idle=1286.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:36:56.965 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fc/6a/fc6abef8250b5a078e53d19bad60eca8cbf783c43cb7636b8825a1197ef121b4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:00.552 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:37:21.964 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/18/7d/187de24c2df607c3468c00d00cf9b01cc92b6e95e77c78e64bcf69f7151567bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:37:21.993 [debug] Running yt-dlp command for action: download_thumbnail 14:37:21.994 [debug] QUERY OK source="settings" db=0.1ms idle=1316.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.995 [debug] QUERY OK source="settings" db=0.3ms idle=1316.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.995 [debug] QUERY OK source="settings" db=0.2ms idle=473.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:21.995 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/8/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9e/1a/9e1a5e169a7947a94c2b0957210c0b499cd8332a5d03f3b570ddbaf8b6ca9a80.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:22.634 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:25.330 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=effIaRawUdA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/8/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/9e/1a/9e1a5e169a7947a94c2b0957210c0b499cd8332a5d03f3b570ddbaf8b6ca9a80.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:37:25.331 [debug] QUERY OK db=0.1ms idle=1653.2ms begin [] 14:37:25.332 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:37:21Z], "/downloads/The Standup/2026-03-22 Thanks for all your hard work you are no longer needed | TheStandup/Thanks for all your hard work you are no longer needed | TheStandup [effIaRawUdA].mp4", ~U[2026-07-24 12:37:25Z], 8] 14:37:25.333 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/8/metadata.json.gz", "/config/metadata/media_items/8/thumbnail.jpg", 8, ~U[2026-07-24 12:37:25Z], ~U[2026-07-24 12:37:25Z]] 14:37:25.333 [debug] QUERY OK db=0.2ms commit [] 14:37:25.334 [debug] QUERY OK source="media_items" db=0.8ms idle=1655.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:37:25Z], 8] 14:37:25.335 [debug] QUERY OK source="media_items" db=0.9ms idle=1656.7ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [406553300, ~U[2026-07-24 12:37:25Z], 8] 14:37:25.335 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:37:25.336 [info] {"args":{"id":8},"id":12,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":36942229,"event":"job:stop","queue_time":2103310709,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:37:25.342 [info] {"args":{"id":25},"id":29,"meta":{},"system_time":1784896645342437913,"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"]} 14:37:25.343 [debug] QUERY OK source="media_items" db=0.2ms idle=9.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [25] 14:37:25.343 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:37:25.343 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [1] 14:37:25.344 [debug] QUERY OK source="media_profiles" db=0.3ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:25.344 [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 [25] 14:37:25.345 [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" = ?) [25] 14:37:25.345 [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] 14:37:25.345 [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 [] 14:37:25.345 [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 [] 14:37:25.346 [debug] Running yt-dlp command for action: get_downloadable_status 14:37:25.346 [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 [] 14:37:25.346 [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 [] 14:37:25.346 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:25.346 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/36/4636160358172e10cc6584b02326c48966b65574cf429740f12a4efd6345c21d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:28.185 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/36/4636160358172e10cc6584b02326c48966b65574cf429740f12a4efd6345c21d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:37:28.185 [debug] Running yt-dlp command for action: download 14:37:28.186 [debug] QUERY OK source="settings" db=0.7ms idle=1508.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:28.187 [debug] QUERY OK source="settings" db=0.6ms idle=1509.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:28.188 [debug] QUERY OK source="settings" db=0.2ms idle=1510.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:28.188 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/23/19/2319dfc119ae75c0d88e3c26ff981d7e3d535a860edcae2e421cd45b4a470b05.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:30.615 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fc/6a/fc6abef8250b5a078e53d19bad60eca8cbf783c43cb7636b8825a1197ef121b4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:37:30.638 [debug] Running yt-dlp command for action: download_thumbnail 14:37:30.641 [debug] QUERY OK source="settings" db=0.9ms queue=0.5ms idle=1104.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:30.643 [debug] QUERY OK source="settings" db=0.5ms 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 [] 14:37:30.643 [debug] QUERY OK source="settings" db=0.2ms idle=965.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:30.644 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/26/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/24/f5/24f535c7290c0dfd68449bcff98ad161721a6d13f343d8f41e5eb69e6b3c0e89.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:31.901 [info] GET /download_logs 14:37:31.901 [debug] Processing with PinchflatWeb.Settings.SettingController.download_logs/2 Parameters: %{} Pipelines: [:browser] 14:37:31.902 [info] Sent 200 in 408µs 14:37:35.443 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=_AsXnyi2Mus --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/26/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/24/f5/24f535c7290c0dfd68449bcff98ad161721a6d13f343d8f41e5eb69e6b3c0e89.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:37:35.445 [debug] QUERY OK db=0.2ms idle=1766.9ms begin [] 14:37:35.446 [debug] QUERY OK source="media_items" db=1.0ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:37:30Z], "/downloads/The Standup/2025-11-17 Memory Safe C/Memory Safe C [_AsXnyi2Mus].mp4", ~U[2026-07-24 12:37:35Z], 26] 14:37:35.447 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/26/metadata.json.gz", "/config/metadata/media_items/26/thumbnail.jpg", 26, ~U[2026-07-24 12:37:35Z], ~U[2026-07-24 12:37:35Z]] 14:37:35.447 [debug] QUERY OK db=0.3ms commit [] 14:37:35.448 [debug] QUERY OK source="media_items" db=0.8ms idle=1770.1ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:37:35Z], 26] 14:37:35.450 [debug] QUERY OK source="media_items" db=0.8ms idle=1771.3ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [428925057, ~U[2026-07-24 12:37:35Z], 26] 14:37:35.450 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:37:35.450 [info] {"args":{"id":26},"id":30,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":41518932,"event":"job:stop","queue_time":1727194643,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:37:35.457 [info] {"args":{"id":40},"id":44,"meta":{},"system_time":1784896655457508351,"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"]} 14:37:35.458 [debug] QUERY OK source="media_items" db=0.1ms idle=9.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40] 14:37:35.458 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:37:35.458 [debug] QUERY OK source="sources" db=0.3ms idle=9.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:37:35.459 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.2ms idle=8.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:35.459 [debug] QUERY OK source="media_items" db=0.3ms 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 [40] 14:37:35.460 [debug] QUERY OK source="media_metadata" db=0.2ms idle=3.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [40] 14:37:35.461 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:37:35.461 [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 [] 14:37:35.462 [debug] QUERY OK source="settings" db=0.1ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:35.462 [debug] Running yt-dlp command for action: get_downloadable_status 14:37:35.463 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:35.463 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:35.463 [debug] QUERY OK source="settings" db=0.3ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:35.464 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/79/1a/791a9119c2cc8160434a1f9b2a50e834e80dbe830b9aedc669d7b6565a02a4d9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:37.854 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/79/1a/791a9119c2cc8160434a1f9b2a50e834e80dbe830b9aedc669d7b6565a02a4d9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:37:37.854 [debug] Running yt-dlp command for action: download 14:37:37.855 [debug] QUERY OK source="settings" db=0.1ms idle=1171.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:37.855 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1172.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:37:37.855 [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 [] 14:37:37.856 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b6/e8/b6e84a7b9a5c4f9dda12731b2cff336497745f8caea963dd373226d0a3bf7e81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:37:52.636 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:55.405 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:38:00.554 [info] {"source":"oban","duration":172,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:38:16.235 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b6/e8/b6e84a7b9a5c4f9dda12731b2cff336497745f8caea963dd373226d0a3bf7e81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:16.255 [debug] Running yt-dlp command for action: download_thumbnail 14:38:16.255 [debug] QUERY OK source="settings" db=0.1ms idle=646.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:16.255 [debug] QUERY OK source="settings" db=0.0ms idle=572.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:16.256 [debug] QUERY OK source="settings" db=0.0ms idle=573.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:16.256 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/40/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ab/7c/ab7c374ce6e6fa2d3c3373998bf22885cf38993e4263132719d6358e666f8c93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:18.971 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OrHorwH5Pco --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/40/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/ab/7c/ab7c374ce6e6fa2d3c3373998bf22885cf38993e4263132719d6358e666f8c93.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:18.971 [debug] QUERY OK db=0.1ms idle=1288.8ms begin [] 14:38:18.972 [debug] QUERY OK source="media_items" db=0.8ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:38:16Z], "/downloads/The Standup/2025-07-23 Tailwind Creator on the Challenges of Open Source | The Standup/Tailwind Creator on the Challenges of Open Source | The Standup [OrHorwH5Pco].mp4", ~U[2026-07-24 12:38:18Z], 40] 14:38:18.973 [debug] QUERY OK source="media_metadata" db=0.5ms 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/40/metadata.json.gz", "/config/metadata/media_items/40/thumbnail.jpg", 40, ~U[2026-07-24 12:38:18Z], ~U[2026-07-24 12:38:18Z]] 14:38:18.973 [debug] QUERY OK db=0.2ms commit [] 14:38:18.975 [debug] QUERY OK source="media_items" db=1.1ms idle=1291.1ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:38:18Z], 40] 14:38:18.976 [debug] QUERY OK source="media_items" db=1.0ms idle=1292.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [459571070, ~U[2026-07-24 12:38:18Z], 40] 14:38:18.976 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:38:18.977 [info] {"args":{"id":40},"id":44,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":43519269,"event":"job:stop","queue_time":1480899292,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:38:18.983 [info] {"args":{"id":50},"id":54,"meta":{},"system_time":1784896698983532452,"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"]} 14:38:18.983 [debug] QUERY OK source="media_items" db=0.1ms idle=9.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50] 14:38:18.984 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:38:18.984 [debug] QUERY OK source="sources" db=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" = ?) [1] 14:38:18.984 [debug] QUERY OK source="media_profiles" db=0.1ms idle=7.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:38:18.985 [debug] QUERY OK source="media_items" db=0.3ms 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 [50] 14:38:18.985 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [50] 14:38:18.986 [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] 14:38:18.986 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:18.986 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:18.987 [debug] Running yt-dlp command for action: get_downloadable_status 14:38:18.987 [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 [] 14:38:18.988 [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 [] 14:38:18.988 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:18.988 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/90/f6/90f6acd6c74d55ab48e2c3faec36ea5e155d97d797f73f14e445f897f50e2308.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:21.621 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/90/f6/90f6acd6c74d55ab48e2c3faec36ea5e155d97d797f73f14e445f897f50e2308.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:21.622 [debug] Running yt-dlp command for action: download 14:38:21.622 [debug] QUERY OK source="settings" db=0.3ms idle=939.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:21.622 [debug] QUERY OK source="settings" db=0.1ms idle=939.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:21.623 [debug] QUERY OK source="settings" db=0.3ms idle=940.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:21.623 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9a/04/9a048398ff7b6f9ae44a39b84d00a225b8a10d04aeed4bb732e7eb9fb4d0b627.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:22.637 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:41.930 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/23/19/2319dfc119ae75c0d88e3c26ff981d7e3d535a860edcae2e421cd45b4a470b05.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:41.953 [debug] Running yt-dlp command for action: download_thumbnail 14:38:41.953 [debug] QUERY OK source="settings" db=0.1ms idle=1269.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:41.954 [debug] QUERY OK source="settings" db=0.2ms idle=1270.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:41.954 [debug] QUERY OK source="settings" db=0.3ms idle=1270.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:41.955 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/25/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/18/0918ee8b5788ad1d3a3b6cb226ff331c7bdbeba268f250d010adbd6b93e19c92.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:45.335 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=y2jH37EObQY --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/25/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/09/18/0918ee8b5788ad1d3a3b6cb226ff331c7bdbeba268f250d010adbd6b93e19c92.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:45.336 [debug] QUERY OK db=0.2ms idle=1651.8ms begin [] 14:38:45.337 [debug] QUERY OK source="media_items" db=1.5ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:38:41Z], "/downloads/The Standup/2025-11-20 Bullsh*t Engineers Say Tier List | The Standup/Bullsh*t Engineers Say Tier List | The Standup [y2jH37EObQY].mp4", ~U[2026-07-24 12:38:45Z], 25] 14:38:45.338 [debug] QUERY OK source="media_metadata" db=0.9ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/25/metadata.json.gz", "/config/metadata/media_items/25/thumbnail.jpg", 25, ~U[2026-07-24 12:38:45Z], ~U[2026-07-24 12:38:45Z]] 14:38:45.339 [debug] QUERY OK db=0.4ms commit [] 14:38:45.341 [debug] QUERY OK source="media_items" db=1.6ms idle=1655.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:38:45Z], 25] 14:38:45.344 [debug] QUERY OK source="media_items" db=2.6ms idle=1657.5ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [650645467, ~U[2026-07-24 12:38:45Z], 25] 14:38:45.344 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:38:45.345 [info] {"args":{"id":25},"id":29,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":80002123,"event":"job:stop","queue_time":1755019389,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:38:45.351 [info] {"args":{"id":145},"id":93,"meta":{},"system_time":1784896725351497065,"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"]} 14:38:45.351 [debug] QUERY OK source="media_items" db=0.1ms idle=12.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" = ?) [145] 14:38:45.352 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:38:45.352 [debug] QUERY OK source="sources" db=0.1ms idle=10.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:38:45.352 [debug] QUERY OK source="media_profiles" db=0.2ms idle=8.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:38:45.352 [debug] QUERY OK source="media_items" db=0.2ms idle=7.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [145] 14:38:45.353 [debug] QUERY OK source="media_metadata" db=0.0ms idle=1.9ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [145] 14:38:45.353 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:38:45.353 [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 [] 14:38:45.353 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:45.354 [debug] Running yt-dlp command for action: get_downloadable_status 14:38:45.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 [] 14:38:45.355 [debug] QUERY OK source="settings" db=0.7ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:45.355 [debug] QUERY OK source="settings" db=0.0ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:45.355 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/1a/dd1addb9c6e34b763e036e73e580f8749b9e9bd9d7c4e317dac1c8929ec20dae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:47.489 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/dd/1a/dd1addb9c6e34b763e036e73e580f8749b9e9bd9d7c4e317dac1c8929ec20dae.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:47.490 [debug] Running yt-dlp command for action: download 14:38:47.490 [debug] QUERY OK source="settings" db=0.2ms idle=834.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:47.490 [debug] QUERY OK source="settings" db=0.2ms idle=806.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:47.491 [debug] QUERY OK source="settings" db=0.1ms idle=807.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:47.491 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9c/21/9c212e3583acf78a3be2d0ef58f2d5136d36599fdecc0520c0dd7bac56b856c2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:51.545 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9c/21/9c212e3583acf78a3be2d0ef58f2d5136d36599fdecc0520c0dd7bac56b856c2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 14:38:51.545 [error] yt-dlp download error for media item #145: "ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 14:38:51.546 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":145},"id":93,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6193909,"event":"job:exception","queue_time":484802252,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:38:51.553 [info] {"args":{"id":158},"id":106,"meta":{},"system_time":1784896731553149270,"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"]} 14:38:51.553 [debug] QUERY OK source="media_items" db=0.4ms idle=869.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" = ?) [158] 14:38:51.554 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:38:51.554 [debug] QUERY OK source="sources" db=0.3ms idle=870.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:38:51.555 [debug] QUERY OK source="media_profiles" db=0.3ms idle=871.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" = ?) [2] 14:38:51.556 [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 [158] 14:38:51.557 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.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" = ?) [158] 14:38:51.558 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 14:38:51.559 [debug] QUERY OK source="settings" db=0.4ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:51.559 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:51.559 [debug] Running yt-dlp command for action: get_downloadable_status 14:38:51.561 [debug] QUERY OK source="settings" db=0.3ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:51.561 [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:38:51.561 [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 [] 14:38:51.561 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e6/93/e693b5883e50fa3584380bfb572e329aa21498c605c0adb144b8df9909f212fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:52.638 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:53.926 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e6/93/e693b5883e50fa3584380bfb572e329aa21498c605c0adb144b8df9909f212fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:38:53.927 [debug] Running yt-dlp command for action: download 14:38:53.927 [debug] QUERY OK source="settings" db=0.2ms idle=1239.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:53.927 [debug] QUERY OK source="settings" db=0.1ms idle=1240.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:53.928 [debug] QUERY OK source="settings" db=0.3ms idle=1240.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:53.928 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/83/52/83523117420ac6af4ae8a38fb0d2a8f5174bbc30e42225755bdcef5ae7e0a0f3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:38:55.473 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:38:58.839 [info] GET /sources/1/media/11 14:38:58.839 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "11", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:38:58.840 [debug] QUERY OK source="media_items" db=0.5ms idle=1152.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" = ?) [11] 14:38:58.840 [debug] QUERY OK source="tasks" db=0.4ms idle=1153.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" [11] 14:38:58.840 [debug] QUERY OK source="sources" db=0.4ms idle=1153.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:38:58.841 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1154.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" = ?) [15] 14:38:58.841 [debug] QUERY OK source="settings" db=0.1ms idle=165.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:38:58.842 [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 [] 14:38:58.842 [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 [] 14:38:58.843 [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] 14:38:58.845 [info] Sent 200 in 5ms 14:39:00.555 [info] {"source":"oban","duration":233,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:39:05.128 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/83/52/83523117420ac6af4ae8a38fb0d2a8f5174bbc30e42225755bdcef5ae7e0a0f3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:05.150 [debug] Running yt-dlp command for action: download_thumbnail 14:39:05.151 [debug] QUERY OK source="settings" db=0.1ms idle=1464.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:05.151 [debug] QUERY OK source="settings" db=0.0ms idle=466.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:05.151 [debug] QUERY OK source="settings" db=0.0ms idle=464.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:05.151 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/158/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/17/9f/179ffa0c053d3b0a306672dca55ee77c23fb0447647e6a6a355321621a5f6a20.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:07.577 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=5bIlkpQRyTM --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/158/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/17/9f/179ffa0c053d3b0a306672dca55ee77c23fb0447647e6a6a355321621a5f6a20.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:07.578 [debug] QUERY OK db=0.6ms idle=891.2ms begin [] 14:39:07.580 [debug] QUERY OK source="media_items" db=1.1ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:39:05Z], "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].mp4", [["en", "/downloads/Tiny Desk/2013-09-10 The 1975: NPR Music Tiny Desk Concert/The 1975: NPR Music Tiny Desk Concert [5bIlkpQRyTM].en.srt"]], ~U[2026-07-24 12:39:07Z], 158] 14:39:07.581 [debug] QUERY OK source="media_metadata" db=0.8ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/158/metadata.json.gz", "/config/metadata/media_items/158/thumbnail.jpg", 158, ~U[2026-07-24 12:39:07Z], ~U[2026-07-24 12:39:07Z]] 14:39:07.581 [debug] QUERY OK db=0.1ms commit [] 14:39:07.582 [debug] QUERY OK source="media_items" db=1.0ms idle=894.6ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:39:07Z], 158] 14:39:07.584 [debug] QUERY OK source="media_items" db=0.9ms idle=896.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [247734532, ~U[2026-07-24 12:39:07Z], 158] 14:39:07.584 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:39:07.584 [info] {"args":{"id":158},"id":106,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16031203,"event":"job:stop","queue_time":344841630,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:39:07.591 [info] {"args":{"id":167},"id":115,"meta":{},"system_time":1784896747591518140,"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"]} 14:39:07.592 [debug] QUERY OK source="media_items" db=0.3ms idle=10.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [167] 14:39:07.592 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:39:07.592 [debug] QUERY OK source="sources" db=0.1ms idle=9.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:39:07.593 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:39:07.594 [debug] QUERY OK source="media_items" db=0.3ms 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 [167] 14:39:07.595 [debug] QUERY OK source="media_metadata" db=0.4ms 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" = ?) [167] 14:39:07.596 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:39:07.597 [debug] QUERY OK source="settings" db=0.6ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:07.597 [debug] QUERY OK source="settings" db=0.5ms idle=3.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:07.598 [debug] Running yt-dlp command for action: get_downloadable_status 14:39:07.600 [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 [] 14:39:07.600 [debug] QUERY OK source="settings" db=0.4ms idle=4.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:07.601 [debug] QUERY OK source="settings" db=0.2ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:07.601 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/a2/c4a205a8bade9767c97adb554b103a0fa172dc413ce6268db1b5cc4b5b9b83bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:09.866 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/a2/c4a205a8bade9767c97adb554b103a0fa172dc413ce6268db1b5cc4b5b9b83bc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:09.866 [debug] Running yt-dlp command for action: download 14:39:09.866 [debug] QUERY OK source="settings" db=0.1ms idle=1179.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:09.867 [debug] QUERY OK source="settings" db=0.1ms idle=1179.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:09.867 [debug] QUERY OK source="settings" db=0.1ms idle=1180.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:09.867 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d1/be/d1be059e8ae91b1825f3c1a085109477ab0112f740e06519723f13d26310b54a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:21.430 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d1/be/d1be059e8ae91b1825f3c1a085109477ab0112f740e06519723f13d26310b54a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:21.435 [debug] Running yt-dlp command for action: download_thumbnail 14:39:21.436 [debug] QUERY OK source="settings" db=0.2ms idle=1749.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:21.436 [debug] QUERY OK source="settings" db=0.3ms 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 [] 14:39:21.437 [debug] QUERY OK source="settings" db=0.0ms idle=1730.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:21.437 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/167/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/32/dd/32dd44cb45afd0abd85d86db2130c921cdf44dba5684055a5e51f4e78685466e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:22.639 [info] {"source":"oban","duration":556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:23.691 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=87_1W4P1F2A --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/167/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/32/dd/32dd44cb45afd0abd85d86db2130c921cdf44dba5684055a5e51f4e78685466e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:23.692 [debug] QUERY OK db=0.3ms idle=1005.3ms begin [] 14:39:23.694 [debug] QUERY OK source="media_items" db=1.2ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:39:21Z], "/downloads/Tiny Desk/2021-03-22 Sting: Tiny Desk (Home) Concert/Sting: Tiny Desk (Home) Concert [87_1W4P1F2A].mp4", ~U[2026-07-24 12:39:23Z], 167] 14:39:23.694 [debug] QUERY OK source="media_metadata" db=0.6ms INSERT INTO "media_metadata" ("metadata_filepath","thumbnail_filepath","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5) RETURNING "id" ["/config/metadata/media_items/167/metadata.json.gz", "/config/metadata/media_items/167/thumbnail.jpg", 167, ~U[2026-07-24 12:39:23Z], ~U[2026-07-24 12:39:23Z]] 14:39:23.695 [debug] QUERY OK db=0.5ms commit [] 14:39:23.702 [debug] QUERY OK source="media_items" db=6.3ms idle=1008.7ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:39:23Z], 167] 14:39:23.704 [debug] QUERY OK source="media_items" db=1.5ms queue=0.1ms idle=1015.4ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [243038147, ~U[2026-07-24 12:39:23Z], 167] 14:39:23.704 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:39:23.705 [info] {"args":{"id":167},"id":115,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16113124,"event":"job:stop","queue_time":254202468,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:39:23.712 [info] {"args":{"id":145},"id":93,"meta":{},"system_time":1784896763711829582,"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"]} 14:39:23.712 [debug] QUERY OK source="media_items" db=0.3ms idle=16.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" = ?) [145] 14:39:23.713 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:39:23.713 [debug] QUERY OK source="sources" db=0.2ms idle=11.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:39:23.714 [debug] QUERY OK source="media_profiles" db=0.5ms 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" = ?) [2] 14:39:23.714 [debug] QUERY OK source="media_items" db=0.5ms 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 [145] 14:39:23.716 [debug] QUERY OK source="media_metadata" db=0.5ms 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" = ?) [145] 14:39:23.717 [debug] QUERY OK source="media_profiles" db=0.9ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:39:23.718 [debug] QUERY OK source="settings" db=0.3ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:23.718 [debug] QUERY OK source="settings" db=0.2ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:23.719 [debug] Running yt-dlp command for action: get_downloadable_status 14:39:23.720 [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:39:23.720 [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:39:23.720 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:23.721 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/52/685264daacf34dcfe0df8d54fa5dc645b401e21ff0e7c0128931689031996b3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:27.433 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/52/685264daacf34dcfe0df8d54fa5dc645b401e21ff0e7c0128931689031996b3e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:27.434 [debug] Running yt-dlp command for action: download 14:39:27.434 [debug] QUERY OK source="settings" db=0.3ms idle=1747.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:27.435 [debug] QUERY OK source="settings" db=0.2ms idle=1747.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:27.435 [debug] QUERY OK source="settings" db=0.0ms idle=1748.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:27.435 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/48/eb/48ebad832d4e6dfb2a2974f1fa25ecba4140c823794eb36df08678e254abba52.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:30.376 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/48/eb/48ebad832d4e6dfb2a2974f1fa25ecba4140c823794eb36df08678e254abba52.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 14:39:30.377 [error] yt-dlp download error for media item #145: "ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 14:39:30.377 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":145},"id":93,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6665360,"event":"job:exception","queue_time":12165297,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:39:34.743 [info] GET /sources/1/media/10 14:39:34.743 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "10", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:39:34.743 [debug] QUERY OK source="media_items" db=0.1ms idle=1055.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" = ?) [10] 14:39:34.744 [debug] QUERY OK source="tasks" db=0.2ms idle=1056.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" [10] 14:39:34.744 [debug] QUERY OK source="sources" db=0.3ms idle=1011.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:39:34.745 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=56.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" = ?) [14] 14:39:34.745 [debug] QUERY OK source="settings" db=0.2ms idle=11.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:34.745 [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 [] 14:39:34.746 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:34.746 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:39:34.748 [info] Sent 200 in 5ms 14:39:52.640 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:53.763 [info] {"args":{"id":145},"id":93,"meta":{},"system_time":1784896793763479363,"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"]} 14:39:53.764 [debug] QUERY OK source="media_items" db=0.3ms idle=1075.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [145] 14:39:53.764 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:39:53.764 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [2] 14:39:53.765 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.2ms idle=77.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" = ?) [2] 14:39:53.765 [debug] QUERY OK source="media_items" db=0.1ms idle=8.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [145] 14:39:53.766 [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" = ?) [145] 14:39:53.766 [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" = ?) [2] 14:39:53.766 [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 [] 14:39:53.766 [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 [] 14:39:53.767 [debug] Running yt-dlp command for action: get_downloadable_status 14:39:53.768 [debug] QUERY OK source="settings" db=0.1ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:53.768 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:53.768 [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 [] 14:39:53.768 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b9/4a/b94af2dbcd4b4f98b02c74f412088f3d2d40eea33b85c2e4e35efbaac545f013.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:39:56.085 [info] CONNECTED TO Phoenix.LiveView.Socket in 69µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:39:57.545 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b9/4a/b94af2dbcd4b4f98b02c74f412088f3d2d40eea33b85c2e4e35efbaac545f013.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:39:57.545 [debug] Running yt-dlp command for action: download 14:39:57.546 [debug] QUERY OK source="settings" db=0.3ms idle=1857.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:57.546 [debug] QUERY OK source="settings" db=0.2ms idle=1858.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:57.546 [debug] QUERY OK source="settings" db=0.2ms idle=1858.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:39:57.547 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e6/00/e60025deb9931df03b12fcaa60cf87348974c791f4679cb44d6c2d50b9d5af75.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:40:00.043 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/e6/00/e60025deb9931df03b12fcaa60cf87348974c791f4679cb44d6c2d50b9d5af75.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 1 with: ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 14:40:00.043 [error] yt-dlp download error for media item #145: "ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 14:40:00.044 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":145},"id":93,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6280095,"event":"job:exception","queue_time":385604,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:40:00.556 [info] {"source":"oban","duration":213,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:40:09.293 [info] GET /sources/2 14:40:09.293 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "2"} Pipelines: [:browser] 14:40:09.294 [debug] QUERY OK source="sources" db=0.2ms idle=1606.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:40:09.294 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1606.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" = ?) [2] 14:40:09.295 [debug] QUERY OK source="tasks" db=0.3ms idle=1518.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"] 14:40:09.295 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=607.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" = ?) [128] 14:40:09.296 [debug] QUERY OK source="settings" db=0.1ms idle=518.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:09.296 [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 [] 14:40:09.297 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:09.298 [debug] QUERY OK source="sources" db=0.1ms queue=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" = ?) [2] 14:40:09.298 [debug] QUERY OK source="media_items" db=0.3ms idle=2.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 14:40:09.299 [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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 14:40:09.300 [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" = ?) [2] 14:40:09.300 [debug] QUERY OK source="media_items" db=0.2ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 14:40:09.301 [debug] QUERY OK source="media_items" db=0.5ms idle=2.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 ? [2, 10, 0] 14:40:09.302 [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" = ?) [2] 14:40:09.302 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((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] 14:40:09.303 [debug] QUERY OK source="media_items" db=0.4ms idle=2.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_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] 14:40:09.304 [info] Sent 200 in 10ms 14:40:22.641 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:30.842 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/The Standup/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/9a/04/9a048398ff7b6f9ae44a39b84d00a225b8a10d04aeed4bb732e7eb9fb4d0b627.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:40:30.863 [debug] Running yt-dlp command for action: download_thumbnail 14:40:30.864 [debug] QUERY OK source="settings" db=0.1ms idle=1026.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:30.864 [debug] QUERY OK source="settings" db=0.0ms idle=165.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:30.864 [debug] QUERY OK source="settings" db=0.1ms idle=165.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:30.865 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fe/e1/fee14e51370b7e56f686c8c07f18e0a1cd21b53cf705b43584f5fb6c1b2f66d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:40:32.849 [info] {"args":{"id":145},"id":93,"meta":{},"system_time":1784896832849558317,"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"]} 14:40:32.850 [debug] QUERY OK source="media_items" db=0.2ms idle=150.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [145] 14:40:32.850 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:40:32.850 [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" = ?) [2] 14:40:32.851 [debug] QUERY OK source="media_profiles" db=0.2ms idle=151.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:40:32.851 [debug] QUERY OK source="media_items" db=0.3ms idle=7.6ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [145] 14:40:32.853 [debug] QUERY OK source="media_metadata" db=0.0ms idle=3.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [145] 14:40:32.853 [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" = ?) [2] 14:40:32.853 [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 [] 14:40:32.854 [debug] QUERY OK source="settings" db=0.1ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:32.854 [debug] Running yt-dlp command for action: get_downloadable_status 14:40:32.855 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:32.855 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:32.855 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:32.855 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a2/55/a2553d2f1551feef98ea6b3158be4c16fa8628fc583f888b59229cfe96c2eda7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:40:33.809 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=l6K9Q7hsh18 --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/50/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/fe/e1/fee14e51370b7e56f686c8c07f18e0a1cd21b53cf705b43584f5fb6c1b2f66d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:40:33.810 [debug] QUERY OK db=0.1ms queue=0.1ms idle=956.4ms begin [] 14:40:33.811 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:40:30Z], "/downloads/The Standup/2025-06-11 Microsoft Admits AI Defeat?/Microsoft Admits AI Defeat? [l6K9Q7hsh18].mp4", ~U[2026-07-24 12:40:33Z], 50] 14:40:33.813 [debug] QUERY OK source="media_metadata" db=1.7ms 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/50/metadata.json.gz", "/config/metadata/media_items/50/thumbnail.jpg", 50, ~U[2026-07-24 12:40:33Z], ~U[2026-07-24 12:40:33Z]] 14:40:33.813 [debug] QUERY OK db=0.3ms commit [] 14:40:33.814 [debug] QUERY OK source="media_items" db=0.8ms idle=959.8ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:40:33Z], 50] 14:40:33.816 [debug] QUERY OK source="media_items" db=1.0ms idle=959.9ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [659729760, ~U[2026-07-24 12:40:33Z], 50] 14:40:33.816 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:40:33.817 [info] {"args":{"id":50},"id":54,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":134833030,"event":"job:stop","queue_time":1178885059,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:40:35.319 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a2/55/a2553d2f1551feef98ea6b3158be4c16fa8628fc583f888b59229cfe96c2eda7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:40:35.319 [debug] Running yt-dlp command for action: download 14:40:35.320 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1503.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:35.321 [debug] QUERY OK source="settings" db=0.6ms idle=1502.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:35.321 [debug] QUERY OK source="settings" db=0.1ms idle=1496.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:35.321 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/96/ac/96acfcf07695255db68582144ae9190b86c796057c31725535e76d0868d817a7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:40:40.323 [info] GET /sources/1 14:40:40.323 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"delete_files" => "true", "id" => "1"} Pipelines: [:browser] 14:40:40.324 [debug] QUERY OK source="sources" db=0.6ms idle=1624.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:40:40.325 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1625.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:40:40.325 [debug] QUERY OK source="tasks" db=0.5ms idle=1471.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 14:40:40.326 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=627.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" = ?) [66] 14:40:40.326 [debug] QUERY OK source="settings" db=0.2ms idle=471.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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.327 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.327 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.329 [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" = ?) [1] 14:40:40.330 [debug] QUERY OK source="media_items" db=0.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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 14:40:40.330 [debug] QUERY OK source="media_items" db=0.5ms 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 ? [1, 10, 0] 14:40:40.331 [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" = ?) [1] 14:40:40.331 [debug] QUERY OK source="media_items" db=0.1ms idle=3.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 14:40:40.331 [debug] QUERY OK source="media_items" db=0.2ms idle=2.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 14:40:40.332 [debug] QUERY OK source="sources" db=0.1ms idle=2.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:40:40.333 [debug] QUERY OK source="media_items" db=0.6ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 14:40:40.334 [debug] QUERY OK source="media_items" db=0.4ms 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 ? [1, 10, 0] 14:40:40.335 [info] Sent 200 in 11ms 14:40:50.240 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --sub-langs en --embed-thumbnail --convert-thumbnail jpg --embed-metadata --remux-video mp4 --format-sort res:1080,+codec:avc:m4a --format bestvideo*+bestaudio/best --sponsorblock-mark sponsor,intro,outro,selfpromo,preview,filler,interaction,music_offtopic --output /downloads/Tiny Desk/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/96/ac/96acfcf07695255db68582144ae9190b86c796057c31725535e76d0868d817a7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:40:50.277 [debug] Running yt-dlp command for action: download_thumbnail 14:40:50.278 [debug] QUERY OK source="settings" db=0.1ms idle=579.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:50.278 [debug] QUERY OK source="settings" db=0.2ms idle=579.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:50.278 [debug] QUERY OK source="settings" db=0.1ms idle=579.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:50.279 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/145/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b4/45/b4455f5ace97d4d29d0928a93e63c239356233ac77344438eda991f38e00e6b2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:40:52.643 [info] {"source":"oban","duration":503,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:54.181 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6dkDepLX0rk --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/145/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/b4/45/b4455f5ace97d4d29d0928a93e63c239356233ac77344438eda991f38e00e6b2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 0 with: 14:40:54.181 [debug] QUERY OK db=0.0ms idle=482.8ms begin [] 14:40:54.183 [debug] QUERY OK source="media_items" db=1.6ms UPDATE "media_items" SET "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? [~U[2026-07-24 12:40:50Z], "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].mp4", [["en", "/downloads/Tiny Desk/2022-12-05 Stromae: Tiny Desk Concert/Stromae: Tiny Desk Concert [6dkDepLX0rk].en.srt"]], ~U[2026-07-24 12:40:54Z], 145] 14:40:54.184 [debug] QUERY OK source="media_metadata" db=0.7ms 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/145/metadata.json.gz", "/config/metadata/media_items/145/thumbnail.jpg", 145, ~U[2026-07-24 12:40:54Z], ~U[2026-07-24 12:40:54Z]] 14:40:54.185 [debug] QUERY OK db=0.2ms commit [] 14:40:54.186 [debug] QUERY OK source="media_items" db=1.3ms idle=486.4ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2026-07-24 12:40:54Z], 145] 14:40:54.188 [debug] QUERY OK source="media_items" db=1.2ms idle=488.1ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [258724317, ~U[2026-07-24 12:40:54Z], 145] 14:40:54.188 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:40:54.188 [info] {"args":{"id":145},"id":93,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":21339005,"event":"job:stop","queue_time":805145,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:40:56.146 [info] CONNECTED TO Phoenix.LiveView.Socket in 21µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:41:00.557 [info] {"source":"oban","duration":200,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:41:07.059 [info] GET /sources/6d6132e3-0434-4a17-9843-fab099fbe97d/feed.xml 14:41:07.059 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "6d6132e3-0434-4a17-9843-fab099fbe97d"} Pipelines: [:maybe_basic_auth] 14:41:07.060 [debug] QUERY OK source="sources" db=0.3ms idle=1360.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["6d6132e3-0434-4a17-9843-fab099fbe97d"] 14:41:07.061 [debug] QUERY OK source="media_items" db=1.3ms queue=0.3ms idle=1361.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [1, 2000] 14:41:07.067 [debug] QUERY OK source="source_metadata" db=0.1ms idle=1368.2ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [1] 14:41:07.068 [debug] QUERY OK source="media_metadata" db=0.5ms idle=1185.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" = ?) [1] 14:41:07.068 [info] Sent 200 in 9ms 14:41:22.644 [info] {"source":"oban","duration":611,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:32.420 [info] GET /sources/2/media/179 14:41:32.420 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "179", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:41:32.421 [debug] QUERY OK source="media_items" db=0.7ms idle=1722.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [179] 14:41:32.424 [debug] QUERY OK source="tasks" db=1.3ms idle=1724.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" [179] 14:41:32.424 [debug] QUERY OK source="sources" db=1.5ms idle=1512.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:41:32.425 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=0.1ms idle=726.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" = ?) [127] 14:41:32.426 [debug] QUERY OK source="settings" db=0.8ms idle=513.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:32.428 [debug] QUERY OK source="settings" db=1.0ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:32.432 [debug] QUERY OK source="settings" db=0.8ms idle=7.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:32.433 [debug] QUERY OK source="media_profiles" db=0.4ms idle=8.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:41:32.436 [info] Sent 200 in 16ms 14:41:52.647 [info] {"source":"oban","duration":1652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:55.379 [info] GET /sources/2/media/124 14:41:55.379 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "124", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:41:55.380 [debug] QUERY OK source="media_items" db=0.8ms idle=1680.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" = ?) [124] 14:41:55.380 [debug] QUERY OK source="tasks" db=0.3ms idle=1681.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" [124] 14:41:55.381 [debug] QUERY OK source="sources" db=0.4ms idle=1681.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:41:55.381 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=0.1ms idle=1444.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" = ?) [72] 14:41:55.382 [debug] QUERY OK source="settings" db=0.1ms idle=444.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:55.382 [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 [] 14:41:55.382 [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 [] 14:41:55.383 [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" = ?) [2] 14:41:55.384 [info] Sent 200 in 5ms 14:41:56.327 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:42:00.558 [info] {"source":"oban","duration":212,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:42:16.093 [info] GET /sources/2/media/123 14:42:16.093 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "123", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:42:16.093 [debug] QUERY OK source="media_items" db=0.2ms idle=1394.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [123] 14:42:16.094 [debug] QUERY OK source="tasks" db=0.3ms idle=1395.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" [123] 14:42:16.094 [debug] QUERY OK source="sources" db=0.4ms idle=1136.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:42:16.094 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=395.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" = ?) [71] 14:42:16.095 [debug] QUERY OK source="settings" db=0.0ms idle=136.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:16.095 [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 [] 14:42:16.095 [debug] QUERY OK source="settings" db=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:16.096 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:42:16.097 [info] Sent 200 in 4ms 14:42:22.648 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:33.211 [info] GET /sources/2/media/177 14:42:33.211 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "177", "source_id" => "2"} Pipelines: [:browser] 14:42:33.212 [debug] QUERY OK source="media_items" db=0.7ms idle=1512.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" = ?) [177] 14:42:33.212 [debug] QUERY OK source="tasks" db=0.3ms idle=1513.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" [177] 14:42:33.213 [debug] QUERY OK source="sources" db=0.8ms idle=1513.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:42:33.214 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1236.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" = ?) [125] 14:42:33.214 [debug] QUERY OK source="settings" db=0.1ms idle=235.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:33.214 [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 [] 14:42:33.215 [debug] QUERY OK source="settings" db=0.3ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:33.215 [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" = ?) [2] 14:42:33.217 [info] Sent 200 in 6ms 14:42:48.798 [info] GET /sources/2/media/127 14:42:48.798 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "127", "source_id" => "2"} Pipelines: [:browser] 14:42:48.798 [debug] QUERY OK source="media_items" db=0.1ms idle=803.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [127] 14:42:48.799 [debug] QUERY OK source="tasks" db=0.3ms idle=99.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" [127] 14:42:48.799 [debug] QUERY OK source="sources" db=0.5ms idle=99.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:42:48.800 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=100.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" = ?) [75] 14:42:48.800 [debug] QUERY OK source="settings" db=0.0ms idle=101.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:48.800 [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 [] 14:42:48.801 [debug] QUERY OK source="settings" db=0.3ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:42:48.802 [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" = ?) [2] 14:42:48.804 [info] Sent 200 in 5ms 14:42:52.650 [info] {"source":"oban","duration":615,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:56.514 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:43:00.559 [info] {"source":"oban","duration":255,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:43:03.223 [info] GET /sources/2/media/126 14:43:03.223 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "126", "source_id" => "2"} Pipelines: [:browser] 14:43:03.224 [debug] QUERY OK source="media_items" db=0.7ms idle=1525.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" = ?) [126] 14:43:03.225 [debug] QUERY OK source="tasks" db=0.2ms idle=1211.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" [126] 14:43:03.226 [debug] QUERY OK source="sources" db=0.6ms idle=526.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:43:03.227 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=527.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" = ?) [74] 14:43:03.227 [debug] QUERY OK source="settings" db=0.4ms idle=210.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:03.228 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:03.229 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:03.231 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:43:03.233 [info] Sent 200 in 10ms 14:43:16.065 [info] GET /sources/2/media/125 14:43:16.065 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "125", "source_id" => "2"} Pipelines: [:browser] 14:43:16.066 [debug] QUERY OK source="media_items" db=0.1ms idle=1367.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" = ?) [125] 14:43:16.066 [debug] QUERY OK source="sources" db=0.2ms idle=1367.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:43:16.066 [debug] QUERY OK source="tasks" db=0.3ms idle=1367.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" [125] 14:43:16.067 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1037.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" = ?) [73] 14:43:16.068 [debug] QUERY OK source="settings" db=0.7ms 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 [] 14:43:16.068 [debug] QUERY OK source="settings" db=0.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:16.069 [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 [] 14:43:16.069 [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" = ?) [2] 14:43:16.071 [info] Sent 200 in 5ms 14:43:22.651 [info] {"source":"oban","duration":531,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:27.719 [info] GET /sources/1/media/8/edit 14:43:27.719 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "8", "source_id" => "1"} Pipelines: [:browser] 14:43:27.719 [debug] QUERY OK source="media_items" db=0.2ms idle=674.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8] 14:43:27.720 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:43:27.720 [debug] QUERY OK source="settings" db=0.2ms idle=21.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:27.721 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:43:27.722 [info] Sent 200 in 3ms 14:43:38.512 [info] GET /sources/2/media/145/edit 14:43:38.512 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "145", "source_id" => "2"} Pipelines: [:browser] 14:43:38.512 [debug] QUERY OK source="media_items" db=0.2ms idle=813.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" = ?) [145] 14:43:38.513 [debug] QUERY OK source="settings" db=0.1ms idle=814.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:38.513 [debug] QUERY OK source="settings" db=0.1ms idle=814.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:38.514 [debug] QUERY OK source="settings" db=0.1ms idle=814.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:38.515 [info] Sent 200 in 2ms 14:43:47.715 [info] GET /sources/1/media/2/edit 14:43:47.715 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "2", "source_id" => "1"} Pipelines: [:browser] 14:43:47.716 [debug] QUERY OK source="media_items" db=0.6ms idle=648.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [2] 14:43:47.716 [debug] QUERY OK source="settings" db=0.1ms idle=17.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:47.716 [debug] QUERY OK source="settings" db=0.0ms idle=17.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:47.717 [debug] QUERY OK source="settings" db=0.5ms 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 [] 14:43:47.718 [info] Sent 200 in 3ms 14:43:52.652 [info] {"source":"oban","duration":465,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:56.601 [info] GET /sources/1/media/7/edit 14:43:56.601 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "7", "source_id" => "1"} Pipelines: [:browser] 14:43:56.602 [debug] QUERY OK source="media_items" db=0.2ms idle=902.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [7] 14:43:56.602 [debug] QUERY OK source="settings" db=0.0ms idle=903.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:56.602 [debug] QUERY OK source="settings" db=0.1ms idle=903.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:56.603 [debug] QUERY OK source="settings" db=0.2ms idle=904.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:43:56.604 [info] Sent 200 in 2ms 14:43:56.660 [info] CONNECTED TO Phoenix.LiveView.Socket in 59µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:44:00.560 [info] {"source":"oban","duration":199,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:44:04.271 [info] GET /media/8180c8a8-b8fb-47d5-b12a-60b31354665a/stream 14:44:04.271 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "8180c8a8-b8fb-47d5-b12a-60b31354665a", "v" => "1784896608"} Pipelines: [:maybe_basic_auth] 14:44:04.272 [debug] QUERY OK source="media_items" db=0.6ms idle=572.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" = ?) ["8180c8a8-b8fb-47d5-b12a-60b31354665a"] 14:44:04.272 [debug] Invalid range request for media item: 8180c8a8-b8fb-47d5-b12a-60b31354665a - serving full file 14:44:04.272 [info] Sent 200 in 1ms 14:44:21.379 [info] GET /media/de28bb5f-aa12-41fc-a016-ca1a0d4873d9/stream 14:44:21.379 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "de28bb5f-aa12-41fc-a016-ca1a0d4873d9", "v" => "1784895966"} Pipelines: [:maybe_basic_auth] 14:44:21.380 [debug] QUERY OK source="media_items" db=0.7ms idle=1584.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["de28bb5f-aa12-41fc-a016-ca1a0d4873d9"] 14:44:21.380 [debug] Invalid range request for media item: de28bb5f-aa12-41fc-a016-ca1a0d4873d9 - serving full file 14:44:21.380 [info] Sent 200 in 1ms 14:44:22.653 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:30.320 [info] GET /sources/1/media/5/edit 14:44:30.321 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "5", "source_id" => "1"} Pipelines: [:browser] 14:44:30.321 [debug] QUERY OK source="media_items" db=0.1ms idle=526.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" = ?) [5] 14:44:30.321 [debug] QUERY OK source="settings" db=0.2ms idle=526.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:30.322 [debug] QUERY OK source="settings" db=0.1ms idle=527.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:30.322 [debug] QUERY OK source="settings" db=0.0ms idle=527.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:30.323 [info] Sent 200 in 2ms 14:44:35.673 [info] GET /sources/2/media/177 14:44:35.673 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "177", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:44:35.674 [debug] QUERY OK source="media_items" db=0.4ms idle=1879.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" = ?) [177] 14:44:35.675 [debug] QUERY OK source="tasks" db=0.1ms idle=1880.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" [177] 14:44:35.675 [debug] QUERY OK source="sources" db=0.1ms idle=1880.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:44:35.675 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1556.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" = ?) [125] 14:44:35.676 [debug] QUERY OK source="settings" db=0.2ms idle=556.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:35.676 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:35.676 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:35.677 [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" = ?) [2] 14:44:35.679 [info] Sent 200 in 5ms 14:44:40.616 [info] GET /sources/2/media/127 14:44:40.616 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "127", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:44:40.617 [debug] QUERY OK source="media_items" db=0.4ms idle=1822.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [127] 14:44:40.618 [debug] QUERY OK source="tasks" db=0.3ms idle=1822.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" [127] 14:44:40.618 [debug] QUERY OK source="sources" db=0.3ms idle=1822.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:44:40.618 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1494.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" = ?) [75] 14:44:40.619 [debug] QUERY OK source="settings" db=0.1ms idle=494.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:40.619 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:44:40.620 [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 [] 14:44:40.620 [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" = ?) [2] 14:44:40.622 [info] Sent 200 in 5ms 14:44:44.926 [info] GET /media/5f6f8ba7-04a6-401e-88d5-1d4f41b99cb0/stream 14:44:44.927 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "5f6f8ba7-04a6-401e-88d5-1d4f41b99cb0", "v" => "1784896003"} Pipelines: [:maybe_basic_auth] 14:44:44.927 [debug] QUERY OK source="media_items" db=0.4ms idle=1132.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" = ?) ["5f6f8ba7-04a6-401e-88d5-1d4f41b99cb0"] 14:44:44.928 [debug] Invalid range request for media item: 5f6f8ba7-04a6-401e-88d5-1d4f41b99cb0 - serving full file 14:44:44.928 [info] Sent 200 in 1ms 14:44:52.654 [info] {"source":"oban","duration":469,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:53.605 [info] GET /media/482ef7a6-963a-4751-b84d-385d1e9e267e/stream 14:44:53.605 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "482ef7a6-963a-4751-b84d-385d1e9e267e", "v" => "1784895977"} Pipelines: [:maybe_basic_auth] 14:44:53.606 [debug] QUERY OK source="media_items" db=0.9ms idle=1810.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["482ef7a6-963a-4751-b84d-385d1e9e267e"] 14:44:53.606 [debug] Invalid range request for media item: 482ef7a6-963a-4751-b84d-385d1e9e267e - serving full file 14:44:53.606 [info] Sent 200 in 1ms 14:44:56.802 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:45:00.561 [info] {"source":"oban","duration":201,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:45:03.963 [info] GET /sources/2/media/126 14:45:03.963 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "126", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:45:03.963 [debug] QUERY OK source="media_items" db=0.2ms idle=807.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [126] 14:45:03.964 [debug] QUERY OK source="tasks" db=0.3ms idle=169.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" [126] 14:45:03.964 [debug] QUERY OK source="sources" db=0.4ms idle=169.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 14:45:03.965 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=170.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" = ?) [74] 14:45:03.966 [debug] QUERY OK source="settings" db=0.6ms idle=170.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:03.966 [debug] QUERY OK source="settings" db=0.5ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:03.968 [debug] QUERY OK source="settings" db=0.7ms queue=0.3ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:03.969 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 14:45:03.970 [info] Sent 200 in 7ms 14:45:07.207 [info] GET /sources/2/media/125 14:45:07.207 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "125", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 14:45:07.207 [debug] QUERY OK source="media_items" db=0.1ms idle=1412.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" = ?) [125] 14:45:07.208 [debug] QUERY OK source="sources" db=0.1ms idle=1413.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:45:07.208 [debug] QUERY OK source="tasks" db=0.4ms idle=1413.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" [125] 14:45:07.209 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1050.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" = ?) [73] 14:45:07.209 [debug] QUERY OK source="settings" db=0.0ms idle=49.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:07.209 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:07.210 [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 [] 14:45:07.210 [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" = ?) [2] 14:45:07.212 [info] Sent 200 in 5ms 14:45:10.187 [info] GET /media/262e21d9-5de3-4225-af94-f61f49fee1e2/stream 14:45:10.188 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "262e21d9-5de3-4225-af94-f61f49fee1e2", "v" => "1784896584"} Pipelines: [:maybe_basic_auth] 14:45:10.188 [debug] QUERY OK source="media_items" db=0.5ms idle=1393.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["262e21d9-5de3-4225-af94-f61f49fee1e2"] 14:45:10.189 [debug] Invalid range request for media item: 262e21d9-5de3-4225-af94-f61f49fee1e2 - serving full file 14:45:10.189 [info] Sent 200 in 1ms 14:45:21.004 [info] GET /sources/1/media/3/edit 14:45:21.004 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "3", "source_id" => "1"} Pipelines: [:browser] 14:45:21.005 [debug] QUERY OK source="media_items" db=0.2ms idle=1066.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [3] 14:45:21.005 [debug] QUERY OK source="settings" db=0.1ms idle=827.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:21.005 [debug] QUERY OK source="settings" db=0.2ms idle=67.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:21.006 [debug] QUERY OK source="settings" db=0.4ms idle=68.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:21.007 [info] Sent 200 in 3ms 14:45:22.655 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:23.409 [info] GET /sources/1/media/9/edit 14:45:23.409 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "9", "source_id" => "1"} Pipelines: [:browser] 14:45:23.410 [debug] QUERY OK source="media_items" db=0.1ms idle=754.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" = ?) [9] 14:45:23.410 [debug] QUERY OK source="settings" db=0.1ms idle=472.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:23.411 [debug] QUERY OK source="settings" db=0.2ms idle=472.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:23.411 [debug] QUERY OK source="settings" db=0.4ms idle=473.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:23.412 [info] Sent 200 in 2ms 14:45:25.616 [info] GET /sources/1/media/4/edit 14:45:25.617 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "4", "source_id" => "1"} Pipelines: [:browser] 14:45:25.617 [debug] QUERY OK source="media_items" db=0.1ms idle=679.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" = ?) [4] 14:45:25.617 [debug] QUERY OK source="settings" db=0.1ms idle=679.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:25.618 [debug] QUERY OK source="settings" db=0.5ms idle=679.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:25.619 [debug] QUERY OK source="settings" db=0.2ms idle=680.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:25.619 [info] Sent 200 in 3ms 14:45:27.559 [info] GET /sources/1/media/6/edit 14:45:27.559 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "6", "source_id" => "1"} Pipelines: [:browser] 14:45:27.559 [debug] QUERY OK source="media_items" db=0.1ms idle=621.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" = ?) [6] 14:45:27.560 [debug] QUERY OK source="settings" db=0.1ms idle=622.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:27.560 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=622.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:27.561 [debug] QUERY OK source="settings" db=0.4ms idle=623.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:27.562 [info] Sent 200 in 3ms 14:45:29.292 [info] GET /sources/1/media/1/edit 14:45:29.292 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "1", "source_id" => "1"} Pipelines: [:browser] 14:45:29.293 [debug] QUERY OK source="media_items" db=0.3ms idle=354.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [1] 14:45:29.293 [debug] QUERY OK source="settings" db=0.1ms idle=355.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:29.294 [debug] QUERY OK source="settings" db=0.3ms idle=355.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:29.294 [debug] QUERY OK source="settings" db=0.2ms idle=356.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:29.295 [info] Sent 200 in 2ms 14:45:30.874 [info] GET /sources/1/media/59 14:45:30.874 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "59", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:30.874 [debug] QUERY OK source="media_items" db=0.1ms idle=1581.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" = ?) [59] 14:45:30.875 [debug] QUERY OK source="tasks" db=0.4ms idle=1581.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" [59] 14:45:30.875 [debug] QUERY OK source="sources" db=0.7ms idle=1580.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:30.876 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1581.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" = ?) [63] 14:45:30.877 [debug] QUERY OK source="settings" db=0.6ms idle=684.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:30.878 [debug] QUERY OK source="settings" db=0.2ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:30.879 [debug] QUERY OK source="settings" db=0.6ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:30.879 [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] 14:45:30.881 [info] Sent 200 in 7ms 14:45:32.210 [info] GET /sources/1/media/26 14:45:32.211 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:32.212 [debug] QUERY OK source="media_items" db=0.8ms idle=273.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" = ?) [26] 14:45:32.212 [debug] QUERY OK source="tasks" db=0.2ms idle=274.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" [26] 14:45:32.212 [debug] QUERY OK source="sources" db=0.4ms idle=274.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:32.213 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=275.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" = ?) [30] 14:45:32.213 [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 [] 14:45:32.214 [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 [] 14:45:32.214 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:32.215 [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] 14:45:32.216 [info] Sent 200 in 5ms 14:45:33.499 [info] GET /sources/1/media/50 14:45:33.499 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "50", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:33.500 [debug] QUERY OK source="media_items" db=0.6ms idle=1286.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [50] 14:45:33.501 [debug] QUERY OK source="tasks" db=0.3ms idle=1286.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" [50] 14:45:33.501 [debug] QUERY OK source="sources" db=0.3ms idle=1286.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:33.501 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1286.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" = ?) [54] 14:45:33.501 [debug] QUERY OK source="settings" db=0.1ms idle=306.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:33.502 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:33.502 [debug] QUERY OK source="settings" db=0.4ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:33.503 [debug] QUERY OK source="media_profiles" db=0.3ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:45:33.505 [info] Sent 200 in 6ms 14:45:34.694 [info] GET /sources/1/media/40 14:45:34.695 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "40", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:34.695 [debug] QUERY OK source="media_items" db=0.1ms idle=1193.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40] 14:45:34.695 [debug] QUERY OK source="sources" db=0.1ms idle=1192.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:34.696 [debug] QUERY OK source="tasks" db=0.4ms idle=1193.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" [40] 14:45:34.696 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1192.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" = ?) [44] 14:45:34.697 [debug] QUERY OK source="settings" db=0.3ms idle=500.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:34.697 [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 [] 14:45:34.698 [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 [] 14:45:34.698 [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] 14:45:34.700 [info] Sent 200 in 5ms 14:45:35.744 [info] GET /sources/1/media/60 14:45:35.744 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "60", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:35.746 [debug] QUERY OK source="media_items" db=0.3ms idle=1048.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [60] 14:45:35.746 [debug] QUERY OK source="tasks" db=0.2ms idle=1048.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" [60] 14:45:35.747 [debug] QUERY OK source="sources" db=0.7ms idle=1048.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:35.747 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1048.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" = ?) [64] 14:45:35.747 [debug] QUERY OK source="settings" db=0.0ms idle=550.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:35.748 [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 [] 14:45:35.748 [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 [] 14:45:35.749 [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] 14:45:35.750 [info] Sent 200 in 5ms 14:45:36.720 [info] GET /sources/1/media/58 14:45:36.720 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "58", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:36.720 [debug] QUERY OK source="media_items" db=0.2ms idle=972.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" = ?) [58] 14:45:36.721 [debug] QUERY OK source="tasks" db=0.1ms idle=972.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" [58] 14:45:36.721 [debug] QUERY OK source="sources" db=0.3ms idle=972.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:36.721 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=972.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" = ?) [62] 14:45:36.722 [debug] QUERY OK source="settings" db=0.2ms idle=523.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:36.722 [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 [] 14:45:36.722 [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 [] 14:45:36.723 [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] 14:45:36.724 [info] Sent 200 in 4ms 14:45:37.590 [info] GET /sources/1/media/25 14:45:37.590 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:45:37.591 [debug] QUERY OK source="media_items" db=0.7ms idle=868.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [25] 14:45:37.592 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=869.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" [25] 14:45:37.592 [debug] QUERY OK source="sources" db=0.2ms queue=0.3ms idle=868.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:37.593 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=869.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" = ?) [29] 14:45:37.593 [debug] QUERY OK source="settings" db=0.2ms idle=392.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:37.594 [debug] QUERY OK source="settings" db=0.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:37.594 [debug] QUERY OK source="settings" db=0.3ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:37.595 [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] 14:45:37.597 [info] Sent 200 in 6ms 14:45:38.359 [info] GET /sources/new 14:45:38.359 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "2"} Pipelines: [:browser] 14:45:38.360 [debug] QUERY OK source="sources" db=0.7ms idle=766.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:45:38.361 [debug] QUERY OK source="media_profiles" db=0.3ms idle=766.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:45:38.361 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=766.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:38.361 [debug] QUERY OK source="settings" db=0.0ms idle=766.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:38.362 [debug] QUERY OK source="settings" db=0.1ms idle=160.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:38.362 [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 [] 14:45:38.363 [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 [] 14:45:38.365 [info] Sent 200 in 6ms 14:45:39.015 [info] GET /sources/new 14:45:39.015 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{"template_id" => "1"} Pipelines: [:browser] 14:45:39.016 [debug] QUERY OK source="sources" db=0.6ms idle=654.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:39.017 [debug] QUERY OK source="media_profiles" db=0.2ms idle=654.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 14:45:39.017 [debug] QUERY OK source="settings" db=0.0ms idle=655.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:39.017 [debug] QUERY OK source="settings" db=0.0ms idle=654.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:39.018 [debug] QUERY OK source="settings" db=0.3ms idle=654.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:39.018 [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 [] 14:45:39.019 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:39.021 [info] Sent 200 in 5ms 14:45:40.134 [info] GET /sources/1/media/12 14:45:40.134 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12", "source_id" => "1"} Pipelines: [:browser] 14:45:40.135 [debug] QUERY OK source="media_items" db=0.1ms idle=1117.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" = ?) [12] 14:45:40.136 [debug] QUERY OK source="tasks" db=0.5ms idle=1117.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [12] 14:45:40.137 [debug] QUERY OK source="sources" db=2.0ms idle=1116.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:45:40.138 [debug] QUERY OK source="oban_jobs" db=1.0ms idle=1118.5ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [16] 14:45:40.139 [debug] QUERY OK source="settings" db=0.6ms idle=936.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:40.140 [debug] QUERY OK source="settings" db=0.3ms queue=0.4ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:40.141 [debug] QUERY OK source="settings" db=0.5ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:40.142 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:45:40.143 [info] Sent 200 in 9ms 14:45:40.683 [info] GET /sources/f9883e85-33c0-412e-ae8c-c9ba232542e8/feed.xml 14:45:40.683 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.rss_feed/2 Parameters: %{"uuid" => "f9883e85-33c0-412e-ae8c-c9ba232542e8"} Pipelines: [:maybe_basic_auth] 14:45:40.683 [debug] QUERY OK source="sources" db=0.2ms idle=543.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."uuid" = ?) ["f9883e85-33c0-412e-ae8c-c9ba232542e8"] 14:45:40.685 [debug] QUERY OK source="media_items" db=1.2ms idle=543.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? [2, 2000] 14:45:40.688 [debug] QUERY OK source="source_metadata" db=0.1ms idle=546.9ms SELECT s0."id", s0."metadata_filepath", s0."fanart_filepath", s0."poster_filepath", s0."banner_filepath", s0."source_id", s0."inserted_at", s0."updated_at", s0."source_id" FROM "source_metadata" AS s0 WHERE (s0."source_id" = ?) [2] 14:45:40.688 [debug] QUERY OK source="media_metadata" db=0.1ms idle=546.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" = ?) [179] 14:45:40.689 [info] Sent 200 in 6ms 14:45:41.299 [info] GET /media/09e0dc59-b195-4649-a908-d3358a4dda2d/stream 14:45:41.299 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "09e0dc59-b195-4649-a908-d3358a4dda2d", "v" => "1784896655"} Pipelines: [:maybe_basic_auth] 14:45:41.300 [debug] QUERY OK source="media_items" db=0.2ms idle=616.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["09e0dc59-b195-4649-a908-d3358a4dda2d"] 14:45:41.300 [debug] Invalid range request for media item: 09e0dc59-b195-4649-a908-d3358a4dda2d - serving full file 14:45:41.301 [info] Sent 200 in 1ms 14:45:43.729 [info] GET / 14:45:43.729 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:45:43.730 [debug] QUERY OK source="settings" db=0.8ms idle=1791.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:43.731 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1792.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:45:43.731 [debug] QUERY OK source="sources" db=0.1ms idle=1525.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:45:43.732 [debug] QUERY OK source="media_items" db=1.0ms idle=793.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:45:43.733 [debug] QUERY OK source="media_items" db=0.4ms idle=525.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:45:43.736 [debug] QUERY OK source="settings" db=2.0ms queue=0.6ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:43.737 [debug] QUERY OK source="settings" db=0.8ms queue=0.1ms idle=5.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:43.739 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:45:43.741 [debug] QUERY OK source="tasks" db=0.8ms idle=7.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:45:43.742 [debug] QUERY OK source="media_items" db=0.4ms idle=8.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:45:43.743 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:45:43.743 [debug] QUERY OK source="sources" db=0.4ms idle=6.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:45:43.746 [debug] QUERY OK source="media_items" db=0.7ms idle=6.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:45:43.748 [debug] QUERY OK source="media_items" db=0.7ms idle=5.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:45:43.749 [info] Sent 200 in 19ms 14:45:52.656 [info] {"source":"oban","duration":501,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:55.996 [info] GET /media/2776172a-8698-4213-a1d2-e47ab7fe39a2/stream 14:45:55.996 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "2776172a-8698-4213-a1d2-e47ab7fe39a2", "v" => "1784896833"} Pipelines: [:maybe_basic_auth] 14:45:55.997 [debug] QUERY OK source="media_items" db=0.2ms idle=1058.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["2776172a-8698-4213-a1d2-e47ab7fe39a2"] 14:45:55.997 [debug] Invalid range request for media item: 2776172a-8698-4213-a1d2-e47ab7fe39a2 - serving full file 14:45:55.997 [info] Sent 200 in 792µs 14:45:57.234 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:46:00.562 [info] {"source":"oban","duration":208,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:46:17.833 [info] GET /media/e814bcdd-7238-45e2-9bf4-9317360f317a/stream 14:46:17.833 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "e814bcdd-7238-45e2-9bf4-9317360f317a", "v" => "1784896698"} Pipelines: [:maybe_basic_auth] 14:46:17.834 [debug] QUERY OK source="media_items" db=0.2ms idle=1896.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["e814bcdd-7238-45e2-9bf4-9317360f317a"] 14:46:17.834 [debug] Invalid range request for media item: e814bcdd-7238-45e2-9bf4-9317360f317a - serving full file 14:46:17.834 [info] Sent 200 in 1ms 14:46:22.657 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:33.137 [info] GET /sources/1/media/3 14:46:33.137 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "3", "source_id" => "1"} Pipelines: [:browser] 14:46:33.137 [debug] QUERY OK source="media_items" db=0.3ms idle=1199.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" = ?) [3] 14:46:33.138 [debug] QUERY OK source="sources" db=0.1ms idle=870.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:46:33.138 [debug] QUERY OK source="tasks" db=0.2ms idle=1200.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" [3] 14:46:33.138 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=200.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" = ?) [7] 14:46:33.139 [debug] QUERY OK source="settings" db=0.1ms idle=200.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:33.139 [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 [] 14:46:33.139 [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 [] 14:46:33.140 [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] 14:46:33.141 [info] Sent 200 in 4ms 14:46:33.727 [info] GET /sources/1/media/5 14:46:33.727 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "5", "source_id" => "1"} Pipelines: [:browser] 14:46:33.727 [debug] QUERY OK source="media_items" db=0.1ms idle=588.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" = ?) [5] 14:46:33.728 [debug] QUERY OK source="tasks" db=0.3ms idle=588.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" [5] 14:46:33.728 [debug] QUERY OK source="sources" db=0.4ms idle=588.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:46:33.729 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=588.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" = ?) [9] 14:46:33.729 [debug] QUERY OK source="settings" db=0.1ms idle=460.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:33.729 [debug] QUERY OK source="settings" db=0.1ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:33.730 [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 [] 14:46:33.730 [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] 14:46:33.732 [info] Sent 200 in 5ms 14:46:34.223 [info] GET /media/752f3337-cbd0-47dd-a717-1fa1742be0e7/stream 14:46:34.223 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "752f3337-cbd0-47dd-a717-1fa1742be0e7", "v" => "1784896725"} Pipelines: [:maybe_basic_auth] 14:46:34.223 [debug] QUERY OK source="media_items" db=0.2ms idle=494.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["752f3337-cbd0-47dd-a717-1fa1742be0e7"] 14:46:34.224 [debug] Invalid range request for media item: 752f3337-cbd0-47dd-a717-1fa1742be0e7 - serving full file 14:46:34.224 [info] Sent 200 in 1ms 14:46:52.658 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:55.851 [info] GET /sources/1/media/7 14:46:55.851 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "7", "source_id" => "1"} Pipelines: [:browser] 14:46:55.852 [debug] QUERY OK source="media_items" db=0.2ms idle=1914.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" = ?) [7] 14:46:55.852 [debug] QUERY OK source="tasks" db=0.1ms idle=1478.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" [7] 14:46:55.853 [debug] QUERY OK source="sources" db=0.5ms idle=914.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:46:55.853 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=915.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" = ?) [11] 14:46:55.854 [debug] QUERY OK source="settings" db=0.1ms idle=478.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:55.854 [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 [] 14:46:55.854 [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 [] 14:46:55.855 [debug] QUERY OK source="media_profiles" db=0.0ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:46:55.856 [info] Sent 200 in 5ms 14:46:56.371 [info] GET /sources/1/media/1 14:46:56.371 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "1", "source_id" => "1"} Pipelines: [:browser] 14:46:56.371 [debug] QUERY OK source="media_items" db=0.1ms idle=517.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [1] 14:46:56.372 [debug] QUERY OK source="tasks" db=0.4ms idle=517.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [1] 14:46:56.372 [debug] QUERY OK source="sources" db=0.4ms idle=517.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:46:56.373 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=517.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" = ?) [5] 14:46:56.373 [debug] QUERY OK source="settings" db=0.2ms idle=517.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:56.373 [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 [] 14:46:56.374 [debug] QUERY OK source="settings" db=0.4ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:56.375 [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] 14:46:56.377 [info] Sent 200 in 6ms 14:46:56.879 [info] GET /sources/1/media/8 14:46:56.879 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "8", "source_id" => "1"} Pipelines: [:browser] 14:46:56.880 [debug] QUERY OK source="media_items" db=0.8ms idle=506.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" = ?) [8] 14:46:56.881 [debug] QUERY OK source="tasks" db=0.2ms idle=506.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" [8] 14:46:56.881 [debug] QUERY OK source="sources" db=0.3ms idle=506.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:46:56.882 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=506.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" = ?) [12] 14:46:56.882 [debug] QUERY OK source="settings" db=0.1ms idle=504.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:56.882 [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 [] 14:46:56.883 [debug] QUERY OK source="settings" db=0.3ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:56.884 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:46:56.885 [info] Sent 200 in 6ms 14:46:57.338 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:46:57.443 [info] GET /sources/1/media/12 14:46:57.443 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "12", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 14:46:57.443 [debug] QUERY OK source="media_items" db=0.3ms idle=561.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" = ?) [12] 14:46:57.444 [debug] QUERY OK source="tasks" db=0.4ms idle=561.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" [12] 14:46:57.445 [debug] QUERY OK source="sources" db=0.3ms queue=0.3ms idle=560.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:46:57.445 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=560.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" = ?) [16] 14:46:57.445 [debug] QUERY OK source="settings" db=0.1ms idle=66.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:46:57.446 [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 [] 14:46:57.446 [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 [] 14:46:57.447 [debug] QUERY OK source="media_profiles" db=0.3ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:46:57.449 [info] Sent 200 in 6ms 14:46:57.963 [info] GET /media/5e545a5f-6a48-418e-a97c-975ad486cae2/stream 14:46:57.963 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "5e545a5f-6a48-418e-a97c-975ad486cae2", "v" => "1784894544"} Pipelines: [:maybe_basic_auth] 14:46:57.964 [debug] QUERY OK source="media_items" db=0.5ms idle=517.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["5e545a5f-6a48-418e-a97c-975ad486cae2"] 14:46:57.964 [debug] Invalid range request for media item: 5e545a5f-6a48-418e-a97c-975ad486cae2 - serving full file 14:46:57.964 [info] Sent 200 in 1ms 14:47:00.563 [info] {"source":"oban","duration":249,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:47:07.822 [info] GET /sources/1/media/2 14:47:07.822 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2", "source_id" => "1"} Pipelines: [:browser] 14:47:07.823 [debug] QUERY OK source="media_items" db=0.3ms idle=1881.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" = ?) [2] 14:47:07.823 [debug] QUERY OK source="tasks" db=0.1ms idle=885.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" [2] 14:47:07.823 [debug] QUERY OK source="sources" db=0.2ms idle=885.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:47:07.824 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=886.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" = ?) [6] 14:47:07.824 [debug] QUERY OK source="settings" db=0.1ms idle=880.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:07.825 [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 [] 14:47:07.825 [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 [] 14:47:07.826 [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] 14:47:07.827 [info] Sent 200 in 4ms 14:47:08.340 [info] GET /sources/1/media/6 14:47:08.340 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "6", "source_id" => "1"} Pipelines: [:browser] 14:47:08.340 [debug] QUERY OK source="media_items" db=0.2ms idle=515.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" = ?) [6] 14:47:08.341 [debug] QUERY OK source="tasks" db=0.4ms idle=515.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [6] 14:47:08.341 [debug] QUERY OK source="sources" db=0.5ms idle=515.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:47:08.342 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=515.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" = ?) [10] 14:47:08.343 [debug] QUERY OK source="settings" db=0.7ms idle=397.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:08.343 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:08.345 [debug] QUERY OK source="settings" db=0.6ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:08.346 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:47:08.348 [info] Sent 200 in 8ms 14:47:08.870 [info] GET /sources/1/media/9 14:47:08.870 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "9", "source_id" => "1"} Pipelines: [:browser] 14:47:08.871 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=528.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [9] 14:47:08.871 [debug] QUERY OK source="tasks" db=0.2ms idle=528.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" [9] 14:47:08.871 [debug] QUERY OK source="sources" db=0.3ms idle=527.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:47:08.872 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=526.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" = ?) [13] 14:47:08.872 [debug] QUERY OK source="settings" db=0.1ms idle=526.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:08.873 [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 [] 14:47:08.873 [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 [] 14:47:08.874 [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] 14:47:08.876 [info] Sent 200 in 5ms 14:47:09.374 [info] GET /sources/1/media/3/force_download 14:47:09.374 [debug] QUERY OK source="settings" db=0.2ms idle=501.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:09.375 [debug] QUERY OK source="settings" db=0.2ms idle=501.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:09.375 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:47:09.375 [error] #PID<0.4708.0> running PinchflatWeb.Endpoint (connection #PID<0.4707.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/3/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/1/media/3/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4707.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/3/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 42454}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/3", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4708.0>, params: %{}, path_info: ["sources", "1", "media", "3", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/3"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/3/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU6ksVufRmXjSMAAFDC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4707.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/3/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 42454}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/3", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/3/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4707.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/3/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 42454}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/3", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, (truncated) 14:47:09.903 [info] GET /media/d8974825-b3ae-4e08-80cd-c71407b419d1/stream 14:47:09.903 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "d8974825-b3ae-4e08-80cd-c71407b419d1", "v" => "1784894436"} Pipelines: [:maybe_basic_auth] 14:47:09.903 [debug] QUERY OK source="media_items" db=0.3ms idle=1029.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" = ?) ["d8974825-b3ae-4e08-80cd-c71407b419d1"] 14:47:09.904 [debug] Invalid range request for media item: d8974825-b3ae-4e08-80cd-c71407b419d1 - serving full file 14:47:09.904 [info] Sent 200 in 1ms 14:47:20.961 [info] GET /sources/1/media/5/force_download 14:47:20.962 [debug] QUERY OK source="settings" db=0.3ms idle=1991.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:20.962 [debug] QUERY OK source="settings" db=0.1ms idle=1991.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:20.962 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:47:20.963 [error] #PID<0.4712.0> running PinchflatWeb.Endpoint (connection #PID<0.4711.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/5/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/1/media/5/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4711.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/5/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60212}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/5", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4712.0>, params: %{}, path_info: ["sources", "1", "media", "5", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/5"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/5/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU6lXga9YvzoXYAAFEC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4711.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/5/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60212}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/5", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/5/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4711.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/5/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60212}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/5", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, (truncated) 14:47:22.362 [info] GET /sources/1/media/7/force_download 14:47:22.363 [debug] QUERY OK source="settings" db=0.3ms idle=1231.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:22.363 [debug] QUERY OK source="settings" db=0.2ms idle=392.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:22.363 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:47:22.364 [error] #PID<0.4715.0> running PinchflatWeb.Endpoint (connection #PID<0.4714.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/7/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/1/media/7/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4714.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/7/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60220}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/7", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4715.0>, params: %{}, path_info: ["sources", "1", "media", "7", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/7"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/7/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU6lcuZPcGS2ywAAFEi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4714.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/7/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60220}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/7", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/7/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4714.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/7/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60220}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/7", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, (truncated) 14:47:22.659 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:26.712 [info] GET /sources/1/media/1/force_download 14:47:26.713 [debug] QUERY OK source="settings" db=0.4ms idle=741.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:26.713 [debug] QUERY OK source="settings" db=0.2ms idle=742.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:47:26.713 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:47:26.714 [error] #PID<0.4717.0> running PinchflatWeb.Endpoint (connection #PID<0.4716.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/1/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/1/media/1/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4716.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/1/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38454}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/1", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4717.0>, params: %{}, path_info: ["sources", "1", "media", "1", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/1"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/1/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU6ls7fzd-L8KsAAFFC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4716.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/1/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38454}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/1", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/1/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4716.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/1/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 38454}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/1", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, (truncated) 14:47:39.007 [info] GET /media/093e9b74-909c-4322-a5a5-2a20b0d5896e/stream 14:47:39.007 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "093e9b74-909c-4322-a5a5-2a20b0d5896e", "v" => "1784896645"} Pipelines: [:maybe_basic_auth] 14:47:39.008 [debug] QUERY OK source="media_items" db=0.3ms idle=1037.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["093e9b74-909c-4322-a5a5-2a20b0d5896e"] 14:47:39.008 [debug] Invalid range request for media item: 093e9b74-909c-4322-a5a5-2a20b0d5896e - serving full file 14:47:39.008 [info] Sent 200 in 1ms 14:47:52.660 [info] {"source":"oban","duration":559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:57.544 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:48:00.564 [info] {"source":"oban","duration":188,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:48:18.295 [info] GET /media/00f5a2e5-0a5b-4e47-8531-2be60054e052/stream 14:48:18.295 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "00f5a2e5-0a5b-4e47-8531-2be60054e052", "v" => "1784894324"} Pipelines: [:maybe_basic_auth] 14:48:18.295 [debug] QUERY OK source="media_items" db=0.2ms idle=516.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["00f5a2e5-0a5b-4e47-8531-2be60054e052"] 14:48:18.296 [debug] Invalid range request for media item: 00f5a2e5-0a5b-4e47-8531-2be60054e052 - serving full file 14:48:18.296 [info] Sent 200 in 787µs 14:48:22.661 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:52.662 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:54.119 [info] GET /sources/1/media/8/force_download 14:48:54.119 [debug] QUERY OK source="settings" db=0.2ms idle=279.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:54.119 [debug] QUERY OK source="settings" db=0.1ms idle=72.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:48:54.120 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:48:54.120 [error] #PID<0.4731.0> running PinchflatWeb.Endpoint (connection #PID<0.4730.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/8/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/1/media/8/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4730.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/8/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37526}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/8", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4731.0>, params: %{}, path_info: ["sources", "1", "media", "8", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/8"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/8/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU6qyi0J6QVEdQAAFIC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4730.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/8/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37526}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/8", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/8/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4730.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/8/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37526}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdk9VaU9fTUE5MFhQNjlQRDNkbkxHTGdH.l7Q2DMMHdlanWAUm7IIsY1aaNDtv4wwwrJY8Ud2BL1s", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/8", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, (truncated) 14:48:57.686 [info] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:49:00.565 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:49:22.663 [info] {"source":"oban","duration":559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:23.673 [info] GET /media/25d90035-5c66-40d4-8581-754a85e77bfc/stream 14:49:23.673 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "25d90035-5c66-40d4-8581-754a85e77bfc", "v" => "1784894458"} Pipelines: [:maybe_basic_auth] 14:49:23.673 [debug] QUERY OK source="media_items" db=0.3ms idle=1626.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["25d90035-5c66-40d4-8581-754a85e77bfc"] 14:49:23.674 [debug] Invalid range request for media item: 25d90035-5c66-40d4-8581-754a85e77bfc - serving full file 14:49:23.674 [info] Sent 200 in 1ms 14:49:52.664 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:57.816 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:50:00.531 [info] GET / 14:50:00.531 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:50:00.532 [debug] QUERY OK source="settings" db=0.4ms idle=611.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:00.532 [debug] QUERY OK source="media_profiles" db=0.1ms idle=485.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:50:00.532 [debug] QUERY OK source="sources" db=0.1ms idle=485.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:50:00.533 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=485.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:00.533 [debug] QUERY OK source="media_items" db=0.3ms idle=486.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:00.534 [debug] QUERY OK source="settings" db=0.3ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:00.534 [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 [] 14:50:00.535 [debug] QUERY OK source="settings" db=0.3ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:00.536 [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"] 14:50:00.536 [debug] QUERY OK source="media_items" db=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 (NOT (m0."media_filepath" IS NULL)) [] 14:50:00.536 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:50:00.537 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:50:00.539 [debug] QUERY OK source="media_items" db=0.3ms 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"))) [] 14:50:00.540 [debug] QUERY OK source="media_items" db=0.5ms idle=3.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:50:00.540 [info] Sent 200 in 9ms 14:50:00.566 [info] {"source":"oban","duration":208,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:50:14.009 [info] GET / 14:50:14.009 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:50:14.010 [debug] QUERY OK source="settings" db=0.7ms idle=1963.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:14.011 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1964.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:50:14.011 [debug] QUERY OK source="sources" db=0.1ms idle=1964.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:50:14.011 [debug] QUERY OK source="media_items" db=0.1ms idle=1078.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:14.012 [debug] QUERY OK source="media_items" db=0.1ms idle=77.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:14.012 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:14.012 [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 [] 14:50:14.013 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:14.014 [debug] QUERY OK source="tasks" db=0.6ms idle=2.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:50:14.015 [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 (NOT (m0."media_filepath" IS NULL)) [] 14:50:14.015 [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] 14:50:14.016 [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" = ?) [2] 14:50:14.018 [debug] QUERY OK source="media_items" db=0.3ms idle=4.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"))) [] 14:50:14.019 [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:50:14.019 [info] Sent 200 in 10ms 14:50:22.665 [info] {"source":"oban","duration":490,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:28.615 [info] GET /media/bd39c63c-9dd6-48b6-87ae-70ecf78d9c48/stream 14:50:28.615 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bd39c63c-9dd6-48b6-87ae-70ecf78d9c48", "v" => "1784894465"} Pipelines: [:maybe_basic_auth] 14:50:28.615 [debug] QUERY OK source="media_items" db=0.2ms idle=1568.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" = ?) ["bd39c63c-9dd6-48b6-87ae-70ecf78d9c48"] 14:50:28.616 [debug] Invalid range request for media item: bd39c63c-9dd6-48b6-87ae-70ecf78d9c48 - serving full file 14:50:28.616 [info] Sent 200 in 1ms 14:50:52.666 [info] {"source":"oban","duration":598,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:57.958 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:50:58.559 [info] GET / 14:50:58.559 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:50:58.560 [debug] QUERY OK source="settings" db=0.3ms idle=1390.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:58.560 [debug] QUERY OK source="media_profiles" db=0.1ms idle=571.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:50:58.560 [debug] QUERY OK source="sources" db=0.1ms idle=390.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:50:58.561 [debug] QUERY OK source="media_items" db=0.3ms idle=391.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:58.562 [debug] QUERY OK source="media_items" db=0.4ms idle=391.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:58.562 [debug] QUERY OK source="settings" db=0.4ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:58.563 [debug] QUERY OK source="settings" db=0.3ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:58.563 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:50:58.564 [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"] 14:50:58.565 [debug] QUERY OK source="media_items" db=0.1ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:50:58.565 [debug] QUERY OK source="media_items" db=0.2ms idle=2.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:50:58.566 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=2.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 14:50:58.568 [debug] QUERY OK source="media_items" db=0.2ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:50:58.569 [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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:50:58.569 [info] Sent 200 in 10ms 14:51:00.567 [info] {"source":"oban","duration":299,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:51:22.667 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:25.512 [info] GET /media/49471b95-f122-4638-af21-b002a4f7d55d/stream 14:51:25.512 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "49471b95-f122-4638-af21-b002a4f7d55d", "v" => "1784894511"} Pipelines: [:maybe_basic_auth] 14:51:25.512 [debug] QUERY OK source="media_items" db=0.1ms idle=1342.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["49471b95-f122-4638-af21-b002a4f7d55d"] 14:51:25.513 [debug] Invalid range request for media item: 49471b95-f122-4638-af21-b002a4f7d55d - serving full file 14:51:25.513 [info] Sent 200 in 791µs 14:51:52.668 [info] {"source":"oban","duration":483,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:58.010 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:52:00.568 [info] {"source":"oban","duration":198,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:52:15.491 [info] GET /sources/1/media/6/force_download 14:52:15.492 [debug] QUERY OK source="settings" db=0.3ms idle=1322.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:15.492 [debug] QUERY OK source="settings" db=0.2ms idle=1322.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:52:15.492 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:52:15.493 [error] #PID<0.4769.0> running PinchflatWeb.Endpoint (connection #PID<0.4768.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/6/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/1/media/6/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4768.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/6/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 34928}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/6", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4769.0>, params: %{}, path_info: ["sources", "1", "media", "6", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/6"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/6/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU62gt0PD6xD3oAACZh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4768.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/6/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 34928}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/6", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/6/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4768.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/6/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 34928}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/6", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4769.0>, params: %{}, path_info: ["sources", "1", "media", "6", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, (truncated) 14:52:22.669 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:52.670 [info] {"source":"oban","duration":595,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:58.126 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:53:00.154 [info] GET /sources/1/media/2/force_download 14:53:00.155 [debug] QUERY OK source="settings" db=0.1ms idle=1985.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:00.155 [debug] QUERY OK source="settings" db=0.1ms idle=1985.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:53:00.155 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:53:00.155 [error] #PID<0.4777.0> running PinchflatWeb.Endpoint (connection #PID<0.4776.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/2/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/1/media/2/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4776.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/2/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47942}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/2", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4777.0>, params: %{}, path_info: ["sources", "1", "media", "2", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/2"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/2/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU65HGUkBI5WLEAAFKC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4776.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/2/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47942}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/2", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/2/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4776.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/2/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47942}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/2", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4777.0>, params: %{}, path_info: ["sources", "1", "media", "2", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, (truncated) 14:53:00.569 [info] {"source":"oban","duration":300,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:53:22.671 [info] {"source":"oban","duration":522,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:52.672 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:58.184 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:54:00.569 [info] {"source":"oban","duration":210,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:54:02.067 [info] GET /sources/1/media/9/force_download 14:54:02.067 [debug] QUERY OK source="settings" db=0.2ms idle=1897.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:02.067 [debug] QUERY OK source="settings" db=0.1ms idle=1897.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:54:02.068 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:54:02.068 [error] #PID<0.4786.0> running PinchflatWeb.Endpoint (connection #PID<0.4785.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/9/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/1/media/9/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4785.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/9/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 52940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/9", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4786.0>, params: %{}, path_info: ["sources", "1", "media", "9", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/9"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/9/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU68tvYUBQBvPAAACbB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4785.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/9/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 52940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/9", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/9/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4785.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/9/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 52940}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/9", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4786.0>, params: %{}, path_info: ["sources", "1", "media", "9", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, (truncated) 14:54:22.673 [info] {"source":"oban","duration":450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:52.674 [info] {"source":"oban","duration":438,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:58.317 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:55:00.571 [info] {"source":"oban","duration":270,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:55:05.215 [info] GET /sources/1/media/4 14:55:05.215 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "4", "source_id" => "1"} Pipelines: [:browser] 14:55:05.215 [debug] QUERY OK source="media_items" db=0.1ms idle=1044.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [4] 14:55:05.216 [debug] QUERY OK source="sources" db=0.1ms idle=1045.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 14:55:05.216 [debug] QUERY OK source="tasks" db=0.3ms idle=1045.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" [4] 14:55:05.216 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1045.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" = ?) [8] 14:55:05.217 [debug] QUERY OK source="settings" db=0.1ms idle=836.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:05.217 [debug] QUERY OK source="settings" db=0.2ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:05.218 [debug] QUERY OK source="settings" db=0.5ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:55:05.219 [debug] QUERY OK source="media_profiles" db=0.6ms idle=2.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:55:05.221 [info] Sent 200 in 6ms 14:55:22.675 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:52.676 [info] {"source":"oban","duration":562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:58.402 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:56:00.572 [info] {"source":"oban","duration":272,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:56:22.677 [info] {"source":"oban","duration":541,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:52.678 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:58.460 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:57:00.573 [info] {"source":"oban","duration":163,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:57:03.571 [info] GET /media/3ed98992-8070-4e9e-a5e6-64d56b285236/stream 14:57:03.571 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "3ed98992-8070-4e9e-a5e6-64d56b285236", "v" => "1784895868"} Pipelines: [:maybe_basic_auth] 14:57:03.571 [debug] QUERY OK source="media_items" db=0.2ms idle=1400.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["3ed98992-8070-4e9e-a5e6-64d56b285236"] 14:57:03.572 [debug] Invalid range request for media item: 3ed98992-8070-4e9e-a5e6-64d56b285236 - serving full file 14:57:03.572 [info] Sent 200 in 728µs 14:57:22.679 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:52.681 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:58.518 [info] CONNECTED TO Phoenix.LiveView.Socket in 37µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:58:00.573 [info] {"source":"oban","duration":188,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:58:22.682 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:52.683 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:58.768 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 14:59:00.575 [info] {"source":"oban","duration":205,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:59:22.684 [info] {"source":"oban","duration":571,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:52.685 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:59.278 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:00:00.576 [info] {"source":"oban","duration":197,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:00:03.426 [info] GET /sources/2 15:00:03.426 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 15:00:03.427 [debug] QUERY OK source="sources" db=0.7ms idle=1108.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:00:03.428 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1109.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" = ?) [2] 15:00:03.428 [debug] QUERY OK source="tasks" db=0.2ms idle=1109.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"] 15:00:03.429 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=1109.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" = ?) [128] 15:00:03.429 [debug] QUERY OK source="settings" db=0.0ms idle=672.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:03.429 [debug] QUERY OK source="settings" db=0.0ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:03.429 [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 [] 15:00:03.430 [debug] QUERY OK source="sources" db=0.1ms idle=1.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:00:03.431 [debug] QUERY OK source="media_items" db=0.2ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 15:00:03.431 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 15:00:03.432 [debug] QUERY OK source="sources" db=0.2ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:00:03.432 [debug] QUERY OK source="media_items" db=0.1ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 15:00:03.433 [debug] QUERY OK source="media_items" db=0.1ms idle=1.9ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 15:00:03.433 [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" = ?) [2] 15:00:03.434 [debug] QUERY OK source="media_items" db=0.1ms idle=2.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [2] 15:00:03.434 [debug] QUERY OK source="media_items" db=0.4ms idle=1.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 15:00:03.435 [info] Sent 200 in 9ms 15:00:22.686 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:38.041 [info] GET /sources/1 15:00:38.041 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 15:00:38.042 [debug] QUERY OK source="sources" db=0.6ms idle=1237.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:00:38.042 [debug] QUERY OK source="media_profiles" db=0.1ms idle=723.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:00:38.042 [debug] QUERY OK source="tasks" db=0.1ms idle=723.7ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 15:00:38.043 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=724.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" = ?) [66] 15:00:38.043 [debug] QUERY OK source="settings" db=0.1ms idle=237.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:38.044 [debug] QUERY OK source="settings" db=0.3ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:00:38.044 [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 [] 15:00:38.046 [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" = ?) [1] 15:00:38.046 [debug] QUERY OK source="media_items" db=0.2ms 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")))) [1] 15:00:38.048 [debug] QUERY OK source="media_items" db=1.1ms idle=3.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 15:00:38.048 [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" = ?) [1] 15:00:38.048 [debug] QUERY OK source="media_items" db=0.1ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 15:00:38.049 [debug] QUERY OK source="media_items" db=0.3ms idle=2.7ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 15:00:38.050 [debug] QUERY OK source="sources" db=0.1ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:00:38.050 [debug] QUERY OK source="media_items" db=0.2ms idle=2.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [1] 15:00:38.051 [debug] QUERY OK source="media_items" db=0.5ms idle=2.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 15:00:38.052 [info] Sent 200 in 10ms 15:00:52.687 [info] {"source":"oban","duration":461,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:59.484 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:01:00.577 [info] {"source":"oban","duration":167,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:01:07.612 [info] GET /media/e6b2f8e1-ec22-4ed7-a374-c985815c4e75/stream 15:01:07.612 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "e6b2f8e1-ec22-4ed7-a374-c985815c4e75", "v" => "1784894361"} Pipelines: [:maybe_basic_auth] 15:01:07.613 [debug] QUERY OK source="media_items" db=0.6ms idle=1294.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["e6b2f8e1-ec22-4ed7-a374-c985815c4e75"] 15:01:07.613 [debug] Invalid range request for media item: e6b2f8e1-ec22-4ed7-a374-c985815c4e75 - serving full file 15:01:07.614 [info] Sent 200 in 1ms 15:01:22.688 [info] {"source":"oban","duration":520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:33.983 [info] GET /media/1ce503d6-7c8e-4003-8616-eb8b7d78fd3d/stream 15:01:33.983 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "1ce503d6-7c8e-4003-8616-eb8b7d78fd3d", "v" => "1784896613"} Pipelines: [:maybe_basic_auth] 15:01:33.984 [debug] QUERY OK source="media_items" db=0.8ms idle=1598.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["1ce503d6-7c8e-4003-8616-eb8b7d78fd3d"] 15:01:33.984 [debug] Invalid range request for media item: 1ce503d6-7c8e-4003-8616-eb8b7d78fd3d - serving full file 15:01:33.984 [info] Sent 200 in 1ms 15:01:52.689 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:59.330 [info] GET /sources/1/edit 15:01:59.330 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 15:01:59.331 [debug] QUERY OK source="sources" db=0.2ms queue=0.5ms idle=1945.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:01:59.331 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1117.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 15:01:59.332 [debug] QUERY OK source="settings" db=0.1ms idle=947.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:59.332 [debug] QUERY OK source="settings" db=0.1ms idle=947.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:59.333 [debug] QUERY OK source="settings" db=0.2ms idle=117.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:01:59.335 [info] Sent 200 in 5ms 15:01:59.539 [info] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:02:00.578 [info] {"source":"oban","duration":249,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:02:20.259 [info] GET /sources/2/edit 15:02:20.259 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 15:02:20.260 [debug] QUERY OK source="sources" db=0.7ms idle=1874.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:02:20.260 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1875.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" [] 15:02:20.261 [debug] QUERY OK source="settings" db=0.7ms idle=1875.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:20.261 [debug] QUERY OK source="settings" db=0.1ms idle=1020.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:20.262 [debug] QUERY OK source="settings" db=0.3ms 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 [] 15:02:20.265 [info] Sent 200 in 6ms 15:02:22.690 [info] {"source":"oban","duration":583,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:40.732 [info] GET /sources/1/media/4/force_download 15:02:40.733 [debug] QUERY OK source="settings" db=0.2ms idle=1348.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:40.733 [debug] QUERY OK source="settings" db=0.1ms idle=1348.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:02:40.733 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:02:40.733 [error] #PID<0.4869.0> running PinchflatWeb.Endpoint (connection #PID<0.4868.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/4/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/1/media/4/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4868.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/4/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 44424}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/4", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4869.0>, params: %{}, path_info: ["sources", "1", "media", "4", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/4"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/4/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU7a5646FUFM_UAACqh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4868.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/4/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 44424}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/4", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/4/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4868.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/4/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 44424}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/4", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, (truncated) 15:02:52.691 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:58.731 [info] GET /media/80083be9-3197-49d2-a500-734d34252555/stream 15:02:58.731 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "80083be9-3197-49d2-a500-734d34252555", "v" => "1784894402"} Pipelines: [:maybe_basic_auth] 15:02:58.731 [debug] QUERY OK source="media_items" db=0.2ms idle=449.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["80083be9-3197-49d2-a500-734d34252555"] 15:02:58.732 [debug] Invalid range request for media item: 80083be9-3197-49d2-a500-734d34252555 - serving full file 15:02:58.732 [info] Sent 200 in 891µs 15:02:59.664 [info] CONNECTED TO Phoenix.LiveView.Socket in 44µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:03:00.579 [info] {"source":"oban","duration":190,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:03:22.692 [info] {"source":"oban","duration":574,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:52.693 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:59.905 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:04:00.580 [info] {"source":"oban","duration":268,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:04:22.694 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:42.504 [info] GET /sources/2/force_index 15:04:42.504 [debug] QUERY OK source="settings" db=0.1ms idle=119.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:42.504 [debug] QUERY OK source="settings" db=0.0ms idle=119.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:04:42.504 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:04:42.505 [error] #PID<0.4888.0> running PinchflatWeb.Endpoint (connection #PID<0.4887.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.4887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33576}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4888.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://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU7h_jbtilIczYAACth"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33576}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4887.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33576}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has (truncated) 15:04:52.695 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:00.034 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:05:00.581 [info] {"source":"oban","duration":223,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:05:22.696 [info] {"source":"oban","duration":606,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:25.597 [info] GET / 15:05:25.597 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:05:25.598 [debug] QUERY OK source="settings" db=0.3ms idle=1213.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:25.598 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1213.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:05:25.599 [debug] QUERY OK source="sources" db=0.2ms idle=1214.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:05:25.599 [debug] QUERY OK source="media_items" db=0.2ms idle=1119.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:25.599 [debug] QUERY OK source="media_items" db=0.1ms idle=119.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:25.600 [debug] QUERY OK source="settings" db=0.0ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:25.600 [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 [] 15:05:25.601 [debug] QUERY OK source="settings" db=0.3ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:25.602 [debug] QUERY OK source="tasks" db=0.1ms idle=2.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 15:05:25.602 [debug] QUERY OK source="media_items" db=0.2ms 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)) [] 15:05:25.603 [debug] QUERY OK source="media_items" db=0.3ms idle=2.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 15:05:25.603 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:05:25.606 [debug] QUERY OK source="media_items" db=0.2ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 15:05:25.607 [debug] QUERY OK source="media_items" db=0.9ms idle=4.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 15:05:25.608 [info] Sent 200 in 10ms 15:05:25.794 [info] GET / 15:05:25.794 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:05:25.794 [debug] QUERY OK source="settings" db=0.2ms idle=191.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:25.795 [debug] QUERY OK source="media_profiles" db=0.0ms idle=191.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:05:25.795 [debug] QUERY OK source="sources" db=0.1ms idle=191.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:05:25.795 [debug] QUERY OK source="media_items" db=0.2ms idle=189.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:25.796 [debug] QUERY OK source="media_items" db=0.2ms idle=188.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:25.796 [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 [] 15:05:25.796 [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 [] 15:05:25.797 [debug] QUERY OK source="settings" db=0.4ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:25.798 [debug] QUERY OK source="tasks" db=0.1ms idle=2.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 15:05:25.798 [debug] QUERY OK source="media_items" db=0.1ms idle=2.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:25.799 [debug] QUERY OK source="media_items" db=0.3ms idle=2.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 15:05:25.799 [debug] QUERY OK source="sources" db=0.1ms idle=2.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:05:25.801 [debug] QUERY OK source="media_items" db=0.2ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 15:05:25.802 [debug] QUERY OK source="media_items" db=0.4ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:05:25.803 [info] Sent 200 in 8ms 15:05:27.027 [info] GET /sources/1/force_index 15:05:27.028 [debug] QUERY OK source="settings" db=0.2ms idle=1228.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.028 [debug] QUERY OK source="settings" db=0.0ms idle=1228.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:27.028 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:05:27.028 [error] #PID<0.4899.0> running PinchflatWeb.Endpoint (connection #PID<0.4898.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4898.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40934}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.4899.0>, params: %{}, path_info: ["sources", "1", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU7klaqArBhKA4AAC0h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4898.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40934}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.4898.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40934}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYdFJmZmxBMG0zNldTRVlsYm1Ldi01bW9C.M1ZD9mmUIX34C_MtYUkqFCuvkI2YQh2rjPZXMUwiBJE", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has (truncated) 15:05:34.174 [info] GET / 15:05:34.174 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:05:34.174 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1789.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:34.174 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1686.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:05:34.175 [debug] QUERY OK source="sources" db=0.0ms idle=790.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:05:34.175 [debug] QUERY OK source="media_items" db=0.1ms idle=790.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:34.175 [debug] QUERY OK source="media_items" db=0.0ms idle=686.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:34.175 [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 [] 15:05:34.176 [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 [] 15:05:34.176 [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 [] 15:05:34.177 [debug] QUERY OK source="tasks" db=0.5ms idle=1.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"] 15:05:34.178 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:34.178 [debug] QUERY OK source="media_items" db=0.5ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 15:05:34.179 [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" = ?) [2] 15:05:34.181 [debug] QUERY OK source="media_items" db=0.2ms idle=4.5ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 15:05:34.182 [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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:05:34.182 [info] Sent 200 in 8ms 15:05:52.697 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:53.029 [info] GET / 15:05:53.029 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:05:53.030 [debug] QUERY OK source="settings" db=0.7ms 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 [] 15:05:53.031 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1646.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:05:53.031 [debug] QUERY OK source="sources" db=0.0ms idle=1520.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:05:53.031 [debug] QUERY OK source="media_items" db=0.1ms idle=519.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:53.032 [debug] QUERY OK source="media_items" db=0.4ms idle=334.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:05:53.033 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:53.033 [debug] QUERY OK source="settings" db=0.3ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:53.034 [debug] QUERY OK source="settings" db=0.2ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:05:53.035 [debug] QUERY OK source="tasks" db=0.3ms idle=3.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 15:05:53.036 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 15:05:53.037 [debug] QUERY OK source="media_items" db=0.4ms 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:05:53.037 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:05:53.039 [debug] QUERY OK source="media_items" db=0.3ms idle=5.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:05:53.041 [debug] QUERY OK source="media_items" db=1.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] 15:05:53.042 [info] Sent 200 in 12ms 15:06:00.124 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:06:00.582 [info] {"source":"oban","duration":167,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:06:22.698 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:52.699 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:00.455 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:07:00.583 [info] {"source":"oban","duration":116,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:07:22.700 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:52.701 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:00.502 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:08:00.584 [info] {"source":"oban","duration":247,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:08:22.702 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:26.206 [info] GET /sources/1/media/121/edit 15:08:26.207 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "121", "source_id" => "1"} Pipelines: [:browser] 15:08:26.207 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1822.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" = ?) [121] 15:08:26.208 [debug] QUERY OK source="settings" db=0.1ms idle=1822.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:08:26.208 [debug] QUERY OK source="settings" db=0.1ms idle=1823.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:08:26.208 [debug] QUERY OK source="settings" db=0.1ms idle=1537.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:08:26.209 [info] Sent 200 in 2ms 15:08:52.703 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:00.585 [info] {"source":"oban","duration":158,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:09:00.648 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:09:17.482 [info] GET /sources/2/media/122/edit 15:09:17.482 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "122", "source_id" => "2"} Pipelines: [:browser] 15:09:17.483 [debug] QUERY OK source="media_items" db=0.1ms idle=1098.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" = ?) [122] 15:09:17.484 [debug] QUERY OK source="settings" db=0.4ms idle=1098.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:09:17.484 [debug] QUERY OK source="settings" db=0.3ms idle=737.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:09:17.485 [debug] QUERY OK source="settings" db=0.3ms idle=99.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:09:17.486 [info] Sent 200 in 3ms 15:09:22.704 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:52.705 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:00.586 [info] {"source":"oban","duration":263,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:10:00.736 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:10:02.785 [info] GET /sources/2/media/178 15:10:02.785 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "178", "source_id" => "2"} Pipelines: [:browser] 15:10:02.785 [debug] QUERY OK source="media_items" db=0.2ms idle=1400.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [178] 15:10:02.786 [debug] QUERY OK source="tasks" db=0.1ms idle=988.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" [178] 15:10:02.786 [debug] QUERY OK source="sources" db=0.3ms idle=401.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:10:02.787 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=401.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" = ?) [126] 15:10:02.787 [debug] QUERY OK source="settings" db=0.0ms queue=0.1ms idle=402.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:10:02.787 [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 [] 15:10:02.788 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:10:02.788 [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" = ?) [2] 15:10:02.790 [info] Sent 200 in 5ms 15:10:22.706 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:43.255 [info] GET /sources/2/media/173 15:10:43.255 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "173", "source_id" => "2"} Pipelines: [:browser] 15:10:43.255 [debug] QUERY OK source="media_items" db=0.1ms idle=870.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" = ?) [173] 15:10:43.256 [debug] QUERY OK source="tasks" db=0.2ms idle=871.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" [173] 15:10:43.257 [debug] QUERY OK source="sources" db=0.8ms idle=871.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:10:43.258 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=872.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" = ?) [121] 15:10:43.259 [debug] QUERY OK source="settings" db=0.5ms idle=406.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:10:43.259 [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 [] 15:10:43.260 [debug] QUERY OK source="settings" db=0.2ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:10:43.260 [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" = ?) [2] 15:10:43.262 [info] Sent 200 in 6ms 15:10:52.707 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:00.587 [info] {"source":"oban","duration":242,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:11:00.862 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:11:21.655 [info] GET /sources/2/media/174 15:11:21.656 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "174", "source_id" => "2"} Pipelines: [:browser] 15:11:21.656 [debug] QUERY OK source="media_items" db=0.2ms idle=1271.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" = ?) [174] 15:11:21.657 [debug] QUERY OK source="tasks" db=0.1ms idle=1271.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [174] 15:11:21.657 [debug] QUERY OK source="sources" db=0.5ms idle=1271.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:11:21.658 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1272.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" = ?) [122] 15:11:21.659 [debug] QUERY OK source="settings" db=0.5ms idle=761.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:11:21.659 [debug] QUERY OK source="settings" db=0.2ms queue=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:11:21.660 [debug] QUERY OK source="settings" db=0.2ms queue=0.4ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:11:21.662 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:11:21.664 [info] Sent 200 in 8ms 15:11:22.709 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:52.710 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:56.717 [info] GET /sources/2/media/175 15:11:56.717 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "175", "source_id" => "2"} Pipelines: [:browser] 15:11:56.718 [debug] QUERY OK source="media_items" db=0.6ms idle=1332.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" = ?) [175] 15:11:56.718 [debug] QUERY OK source="tasks" db=0.1ms idle=1333.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" [175] 15:11:56.718 [debug] QUERY OK source="sources" db=0.1ms idle=782.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:11:56.719 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=334.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" = ?) [123] 15:11:56.720 [debug] QUERY OK source="settings" db=0.5ms idle=334.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:11:56.720 [debug] QUERY OK source="settings" db=0.3ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:11:56.721 [debug] QUERY OK source="settings" db=0.4ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:11:56.722 [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" = ?) [2] 15:11:56.724 [info] Sent 200 in 7ms 15:12:00.588 [info] {"source":"oban","duration":179,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:12:01.238 [info] CONNECTED TO Phoenix.LiveView.Socket in 40µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:12:22.711 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:25.779 [info] GET /sources/2/media/135 15:12:25.779 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "135", "source_id" => "2"} Pipelines: [:browser] 15:12:25.780 [debug] QUERY OK source="media_items" db=0.2ms idle=1393.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" = ?) [135] 15:12:25.780 [debug] QUERY OK source="tasks" db=0.1ms idle=1393.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" [135] 15:12:25.781 [debug] QUERY OK source="sources" db=0.7ms idle=1393.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:12:25.782 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=1394.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" = ?) [83] 15:12:25.782 [debug] QUERY OK source="settings" db=0.3ms idle=815.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:12:25.783 [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:12:25.784 [debug] QUERY OK source="settings" db=0.5ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:12:25.785 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 15:12:25.786 [info] Sent 200 in 6ms 15:12:52.712 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:53.755 [info] GET /sources/2/media/130 15:12:53.756 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "130", "source_id" => "2"} Pipelines: [:browser] 15:12:53.757 [debug] QUERY OK source="media_items" db=0.7ms idle=1043.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [130] 15:12:53.757 [debug] QUERY OK source="tasks" db=0.2ms idle=750.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" [130] 15:12:53.757 [debug] QUERY OK source="sources" db=0.3ms idle=370.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:12:53.758 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=370.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" = ?) [78] 15:12:53.758 [debug] QUERY OK source="settings" db=0.1ms idle=371.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:12:53.758 [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 [] 15:12:53.759 [debug] QUERY OK source="settings" db=0.5ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:12:53.760 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 15:12:53.762 [info] Sent 200 in 6ms 15:13:00.589 [info] {"source":"oban","duration":175,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:13:01.449 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:13:18.023 [info] GET /sources/2/media/176 15:13:18.023 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "176", "source_id" => "2"} Pipelines: [:browser] 15:13:18.024 [debug] QUERY OK source="media_items" db=0.1ms idle=1637.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" = ?) [176] 15:13:18.025 [debug] QUERY OK source="sources" db=0.5ms idle=637.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:13:18.025 [debug] QUERY OK source="tasks" db=1.3ms idle=989.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" [176] 15:13:18.026 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=639.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" = ?) [124] 15:13:18.027 [debug] QUERY OK source="settings" db=0.3ms idle=639.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:13:18.027 [debug] QUERY OK source="settings" db=0.0ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:13:18.030 [debug] QUERY OK source="settings" db=2.7ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:13:18.031 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:13:18.033 [info] Sent 200 in 9ms 15:13:22.713 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:40.407 [info] GET /sources/2/media/134 15:13:40.407 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "134", "source_id" => "2"} Pipelines: [:browser] 15:13:40.407 [debug] QUERY OK source="media_items" db=0.2ms idle=1020.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" = ?) [134] 15:13:40.408 [debug] QUERY OK source="tasks" db=0.3ms idle=1021.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" [134] 15:13:40.408 [debug] QUERY OK source="sources" db=0.4ms idle=1021.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:13:40.409 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=346.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" = ?) [82] 15:13:40.410 [debug] QUERY OK source="settings" db=0.2ms queue=0.3ms idle=22.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:13:40.410 [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 [] 15:13:40.411 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:13:40.412 [debug] QUERY OK source="media_profiles" db=0.4ms 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" = ?) [2] 15:13:40.414 [info] Sent 200 in 7ms 15:13:52.714 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:59.577 [info] GET /sources/2/media/145 15:13:59.577 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "145", "source_id" => "2"} Pipelines: [:browser] 15:13:59.578 [debug] QUERY OK source="media_items" db=0.7ms idle=1190.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [145] 15:13:59.578 [debug] QUERY OK source="tasks" db=0.1ms idle=1191.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" [145] 15:13:59.579 [debug] QUERY OK source="sources" db=0.7ms idle=1191.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:13:59.579 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1192.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" = ?) [93] 15:13:59.580 [debug] QUERY OK source="settings" db=0.1ms idle=496.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:13:59.580 [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:13:59.580 [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 [] 15:13:59.581 [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" = ?) [2] 15:13:59.583 [info] Sent 200 in 6ms 15:14:00.590 [info] {"source":"oban","duration":259,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:14:01.601 [info] CONNECTED TO Phoenix.LiveView.Socket in 35µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:14:17.013 [info] GET /sources/1/media/10/edit 15:14:17.013 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "10", "source_id" => "1"} Pipelines: [:browser] 15:14:17.013 [debug] QUERY OK source="media_items" db=0.3ms idle=1626.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [10] 15:14:17.015 [debug] QUERY OK source="settings" db=1.4ms idle=1627.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:17.016 [debug] QUERY OK source="settings" db=0.2ms idle=1628.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:17.016 [debug] QUERY OK source="settings" db=0.2ms idle=913.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:17.017 [info] Sent 200 in 4ms 15:14:22.715 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:33.531 [info] GET /sources/1/media/26/edit 15:14:33.532 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "26", "source_id" => "1"} Pipelines: [:browser] 15:14:33.533 [debug] QUERY OK source="media_items" db=0.1ms queue=0.6ms idle=1145.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" = ?) [26] 15:14:33.533 [debug] QUERY OK source="settings" db=0.2ms idle=1146.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:33.534 [debug] QUERY OK source="settings" db=0.2ms idle=1146.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:33.534 [debug] QUERY OK source="settings" db=0.3ms idle=1147.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:33.535 [info] Sent 200 in 3ms 15:14:48.495 [info] GET /sources/2/media/178/force_download 15:14:48.496 [debug] QUERY OK source="settings" db=0.3ms idle=1108.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:48.496 [debug] QUERY OK source="settings" db=0.1ms idle=1109.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:14:48.496 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:14:48.496 [error] #PID<0.5022.0> running PinchflatWeb.Endpoint (connection #PID<0.5021.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/178/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/178/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5021.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/178/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/178", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5022.0>, params: %{}, path_info: ["sources", "2", "media", "178", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/178"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/178/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8FRDEK7XQpC4AAC-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.5021.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/178/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/178", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/178/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5021.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/178/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 33152}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/178", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:14:52.716 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:00.591 [info] {"source":"oban","duration":208,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:15:01.171 [info] GET /media/42350e7d-c550-4eda-aa00-1e933c6b161c/stream 15:15:01.171 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "42350e7d-c550-4eda-aa00-1e933c6b161c", "v" => "1784896541"} Pipelines: [:maybe_basic_auth] 15:15:01.173 [debug] QUERY OK source="media_items" db=0.9ms idle=785.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."uuid" = ?) ["42350e7d-c550-4eda-aa00-1e933c6b161c"] 15:15:01.173 [debug] Invalid range request for media item: 42350e7d-c550-4eda-aa00-1e933c6b161c - serving full file 15:15:01.173 [info] Sent 200 in 1ms 15:15:02.277 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:15:22.717 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:41.399 [info] GET /sources/2/media/174/force_download 15:15:41.399 [debug] QUERY OK source="settings" db=0.2ms idle=974.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:15:41.400 [debug] QUERY OK source="settings" db=0.1ms idle=975.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:15:41.400 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:15:41.400 [error] #PID<0.5033.0> running PinchflatWeb.Endpoint (connection #PID<0.5032.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/174/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/174/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5032.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/174/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/174", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5033.0>, params: %{}, path_info: ["sources", "2", "media", "174", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/174"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/174/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8IWIUqPi6yBAAADAB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5032.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/174/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/174", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/174/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5032.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/174/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56826}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/174", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:15:52.718 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:00.592 [info] {"source":"oban","duration":197,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:16:02.347 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:16:17.867 [info] GET /media/6b30b075-14d6-4086-a831-178edc701227/stream 15:16:17.867 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "6b30b075-14d6-4086-a831-178edc701227", "v" => "1784896569"} Pipelines: [:maybe_basic_auth] 15:16:17.868 [debug] QUERY OK source="media_items" db=0.1ms idle=1443.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["6b30b075-14d6-4086-a831-178edc701227"] 15:16:17.868 [debug] Invalid range request for media item: 6b30b075-14d6-4086-a831-178edc701227 - serving full file 15:16:17.868 [info] Sent 200 in 790µs 15:16:22.719 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:52.720 [info] {"source":"oban","duration":558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:00.593 [info] {"source":"oban","duration":207,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:17:02.421 [info] CONNECTED TO Phoenix.LiveView.Socket in 21µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:17:18.353 [info] GET /media/fd0a2f21-cd42-4795-9214-2836ea35322a/stream 15:17:18.353 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "fd0a2f21-cd42-4795-9214-2836ea35322a", "v" => "1784896106"} Pipelines: [:maybe_basic_auth] 15:17:18.354 [debug] QUERY OK source="media_items" db=1.2ms idle=1767.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" = ?) ["fd0a2f21-cd42-4795-9214-2836ea35322a"] 15:17:18.355 [debug] Invalid range request for media item: fd0a2f21-cd42-4795-9214-2836ea35322a - serving full file 15:17:18.355 [info] Sent 200 in 2ms 15:17:22.721 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:52.723 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:00.594 [info] {"source":"oban","duration":166,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:18:02.555 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:18:14.915 [info] GET /sources/2/media/173/force_download 15:18:14.916 [debug] QUERY OK source="settings" db=1.0ms idle=391.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:18:14.917 [debug] QUERY OK source="settings" db=0.4ms idle=331.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:18:14.917 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:18:14.918 [error] #PID<0.5056.0> running PinchflatWeb.Endpoint (connection #PID<0.5055.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/173/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/173/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5055.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/173/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 44950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/173", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5056.0>, params: %{}, path_info: ["sources", "2", "media", "173", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/173"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/173/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8RSBad-H_GX4AADEB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5055.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/173/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 44950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/173", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/173/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5055.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/173/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 44950}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYcmZTM21ycWt0YWw5MW53eU1xTTBMUXFE.f3HU4XHpmsTS0NG8y6-zuEI80UeFVscA5CXwWr4jFTc", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/173", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:18:22.724 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:52.725 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:00.595 [info] {"source":"oban","duration":156,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:19:02.777 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:19:05.399 [info] GET /sources/2/media/176/force_download 15:19:05.400 [debug] QUERY OK source="settings" db=0.2ms idle=819.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:19:05.400 [debug] QUERY OK source="settings" db=0.0ms idle=814.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:19:05.400 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:19:05.400 [error] #PID<0.5064.0> running PinchflatWeb.Endpoint (connection #PID<0.5063.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/176/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/176/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5063.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/176/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35714}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/176", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5064.0>, params: %{}, path_info: ["sources", "2", "media", "176", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/176"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/176/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8UOFwupB4W24AADFh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5063.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/176/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35714}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/176", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/176/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5063.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/176/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35714}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/176", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5064.0>, params: %{}, path_info: ["sources", "2", "media", "176", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:19:22.726 [info] {"source":"oban","duration":532,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:52.727 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:00.596 [info] {"source":"oban","duration":178,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:20:02.861 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:20:10.552 [info] GET /sources/2/media/134/force_download 15:20:10.553 [debug] QUERY OK source="settings" db=0.5ms idle=1966.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:20:10.553 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1967.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:20:10.553 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:20:10.553 [error] #PID<0.5073.0> running PinchflatWeb.Endpoint (connection #PID<0.5072.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/134/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/134/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5072.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/134/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40066}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/134", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5073.0>, params: %{}, path_info: ["sources", "2", "media", "134", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/134"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/134/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8YAzWZyeQn9QAADHB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5072.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/134/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40066}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/134", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/134/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5072.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/134/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40066}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/134", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5073.0>, params: %{}, path_info: ["sources", "2", "media", "134", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:20:22.729 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:52.730 [info] {"source":"oban","duration":601,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:00.596 [info] {"source":"oban","duration":144,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:21:02.919 [info] CONNECTED TO Phoenix.LiveView.Socket in 53µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:21:11.358 [info] GET /sources/2/media/145 15:21:11.358 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "145", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:21:11.359 [debug] QUERY OK source="media_items" db=0.6ms idle=772.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" = ?) [145] 15:21:11.361 [debug] QUERY OK source="tasks" db=0.6ms queue=0.6ms idle=774.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" [145] 15:21:11.361 [debug] QUERY OK source="sources" db=1.2ms queue=0.5ms idle=774.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:21:11.362 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=776.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" = ?) [93] 15:21:11.364 [debug] QUERY OK source="settings" db=0.7ms idle=624.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:21:11.364 [debug] QUERY OK source="settings" db=0.4ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:21:11.365 [debug] QUERY OK source="settings" db=0.6ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:21:11.366 [debug] QUERY OK source="media_profiles" db=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" = ?) [2] 15:21:11.367 [info] Sent 200 in 9ms 15:21:22.731 [info] {"source":"oban","duration":563,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:52.732 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:00.598 [info] {"source":"oban","duration":223,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:22:03.031 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:22:14.703 [info] GET /sources/2/media/175/force_download 15:22:14.704 [debug] QUERY OK source="settings" db=0.2ms idle=888.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:22:14.704 [debug] QUERY OK source="settings" db=0.1ms idle=118.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:22:14.704 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:22:14.705 [error] #PID<0.5093.0> running PinchflatWeb.Endpoint (connection #PID<0.5092.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/175/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/175/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5092.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/175/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 43728}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/175", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5093.0>, params: %{}, path_info: ["sources", "2", "media", "175", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/175"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/175/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8fPTZeK7PGcEAADKB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5092.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/175/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 43728}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/175", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/175/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5092.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/175/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 43728}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/175", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:22:22.733 [info] {"source":"oban","duration":503,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:52.734 [info] {"source":"oban","duration":476,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:00.599 [info] {"source":"oban","duration":228,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:23:03.084 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:23:10.067 [info] GET /sources/2/media/130/force_download 15:23:10.068 [debug] QUERY OK source="settings" db=0.6ms idle=1482.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:23:10.069 [debug] QUERY OK source="settings" db=0.5ms idle=1483.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:23:10.069 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:23:10.070 [error] #PID<0.5101.0> running PinchflatWeb.Endpoint (connection #PID<0.5100.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/130/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/130/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5100.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/130/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40438}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/130", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5101.0>, params: %{}, path_info: ["sources", "2", "media", "130", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/130"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/130/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8idjPBergAlkAADLh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5100.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/130/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40438}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/130", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/130/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5100.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/130/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40438}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/130", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:23:22.735 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:52.736 [info] {"source":"oban","duration":731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:00.600 [info] {"source":"oban","duration":202,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:24:03.145 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:24:15.638 [info] GET /sources/2/media/135/force_download 15:24:15.639 [debug] QUERY OK source="settings" db=0.7ms idle=1052.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:24:15.639 [debug] QUERY OK source="settings" db=0.3ms idle=1053.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:24:15.639 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:24:15.640 [error] #PID<0.5110.0> running PinchflatWeb.Endpoint (connection #PID<0.5109.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/135/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/135/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5109.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/135/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53918}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/135", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5110.0>, params: %{}, path_info: ["sources", "2", "media", "135", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/135"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/135/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8mR0cqBLdssoAADNB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5109.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/135/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53918}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/135", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/135/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5109.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/135/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53918}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/135", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:24:22.737 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:52.738 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:00.601 [info] {"source":"oban","duration":207,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:25:03.209 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:25:20.275 [info] GET /sources/2/media/145/force_download 15:25:20.275 [debug] QUERY OK source="settings" db=0.6ms idle=1689.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:25:20.276 [debug] QUERY OK source="settings" db=0.4ms idle=1690.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:25:20.276 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:25:20.276 [error] #PID<0.5118.0> running PinchflatWeb.Endpoint (connection #PID<0.5117.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/145/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/145/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5117.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/145/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41662}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/145", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5118.0>, params: %{}, path_info: ["sources", "2", "media", "145", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/145"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/145/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU8qCnBXmZVdxAAADOh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5117.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/145/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41662}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/145", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/145/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5117.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/145/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 41662}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYYU1CRFl4WU02d01nNkxqbzZEVEp5d09l.uJC-UMRtfLjRnLr0Bkc0t5l6U-l3MD1PwgD0Nw071_0", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/145", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:25:22.739 [info] {"source":"oban","duration":460,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:52.740 [info] {"source":"oban","duration":491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:00.602 [info] {"source":"oban","duration":171,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:26:03.337 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:26:03.867 [info] GET /settings 15:26:03.867 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 15:26:03.868 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=1280.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:03.868 [debug] QUERY OK source="settings" db=0.1ms idle=1281.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:03.868 [debug] QUERY OK source="settings" db=0.1ms idle=1281.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:03.869 [debug] QUERY OK source="settings" db=0.0ms idle=1282.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:03.870 [info] Sent 200 in 3ms 15:26:22.741 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:24.827 [info] GET /media/ecb4d461-e0b2-460f-8cb3-5ffd975e60f0/stream 15:26:24.827 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ecb4d461-e0b2-460f-8cb3-5ffd975e60f0", "v" => "1784896548"} Pipelines: [:maybe_basic_auth] 15:26:24.828 [debug] QUERY OK source="media_items" db=0.3ms idle=1240.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["ecb4d461-e0b2-460f-8cb3-5ffd975e60f0"] 15:26:24.828 [debug] Invalid range request for media item: ecb4d461-e0b2-460f-8cb3-5ffd975e60f0 - serving full file 15:26:24.828 [info] Sent 200 in 1ms 15:26:31.091 [info] GET /sources 15:26:31.091 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 15:26:31.092 [debug] QUERY OK source="settings" db=0.1ms idle=1505.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:31.092 [debug] QUERY OK source="settings" db=0.3ms idle=1505.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:31.093 [debug] QUERY OK source="settings" db=0.3ms idle=933.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:31.094 [debug] QUERY OK source="settings" db=0.4ms idle=507.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:31.094 [debug] QUERY OK source="settings" db=0.0ms idle=507.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:31.095 [debug] QUERY OK source="sources" db=0.3ms idle=2.4ms SELECT count(s0."id") FROM "sources" AS s0 INNER JOIN "media_profiles" AS m1 ON m1."id" = s0."media_profile_id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "downloaded_count", sm0."source_id" AS "source_id", sum(sm0."media_size_bytes") AS "media_size_bytes" FROM "media_items" AS sm0 WHERE (NOT (sm0."media_filepath" IS NULL)) GROUP BY sm0."source_id") AS s2 ON s2."source_id" = s0."id" LEFT OUTER JOIN (SELECT count(sm0."id") AS "pending_count", sm0."source_id" AS "source_id" FROM "media_items" AS sm0 INNER JOIN "sources" AS ss1 ON ss1."id" = sm0."source_id" INNER JOIN "media_profiles" AS sm2 ON sm2."id" = ss1."media_profile_id" WHERE (((((NOT (NOT (sm0."media_filepath" IS NULL)) AND NOT (sm0."prevent_download" = 1)) AND ((ss1."download_cutoff_date" IS NULL) OR date(sm0."uploaded_at") >= ss1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((ss1."title_filter_regex" IS NULL) OR regexp_like(sm0."title", ss1."title_filter_regex"))) AND (((ss1."min_duration_seconds" IS NULL) OR duration_seconds >= ss1."min_duration_seconds") AND ((ss1."max_duration_seconds" IS NULL) OR duration_seconds <= ss1."max_duration_seconds"))) GROUP BY sm0."source_id") AS s3 ON (s3."source_id" = s0."id") AND (s2."source_id" = s0."id") WHERE ((s0."marked_for_deletion_at" IS NULL) AND (m1."marked_for_deletion_at" IS NULL)) [] 15:26:31.096 [debug] QUERY OK source="sources" db=0.9ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", 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] 15:26:31.098 [info] Sent 200 in 6ms 15:26:39.712 [info] GET /app_info 15:26:39.712 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 15:26:39.712 [debug] QUERY OK source="settings" db=0.1ms idle=1125.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:39.713 [debug] QUERY OK source="settings" db=0.3ms idle=1126.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:39.714 [debug] QUERY OK source="settings" db=0.4ms idle=1126.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:39.715 [debug] QUERY OK source="settings" db=0.4ms idle=1127.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:39.715 [debug] QUERY OK source="settings" db=0.0ms idle=546.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:26:39.715 [info] Sent 200 in 3ms 15:26:52.742 [info] {"source":"oban","duration":479,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:00.582 [info] GET /sources/2 15:27:00.583 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 15:27:00.583 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=1387.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:27:00.584 [debug] QUERY OK source="media_profiles" db=0.5ms idle=996.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" = ?) [2] 15:27:00.585 [debug] QUERY OK source="tasks" db=0.3ms idle=997.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 (?,?,?,?)) [2, "executing", "available", "scheduled", "retryable"] 15:27:00.585 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=998.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" = ?) [128] 15:27:00.586 [debug] QUERY OK source="settings" db=0.3ms idle=389.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:00.586 [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:27:00.587 [debug] QUERY OK source="settings" db=0.5ms 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:27:00.588 [debug] QUERY OK source="sources" db=0.0ms idle=3.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:27:00.588 [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 (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 15:27:00.590 [debug] QUERY OK source="media_items" db=0.7ms 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 ? [2, 10, 0] 15:27:00.590 [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] 15:27:00.590 [debug] QUERY OK source="media_items" db=0.1ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 15:27:00.591 [debug] QUERY OK source="media_items" db=0.2ms idle=2.5ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [2, 10, 0] 15:27:00.592 [debug] QUERY OK source="sources" db=0.1ms idle=2.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:27:00.592 [debug] QUERY OK source="media_items" db=0.3ms idle=2.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((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] 15:27:00.593 [debug] QUERY OK source="media_items" db=0.3ms queue=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] 15:27:00.594 [info] Sent 200 in 12ms 15:27:00.603 [info] {"source":"oban","duration":177,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:27:03.389 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:27:07.221 [info] GET /media_profiles 15:27:07.221 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 15:27:07.222 [debug] QUERY OK source="media_profiles" db=0.3ms idle=634.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" [] 15:27:07.222 [debug] QUERY OK source="settings" db=0.1ms idle=635.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:07.222 [debug] QUERY OK source="settings" db=0.1ms idle=635.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:07.223 [debug] QUERY OK source="settings" db=0.0ms idle=636.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:07.224 [info] Sent 200 in 2ms 15:27:13.137 [info] GET /sources/2/media/175 15:27:13.138 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "175", "source_id" => "2"} Pipelines: [:browser] 15:27:13.138 [debug] QUERY OK source="media_items" db=0.2ms idle=926.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [175] 15:27:13.139 [debug] QUERY OK source="tasks" db=0.4ms idle=551.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" [175] 15:27:13.139 [debug] QUERY OK source="sources" db=0.5ms idle=551.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:27:13.139 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=552.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" = ?) [123] 15:27:13.140 [debug] QUERY OK source="settings" db=0.1ms idle=553.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:13.140 [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 [] 15:27:13.141 [debug] QUERY OK source="settings" db=0.1ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:13.141 [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" = ?) [2] 15:27:13.143 [info] Sent 200 in 5ms 15:27:22.743 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:29.742 [info] GET /media/cdd3ec2b-a7fc-452c-b50b-fb812e496237/stream 15:27:29.742 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "cdd3ec2b-a7fc-452c-b50b-fb812e496237", "v" => "1784896854"} Pipelines: [:maybe_basic_auth] 15:27:29.743 [debug] QUERY OK source="media_items" db=0.1ms idle=1156.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" = ?) ["cdd3ec2b-a7fc-452c-b50b-fb812e496237"] 15:27:29.743 [debug] Invalid range request for media item: cdd3ec2b-a7fc-452c-b50b-fb812e496237 - serving full file 15:27:29.743 [info] Sent 200 in 871µs 15:27:30.567 [info] GET /sources/2/media/178 15:27:30.568 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "178", "source_id" => "2"} Pipelines: [:browser] 15:27:30.568 [debug] QUERY OK source="media_items" db=0.7ms idle=1981.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" = ?) [178] 15:27:30.569 [debug] QUERY OK source="tasks" db=0.4ms idle=1982.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" [178] 15:27:30.569 [debug] QUERY OK source="sources" db=0.5ms idle=1340.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:27:30.570 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=826.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" = ?) [126] 15:27:30.570 [debug] QUERY OK source="settings" db=0.1ms idle=274.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:30.571 [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 [] 15:27:30.571 [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 [] 15:27:30.572 [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" = ?) [2] 15:27:30.573 [info] Sent 200 in 5ms 15:27:37.387 [info] GET /sources/2/media/176 15:27:37.388 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "176", "source_id" => "2"} Pipelines: [:browser] 15:27:37.388 [debug] QUERY OK source="media_items" db=0.5ms idle=1801.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" = ?) [176] 15:27:37.389 [debug] QUERY OK source="tasks" db=0.6ms idle=1802.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" [176] 15:27:37.390 [debug] QUERY OK source="sources" db=1.1ms idle=1802.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:27:37.390 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=1086.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" = ?) [124] 15:27:37.391 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=86.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:37.392 [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 [] 15:27:37.392 [debug] QUERY OK source="settings" db=0.3ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:27:37.394 [debug] QUERY OK source="media_profiles" db=0.5ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:27:37.396 [info] Sent 200 in 8ms 15:27:52.744 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:00.604 [info] {"source":"oban","duration":181,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:28:03.445 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:28:10.503 [info] GET /sources/2/media/177 15:28:10.503 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "177", "source_id" => "2"} Pipelines: [:browser] 15:28:10.503 [debug] QUERY OK source="media_items" db=0.2ms idle=1916.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" = ?) [177] 15:28:10.504 [debug] QUERY OK source="tasks" db=0.5ms idle=1917.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" [177] 15:28:10.504 [debug] QUERY OK source="sources" db=0.6ms idle=1917.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:28:10.505 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1164.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" = ?) [125] 15:28:10.505 [debug] QUERY OK source="settings" db=0.0ms idle=162.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:10.505 [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 [] 15:28:10.506 [debug] QUERY OK source="settings" db=0.0ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:10.506 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:28:10.508 [info] Sent 200 in 5ms 15:28:14.997 [info] GET /sources/2/media/179 15:28:14.997 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "179", "source_id" => "2"} Pipelines: [:browser] 15:28:14.998 [debug] QUERY OK source="media_items" db=0.8ms idle=1410.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" = ?) [179] 15:28:14.998 [debug] QUERY OK source="tasks" db=0.2ms idle=1411.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" [179] 15:28:14.999 [debug] QUERY OK source="sources" db=0.4ms idle=1411.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:28:14.999 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1412.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" = ?) [127] 15:28:14.999 [debug] QUERY OK source="settings" db=0.1ms idle=650.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:15.000 [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 [] 15:28:15.000 [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 [] 15:28:15.001 [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" = ?) [2] 15:28:15.002 [info] Sent 200 in 5ms 15:28:22.745 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:27.271 [info] GET /media/1cfab0bc-3907-44a8-afeb-e4de20e275de/stream 15:28:27.271 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "1cfab0bc-3907-44a8-afeb-e4de20e275de", "v" => "1784896056"} Pipelines: [:maybe_basic_auth] 15:28:27.272 [debug] QUERY OK source="media_items" db=0.7ms idle=906.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["1cfab0bc-3907-44a8-afeb-e4de20e275de"] 15:28:27.273 [debug] Invalid range request for media item: 1cfab0bc-3907-44a8-afeb-e4de20e275de - serving full file 15:28:27.273 [info] Sent 200 in 1ms 15:28:36.741 [info] GET / 15:28:36.741 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:28:36.741 [debug] QUERY OK source="settings" db=0.2ms idle=181.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:36.742 [debug] QUERY OK source="media_profiles" db=0.1ms idle=155.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:28:36.743 [debug] QUERY OK source="sources" db=0.3ms queue=0.4ms idle=155.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:28:36.743 [debug] QUERY OK source="media_items" db=0.4ms idle=156.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:28:36.743 [debug] QUERY OK source="media_items" db=0.0ms idle=156.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:28:36.744 [debug] QUERY OK source="settings" db=0.6ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:36.745 [debug] QUERY OK source="settings" db=0.2ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:36.745 [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 [] 15:28:36.746 [debug] QUERY OK source="tasks" db=0.2ms idle=2.4ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 15:28:36.746 [debug] QUERY OK source="media_items" db=0.1ms 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)) [] 15:28:36.747 [debug] QUERY OK source="media_items" db=0.4ms idle=2.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 15:28:36.748 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:28:36.750 [debug] QUERY OK source="media_items" db=0.3ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 15:28:36.750 [debug] QUERY OK source="media_items" db=0.4ms 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] 15:28:36.751 [info] Sent 200 in 10ms 15:28:46.752 [info] GET / 15:28:46.752 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:28:46.752 [debug] QUERY OK source="settings" db=0.2ms idle=181.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:46.753 [debug] QUERY OK source="media_profiles" db=0.1ms idle=166.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:28:46.753 [debug] QUERY OK source="sources" db=0.1ms idle=166.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:28:46.753 [debug] QUERY OK source="media_items" db=0.2ms idle=166.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:28:46.754 [debug] QUERY OK source="media_items" db=0.3ms idle=166.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:28:46.754 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:46.755 [debug] QUERY OK source="settings" db=0.3ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:46.756 [debug] QUERY OK source="settings" db=0.5ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:28:46.756 [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"] 15:28:46.757 [debug] QUERY OK source="media_items" db=0.1ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:28:46.758 [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] 15:28:46.758 [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" = ?) [2] 15:28:46.760 [debug] QUERY OK source="media_items" db=0.2ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:28:46.761 [debug] QUERY OK source="media_items" db=0.5ms idle=3.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:28:46.762 [info] Sent 200 in 9ms 15:28:52.747 [info] {"source":"oban","duration":511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:00.605 [info] {"source":"oban","duration":158,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:29:03.491 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:29:20.039 [info] GET /sources/2/media/176 15:29:20.039 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "176", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:29:20.039 [debug] QUERY OK source="media_items" db=0.2ms idle=1452.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [176] 15:29:20.040 [debug] QUERY OK source="sources" db=0.2ms idle=1453.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:29:20.041 [debug] QUERY OK source="tasks" db=0.4ms idle=1453.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" [176] 15:29:20.041 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1429.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" = ?) [124] 15:29:20.041 [debug] QUERY OK source="settings" db=0.1ms idle=428.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:29:20.042 [debug] QUERY OK source="settings" db=0.0ms queue=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:29:20.042 [debug] QUERY OK source="settings" db=0.3ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:29:20.043 [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" = ?) [2] 15:29:20.045 [info] Sent 200 in 6ms 15:29:22.748 [info] {"source":"oban","duration":513,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:52.749 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:00.606 [info] {"source":"oban","duration":175,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:30:03.637 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:30:06.463 [info] GET /sources/2/media/134 15:30:06.463 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "134", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:30:06.464 [debug] QUERY OK source="media_items" db=0.3ms idle=1877.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" = ?) [134] 15:30:06.465 [debug] QUERY OK source="tasks" db=0.2ms idle=1877.8ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [134] 15:30:06.465 [debug] QUERY OK source="sources" db=0.2ms idle=1788.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:30:06.465 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=878.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" = ?) [82] 15:30:06.465 [debug] QUERY OK source="settings" db=0.1ms idle=786.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:30:06.466 [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 [] 15:30:06.466 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:30:06.468 [debug] QUERY OK source="media_profiles" db=0.8ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:30:06.470 [info] Sent 200 in 7ms 15:30:22.750 [info] {"source":"oban","duration":462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:48.241 [info] GET /sources/2/media/130 15:30:48.241 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "130", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:30:48.241 [debug] QUERY OK source="media_items" db=0.2ms idle=1517.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" = ?) [130] 15:30:48.242 [debug] QUERY OK source="tasks" db=0.2ms idle=655.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" [130] 15:30:48.242 [debug] QUERY OK source="sources" db=0.3ms idle=655.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:30:48.242 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=655.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" = ?) [78] 15:30:48.243 [debug] QUERY OK source="settings" db=0.0ms idle=517.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:30:48.243 [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 [] 15:30:48.243 [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 [] 15:30:48.244 [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" = ?) [2] 15:30:48.246 [info] Sent 200 in 4ms 15:30:52.751 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:00.607 [info] {"source":"oban","duration":212,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:31:04.311 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:31:22.752 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:24.357 [info] GET / 15:31:24.357 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:31:24.358 [debug] QUERY OK source="settings" db=0.1ms idle=1771.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:24.358 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1605.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:31:24.358 [debug] QUERY OK source="sources" db=0.1ms idle=1595.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:31:24.359 [debug] QUERY OK source="media_items" db=0.4ms idle=772.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:31:24.360 [debug] QUERY OK source="media_items" db=0.4ms idle=595.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:31:24.360 [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:31:24.360 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:24.361 [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 [] 15:31:24.362 [debug] QUERY OK source="tasks" db=0.1ms idle=2.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 15:31:24.362 [debug] QUERY OK source="media_items" db=0.1ms 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)) [] 15:31:24.363 [debug] QUERY OK source="media_items" db=0.3ms idle=2.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 15:31:24.363 [debug] QUERY OK source="sources" db=0.1ms idle=2.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 15:31:24.365 [debug] QUERY OK source="media_items" db=0.2ms 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"))) [] 15:31:24.366 [debug] QUERY OK source="media_items" db=1.0ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:31:24.367 [info] Sent 200 in 9ms 15:31:26.533 [info] GET /sources/2/media/174 15:31:26.533 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "174", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:31:26.534 [debug] QUERY OK source="media_items" db=0.1ms idle=946.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [174] 15:31:26.534 [debug] QUERY OK source="tasks" db=0.0ms idle=947.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" [174] 15:31:26.534 [debug] QUERY OK source="sources" db=0.3ms idle=947.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:31:26.535 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=947.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" = ?) [122] 15:31:26.535 [debug] QUERY OK source="settings" db=0.1ms idle=768.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:26.535 [debug] QUERY OK source="settings" db=0.3ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:26.536 [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 [] 15:31:26.537 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:31:26.538 [info] Sent 200 in 5ms 15:31:52.753 [info] {"source":"oban","duration":600,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:59.087 [info] GET /sources/2/media/178 15:31:59.087 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "178", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:31:59.087 [debug] QUERY OK source="media_items" db=0.1ms idle=1500.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [178] 15:31:59.088 [debug] QUERY OK source="tasks" db=0.2ms idle=1501.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" [178] 15:31:59.088 [debug] QUERY OK source="sources" db=0.3ms idle=1287.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:31:59.088 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=501.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" = ?) [126] 15:31:59.089 [debug] QUERY OK source="settings" db=0.2ms idle=287.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:59.089 [debug] QUERY OK source="settings" db=0.2ms idle=1.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:59.090 [debug] QUERY OK source="settings" db=0.4ms idle=1.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:31:59.091 [debug] QUERY OK source="media_profiles" db=0.3ms 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" = ?) [2] 15:31:59.093 [info] Sent 200 in 5ms 15:32:00.608 [info] {"source":"oban","duration":180,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:32:04.575 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:32:22.754 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:28.527 [info] GET /sources/2/media/173 15:32:28.527 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "173", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:32:28.528 [debug] QUERY OK source="media_items" db=0.2ms idle=1940.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" = ?) [173] 15:32:28.529 [debug] QUERY OK source="tasks" db=0.7ms idle=1941.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" [173] 15:32:28.529 [debug] QUERY OK source="sources" db=0.6ms idle=1941.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:32:28.530 [debug] QUERY OK source="oban_jobs" db=0.1ms queue=0.2ms idle=1700.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" = ?) [121] 15:32:28.530 [debug] QUERY OK source="settings" db=0.1ms idle=699.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:32:28.530 [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 [] 15:32:28.531 [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:32:28.532 [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" = ?) [2] 15:32:28.533 [info] Sent 200 in 6ms 15:32:52.755 [info] {"source":"oban","duration":520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:55.503 [info] GET /sources/2/media/135 15:32:55.503 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "135", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:32:55.503 [debug] QUERY OK source="media_items" db=0.1ms idle=1916.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" = ?) [135] 15:32:55.504 [debug] QUERY OK source="tasks" db=0.1ms idle=1917.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" [135] 15:32:55.504 [debug] QUERY OK source="sources" db=0.3ms idle=1637.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:32:55.504 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=917.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" = ?) [83] 15:32:55.504 [debug] QUERY OK source="settings" db=0.1ms idle=637.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:32:55.505 [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 [] 15:32:55.505 [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 [] 15:32:55.506 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 15:32:55.508 [info] Sent 200 in 4ms 15:33:00.608 [info] {"source":"oban","duration":119,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:33:04.853 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:33:20.880 [info] GET /sources/2/media/175 15:33:20.880 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "175", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 15:33:20.881 [debug] QUERY OK source="media_items" db=1.0ms idle=983.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" = ?) [175] 15:33:20.882 [debug] QUERY OK source="tasks" db=0.4ms idle=295.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" [175] 15:33:20.883 [debug] QUERY OK source="sources" db=1.0ms idle=295.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 15:33:20.884 [debug] QUERY OK source="oban_jobs" db=0.6ms idle=296.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" = ?) [123] 15:33:20.885 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=297.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:33:20.885 [debug] QUERY OK source="settings" db=0.3ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:33:20.886 [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 [] 15:33:20.887 [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" = ?) [2] 15:33:20.889 [info] Sent 200 in 8ms 15:33:22.756 [info] {"source":"oban","duration":562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:43.287 [info] GET /media/9a559de8-99ce-40d2-98b5-7b1ce98e5d93/stream 15:33:43.287 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "9a559de8-99ce-40d2-98b5-7b1ce98e5d93", "v" => "1784896588"} Pipelines: [:maybe_basic_auth] 15:33:43.288 [debug] QUERY OK source="media_items" db=0.4ms idle=700.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" = ?) ["9a559de8-99ce-40d2-98b5-7b1ce98e5d93"] 15:33:43.288 [debug] Invalid range request for media item: 9a559de8-99ce-40d2-98b5-7b1ce98e5d93 - serving full file 15:33:43.288 [info] Sent 200 in 1ms 15:33:52.757 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:00.610 [info] {"source":"oban","duration":190,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:34:02.172 [info] GET /media/bbb4dd21-f246-4606-b36d-dfc79a196073/stream 15:34:02.172 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "bbb4dd21-f246-4606-b36d-dfc79a196073", "v" => "1784896567"} Pipelines: [:maybe_basic_auth] 15:34:02.173 [debug] QUERY OK source="media_items" db=0.4ms idle=1585.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" = ?) ["bbb4dd21-f246-4606-b36d-dfc79a196073"] 15:34:02.173 [debug] Invalid range request for media item: bbb4dd21-f246-4606-b36d-dfc79a196073 - serving full file 15:34:02.173 [info] Sent 200 in 1ms 15:34:05.015 [info] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:34:19.145 [info] GET /sources/1/media/12/edit 15:34:19.146 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "12", "source_id" => "1"} Pipelines: [:browser] 15:34:19.147 [debug] QUERY OK source="media_items" db=0.8ms idle=1182.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [12] 15:34:19.147 [debug] QUERY OK source="settings" db=0.2ms idle=560.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:19.148 [debug] QUERY OK source="settings" db=0.2ms idle=560.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:19.148 [debug] QUERY OK source="settings" db=0.4ms idle=561.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:19.149 [info] Sent 200 in 3ms 15:34:22.758 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:34.883 [info] GET /sources/1/media/60/edit 15:34:34.883 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "60", "source_id" => "1"} Pipelines: [:browser] 15:34:34.883 [debug] QUERY OK source="media_items" db=0.1ms idle=903.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [60] 15:34:34.884 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=297.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:34.884 [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 [] 15:34:34.885 [debug] QUERY OK source="settings" db=0.1ms idle=297.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:34.886 [info] Sent 200 in 2ms 15:34:49.971 [info] GET /sources/1/media/59/edit 15:34:49.971 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "59", "source_id" => "1"} Pipelines: [:browser] 15:34:49.972 [debug] QUERY OK source="media_items" db=0.2ms idle=1384.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [59] 15:34:49.972 [debug] QUERY OK source="settings" db=0.2ms idle=1385.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:49.973 [debug] QUERY OK source="settings" db=0.1ms idle=1385.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:49.973 [debug] QUERY OK source="settings" db=0.1ms idle=1386.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:34:49.974 [info] Sent 200 in 3ms 15:34:52.759 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:00.611 [info] {"source":"oban","duration":220,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:35:02.408 [info] GET /sources/1/media/25/edit 15:35:02.408 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "25", "source_id" => "1"} Pipelines: [:browser] 15:35:02.409 [debug] QUERY OK source="media_items" db=0.2ms idle=1797.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" = ?) [25] 15:35:02.409 [debug] QUERY OK source="settings" db=0.1ms idle=1389.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:02.409 [debug] QUERY OK source="settings" db=0.1ms queue=0.2ms idle=822.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:02.410 [debug] QUERY OK source="settings" db=0.4ms idle=823.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:02.411 [info] Sent 200 in 3ms 15:35:05.327 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:35:14.131 [info] GET /sources/1/media/58/edit 15:35:14.131 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "58", "source_id" => "1"} Pipelines: [:browser] 15:35:14.131 [debug] QUERY OK source="media_items" db=0.2ms idle=543.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [58] 15:35:14.132 [debug] QUERY OK source="settings" db=0.2ms idle=543.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:14.132 [debug] QUERY OK source="settings" db=0.2ms idle=544.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:14.133 [debug] QUERY OK source="settings" db=0.2ms idle=544.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:14.134 [info] Sent 200 in 3ms 15:35:22.760 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:24.382 [info] GET /sources/1/media/50/edit 15:35:24.382 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "50", "source_id" => "1"} Pipelines: [:browser] 15:35:24.383 [debug] QUERY OK source="media_items" db=0.4ms idle=1338.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" = ?) [50] 15:35:24.384 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=795.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:24.384 [debug] QUERY OK source="settings" db=0.3ms 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 [] 15:35:24.385 [debug] QUERY OK source="settings" db=0.4ms idle=797.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:24.386 [info] Sent 200 in 3ms 15:35:34.275 [info] GET /sources/1/media/40/edit 15:35:34.275 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "40", "source_id" => "1"} Pipelines: [:browser] 15:35:34.275 [debug] QUERY OK source="media_items" db=0.1ms idle=687.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [40] 15:35:34.275 [debug] QUERY OK source="settings" db=0.1ms idle=687.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:34.276 [debug] QUERY OK source="settings" db=0.0ms 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 [] 15:35:34.276 [debug] QUERY OK source="settings" db=0.0ms idle=688.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:34.277 [info] Sent 200 in 2ms 15:35:42.587 [info] GET /sources/1/media/11/edit 15:35:42.587 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "11", "source_id" => "1"} Pipelines: [:browser] 15:35:42.588 [debug] QUERY OK source="media_items" db=0.4ms idle=999.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" = ?) [11] 15:35:42.588 [debug] QUERY OK source="settings" db=0.0ms idle=1000.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:42.588 [debug] QUERY OK source="settings" db=0.1ms idle=1000.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:42.589 [debug] QUERY OK source="settings" db=0.3ms idle=1001.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:42.590 [info] Sent 200 in 3ms 15:35:52.761 [info] {"source":"oban","duration":582,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:56.832 [info] GET /sources/1/media/1 15:35:56.832 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "1", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:35:56.833 [debug] QUERY OK source="media_items" db=0.3ms idle=752.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" = ?) [1] 15:35:56.833 [debug] QUERY OK source="tasks" db=0.3ms idle=245.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" [1] 15:35:56.833 [debug] QUERY OK source="sources" db=0.4ms idle=245.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:35:56.834 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=246.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" = ?) [5] 15:35:56.834 [debug] QUERY OK source="settings" db=0.1ms idle=246.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:35:56.835 [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 [] 15:35:56.835 [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 [] 15:35:56.836 [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] 15:35:56.838 [info] Sent 200 in 5ms 15:36:00.612 [info] {"source":"oban","duration":209,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:36:02.911 [info] GET /sources/1/media/7 15:36:02.911 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "7", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:02.912 [debug] QUERY OK source="media_items" db=0.4ms idle=824.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" = ?) [7] 15:36:02.912 [debug] QUERY OK source="tasks" db=0.3ms idle=324.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" [7] 15:36:02.913 [debug] QUERY OK source="sources" db=0.4ms idle=324.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:02.913 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=325.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" = ?) [11] 15:36:02.913 [debug] QUERY OK source="settings" db=0.1ms idle=325.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:02.914 [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 [] 15:36:02.914 [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 [] 15:36:02.915 [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] 15:36:02.917 [info] Sent 200 in 5ms 15:36:05.919 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:36:08.555 [info] GET /sources/1/media/2 15:36:08.555 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "2", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:08.555 [debug] QUERY OK source="media_items" db=0.2ms idle=1967.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" = ?) [2] 15:36:08.556 [debug] QUERY OK source="tasks" db=0.2ms idle=1968.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" [2] 15:36:08.556 [debug] QUERY OK source="sources" db=0.3ms idle=1968.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:08.557 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=1463.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" = ?) [6] 15:36:08.557 [debug] QUERY OK source="settings" db=0.2ms idle=461.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:08.558 [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:36:08.558 [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 [] 15:36:08.559 [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] 15:36:08.560 [info] Sent 200 in 5ms 15:36:13.416 [info] GET /sources/1/media/4 15:36:13.416 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "4", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:13.417 [debug] QUERY OK source="media_items" db=0.3ms idle=1828.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [4] 15:36:13.417 [debug] QUERY OK source="tasks" db=0.2ms idle=1829.5ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [4] 15:36:13.417 [debug] QUERY OK source="sources" db=0.3ms idle=1829.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:13.418 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=1317.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" = ?) [8] 15:36:13.418 [debug] QUERY OK source="settings" db=0.2ms idle=316.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:13.419 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:13.419 [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 [] 15:36:13.420 [debug] QUERY OK source="media_profiles" db=0.1ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:36:13.422 [info] Sent 200 in 5ms 15:36:17.926 [info] GET /sources/1/media/9 15:36:17.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "9", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:17.927 [debug] QUERY OK source="media_items" db=0.3ms idle=1338.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" = ?) [9] 15:36:17.927 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=1339.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" [9] 15:36:17.927 [debug] QUERY OK source="sources" db=0.4ms idle=1339.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:17.928 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1340.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" = ?) [13] 15:36:17.928 [debug] QUERY OK source="settings" db=0.2ms idle=821.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:17.928 [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 [] 15:36:17.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 [] 15:36:17.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] 15:36:17.931 [info] Sent 200 in 5ms 15:36:21.933 [info] GET /sources/1/media/8 15:36:21.934 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "8", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:21.935 [debug] QUERY OK source="media_items" db=0.8ms idle=822.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [8] 15:36:21.935 [debug] QUERY OK source="tasks" db=0.2ms idle=347.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" [8] 15:36:21.935 [debug] QUERY OK source="sources" db=0.2ms idle=347.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:21.936 [debug] QUERY OK source="oban_jobs" db=0.5ms idle=348.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" = ?) [12] 15:36:21.937 [debug] QUERY OK source="settings" db=0.2ms idle=348.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:21.937 [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 [] 15:36:21.937 [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 [] 15:36:21.938 [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] 15:36:21.939 [info] Sent 200 in 5ms 15:36:22.762 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:25.599 [info] GET /sources/1/media/5 15:36:25.599 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "5", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:25.599 [debug] QUERY OK source="media_items" db=0.1ms idle=1011.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" = ?) [5] 15:36:25.600 [debug] QUERY OK source="tasks" db=0.5ms idle=484.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" [5] 15:36:25.601 [debug] QUERY OK source="sources" db=1.7ms 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" = ?) [1] 15:36:25.602 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=14.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" = ?) [9] 15:36:25.602 [debug] QUERY OK source="settings" db=0.1ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:25.603 [debug] QUERY OK source="settings" db=0.0ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:25.603 [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:36:25.604 [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:36:25.605 [info] Sent 200 in 6ms 15:36:29.035 [info] GET /sources/1/media/3 15:36:29.035 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "3", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:29.035 [debug] QUERY OK source="media_items" db=0.2ms idle=1447.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [3] 15:36:29.036 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=1447.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" [3] 15:36:29.036 [debug] QUERY OK source="sources" db=0.3ms idle=1448.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:29.037 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=1448.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" = ?) [7] 15:36:29.037 [debug] QUERY OK source="settings" db=0.1ms idle=917.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:29.037 [debug] QUERY OK source="settings" db=0.0ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:29.038 [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 [] 15:36:29.038 [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:36:29.040 [info] Sent 200 in 5ms 15:36:31.941 [info] GET /sources/1/media/6 15:36:31.941 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "6", "prevent_download" => "true", "source_id" => "1"} Pipelines: [:browser] 15:36:31.942 [debug] QUERY OK source="media_items" db=0.1ms idle=1353.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [6] 15:36:31.942 [debug] QUERY OK source="sources" db=0.6ms idle=1354.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 15:36:31.944 [debug] QUERY OK source="tasks" db=2.3ms idle=1354.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" [6] 15:36:31.945 [debug] QUERY OK source="oban_jobs" db=0.9ms idle=1356.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" = ?) [10] 15:36:31.946 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=823.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:31.947 [debug] QUERY OK source="settings" db=0.7ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:31.948 [debug] QUERY OK source="settings" db=0.6ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:31.949 [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] 15:36:31.950 [info] Sent 200 in 9ms 15:36:34.733 [info] GET /sources/1/media/11/force_download 15:36:34.734 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1146.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:34.735 [debug] QUERY OK source="settings" db=0.4ms idle=1146.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:34.735 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:36:34.735 [error] #PID<0.5356.0> running PinchflatWeb.Endpoint (connection #PID<0.5355.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/11/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/1/media/11/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5355.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/11/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54162}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/11", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5356.0>, params: %{}, path_info: ["sources", "1", "media", "11", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/11"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/11/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9RTKg89tOSg0AAD0h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5355.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/11/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54162}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/11", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/11/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5355.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/11/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54162}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/11", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:36:37.169 [info] GET /sources/1/media/25/force_download 15:36:37.170 [debug] QUERY OK source="settings" db=0.6ms idle=1581.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:37.170 [debug] QUERY OK source="settings" db=0.1ms idle=1039.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:37.170 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:36:37.170 [error] #PID<0.5360.0> running PinchflatWeb.Endpoint (connection #PID<0.5359.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/25/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/1/media/25/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5359.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/25/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54170}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/25", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5360.0>, params: %{}, path_info: ["sources", "1", "media", "25", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/25"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/25/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9RcPNieSAxC0AAD1h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5359.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/25/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54170}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/25", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/25/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5359.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/25/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54170}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/25", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:36:44.055 [info] GET /sources/1/media/60/force_download 15:36:44.056 [debug] QUERY OK source="settings" db=0.6ms idle=1467.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:44.057 [debug] QUERY OK source="settings" db=0.6ms idle=1468.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:44.057 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:36:44.057 [error] #PID<0.5362.0> running PinchflatWeb.Endpoint (connection #PID<0.5361.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/60/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/1/media/60/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5361.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/60/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40494}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/60", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5362.0>, params: %{}, path_info: ["sources", "1", "media", "60", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/60"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/60/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9R14-ctlByzcAAD2B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5361.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/60/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40494}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/60", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/60/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5361.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/60/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40494}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/60", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:36:52.763 [info] {"source":"oban","duration":590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:00.613 [info] {"source":"oban","duration":171,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:37:04.804 [info] GET /sources/1/media/59/force_download 15:37:04.805 [debug] QUERY OK source="settings" db=0.2ms idle=640.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:37:04.805 [debug] QUERY OK source="settings" db=0.4ms idle=217.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:37:04.806 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:37:04.806 [error] #PID<0.5364.0> running PinchflatWeb.Endpoint (connection #PID<0.5363.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/59/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/1/media/59/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5363.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/59/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54820}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/59", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5364.0>, params: %{}, path_info: ["sources", "1", "media", "59", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/59"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/59/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9TDMBKdPx5vQAAD2h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5363.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/59/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54820}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/59", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/59/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5363.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/59/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 54820}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/59", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:37:05.966 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:37:22.766 [info] {"source":"oban","duration":3030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:52.771 [info] {"source":"oban","duration":3552,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:00.614 [info] {"source":"oban","duration":154,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:38:06.180 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:38:06.458 [info] GET /sources/1/media/50/force_download 15:38:06.458 [debug] QUERY OK source="settings" db=0.4ms idle=1870.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:38:06.459 [debug] QUERY OK source="settings" db=0.3ms idle=1871.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:38:06.459 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:38:06.459 [error] #PID<0.5377.0> running PinchflatWeb.Endpoint (connection #PID<0.5376.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/50/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/1/media/50/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/50/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35590}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/50", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5377.0>, params: %{}, path_info: ["sources", "1", "media", "50", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/50"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/50/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9Wo3V9HS3nEUAAD4h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/50/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35590}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/50", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/50/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5376.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/50/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35590}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/50", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:38:22.772 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:52.773 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:00.615 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:39:06.233 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:39:09.212 [info] GET /sources/1/media/10/force_download 15:39:09.213 [debug] QUERY OK source="settings" db=0.5ms 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 [] 15:39:09.214 [debug] QUERY OK source="settings" db=0.4ms idle=625.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:39:09.214 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:39:09.214 [error] #PID<0.5385.0> running PinchflatWeb.Endpoint (connection #PID<0.5384.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/10/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/1/media/10/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5384.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/10/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 55174}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/10", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5385.0>, params: %{}, path_info: ["sources", "1", "media", "10", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/10"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/10/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9aSpLV1vhNEcAAD6B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5384.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/10/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 55174}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/10", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/10/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5384.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/10/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 55174}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYSThkTHNpbU1GMnFyQ0lUNmthZEIzYTNZ.WpCCWux8BtdFdLOKmohRW-NoKS1Hoapav1777HHvgIg", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/10", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" (truncated) 15:39:22.774 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:52.775 [info] {"source":"oban","duration":513,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:00.616 [info] {"source":"oban","duration":176,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:40:06.346 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:40:11.288 [info] GET /sources/1/media/26/force_download 15:40:11.288 [debug] QUERY OK source="settings" db=0.4ms idle=887.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:40:11.289 [debug] QUERY OK source="settings" db=0.3ms idle=700.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:40:11.289 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:40:11.289 [error] #PID<0.5394.0> running PinchflatWeb.Endpoint (connection #PID<0.5393.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/26/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/1/media/26/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5393.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/26/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50414}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/26", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5394.0>, params: %{}, path_info: ["sources", "1", "media", "26", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/26"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/26/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9d55G0S7_bgAAAD7h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5393.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/26/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50414}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/26", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/26/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5393.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/26/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 50414}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/26", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5394.0>, params: %{}, path_info: ["sources", "1", "media", "26", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Route (truncated) 15:40:22.776 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:52.777 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:00.617 [info] {"source":"oban","duration":224,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:41:06.395 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:41:17.159 [info] GET /sources/1/media/58/force_download 15:41:17.159 [debug] QUERY OK source="settings" db=0.2ms idle=684.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:41:17.160 [debug] QUERY OK source="settings" db=0.5ms idle=571.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:41:17.160 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:41:17.160 [error] #PID<0.5402.0> running PinchflatWeb.Endpoint (connection #PID<0.5401.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/58/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/1/media/58/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5401.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/58/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56908}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/58", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5402.0>, params: %{}, path_info: ["sources", "1", "media", "58", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/58"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/58/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9hvR812ymnYwAAD9B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5401.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/58/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56908}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/58", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/58/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5401.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/58/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 56908}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/58", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5402.0>, params: %{}, path_info: ["sources", "1", "media", "58", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Route (truncated) 15:41:22.778 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:52.779 [info] {"source":"oban","duration":493,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:00.618 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:42:06.450 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:42:20.216 [info] GET /sources/1/media/40/force_download 15:42:20.217 [debug] QUERY OK source="settings" db=0.4ms idle=1628.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:20.217 [debug] QUERY OK source="settings" db=0.1ms idle=1629.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:20.217 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:42:20.218 [error] #PID<0.5411.0> running PinchflatWeb.Endpoint (connection #PID<0.5410.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/40/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/1/media/40/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5410.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/40/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59704}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/40", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5411.0>, params: %{}, path_info: ["sources", "1", "media", "40", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/40"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/40/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9laMCgG8upEsAAF6C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5410.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/40/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59704}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/40", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/40/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5410.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/40/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 59704}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/40", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5411.0>, params: %{}, path_info: ["sources", "1", "media", "40", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Route (truncated) 15:42:22.780 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:52.781 [info] {"source":"oban","duration":520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:00.619 [info] {"source":"oban","duration":155,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:43:06.827 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:43:21.713 [info] GET /sources/1/media/12/force_download 15:43:21.714 [debug] QUERY OK source="settings" db=1.0ms idle=1125.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:43:21.716 [debug] QUERY OK source="settings" db=1.2ms idle=1127.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:43:21.716 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:43:21.716 [error] #PID<0.5420.0> running PinchflatWeb.Endpoint (connection #PID<0.5419.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/12/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/1/media/12/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5419.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/12/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35672}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/12", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5420.0>, params: %{}, path_info: ["sources", "1", "media", "12", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/12"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/12/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9o_SEf7rE76oAAD-h"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5419.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/12/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35672}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/12", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/12/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5419.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/12/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 35672}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/12", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5420.0>, params: %{}, path_info: ["sources", "1", "media", "12", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Route (truncated) 15:43:22.782 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:52.783 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:00.620 [info] {"source":"oban","duration":238,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:44:07.033 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:44:22.784 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:24.890 [info] GET /media/aea4420a-0cbf-4553-b5e7-2d6479b4b226/stream 15:44:24.890 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "aea4420a-0cbf-4553-b5e7-2d6479b4b226", "v" => "1784894514"} Pipelines: [:maybe_basic_auth] 15:44:24.891 [debug] QUERY OK source="media_items" db=0.1ms idle=302.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["aea4420a-0cbf-4553-b5e7-2d6479b4b226"] 15:44:24.891 [debug] Invalid range request for media item: aea4420a-0cbf-4553-b5e7-2d6479b4b226 - serving full file 15:44:24.891 [info] Sent 200 in 823µs 15:44:52.785 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:00.621 [info] {"source":"oban","duration":145,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:45:07.116 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:45:22.786 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:29.326 [info] GET /media/2f0cb062-a6a9-455f-b599-174ae6cf7ad4/stream 15:45:29.327 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "2f0cb062-a6a9-455f-b599-174ae6cf7ad4", "v" => "1784896010"} Pipelines: [:maybe_basic_auth] 15:45:29.327 [debug] QUERY OK source="media_items" db=0.6ms idle=736.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" = ?) ["2f0cb062-a6a9-455f-b599-174ae6cf7ad4"] 15:45:29.328 [debug] Invalid range request for media item: 2f0cb062-a6a9-455f-b599-174ae6cf7ad4 - serving full file 15:45:29.328 [info] Sent 200 in 1ms 15:45:52.787 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:00.622 [info] {"source":"oban","duration":167,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:46:07.169 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:46:22.788 [info] {"source":"oban","duration":574,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:28.015 [info] GET /media/6d838998-c982-4e52-80f4-7547e616fa97/stream 15:46:28.015 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "6d838998-c982-4e52-80f4-7547e616fa97", "v" => "1784896096"} Pipelines: [:maybe_basic_auth] 15:46:28.016 [debug] QUERY OK source="media_items" db=0.9ms idle=1994.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."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" = ?) ["6d838998-c982-4e52-80f4-7547e616fa97"] 15:46:28.016 [debug] Invalid range request for media item: 6d838998-c982-4e52-80f4-7547e616fa97 - serving full file 15:46:28.016 [info] Sent 200 in 1ms 15:46:52.789 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:00.623 [info] {"source":"oban","duration":175,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:47:07.283 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:47:18.075 [info] GET /sources/opml.xml 15:47:18.075 [debug] Processing with PinchflatWeb.Podcasts.PodcastController.opml_feed/2 Parameters: %{"route_token" => "75a4924c-48b2-4c56-8fd4-06c37b78811a"} Pipelines: [:maybe_basic_auth, :token_protected_route] 15:47:18.076 [debug] QUERY OK source="settings" db=0.1ms idle=599.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:47:18.076 [debug] QUERY OK source="sources" db=0.0ms idle=55.4ms SELECT s0."custom_name", s0."uuid" FROM "sources" AS s0 WHERE (s0."marked_for_deletion_at" IS NULL) ORDER BY s0."custom_name" [] 15:47:18.076 [info] Sent 200 in 871µs 15:47:22.790 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:52.791 [info] {"source":"oban","duration":518,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:00.623 [info] {"source":"oban","duration":206,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:48:02.182 [info] GET /sources/2/media/177/force_download 15:48:02.183 [debug] QUERY OK source="settings" db=1.2ms idle=657.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:48:02.184 [debug] QUERY OK source="settings" db=0.3ms idle=163.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:48:02.184 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:48:02.184 [error] #PID<0.5458.0> running PinchflatWeb.Endpoint (connection #PID<0.5457.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/177/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/177/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5457.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/177/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37350}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/177", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5458.0>, params: %{}, path_info: ["sources", "2", "media", "177", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/177"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/177/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU95UHDwl_euU8AAEFh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5457.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/177/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37350}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/177", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/177/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5457.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/177/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 37350}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/177", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5458.0>, params: %{}, path_info: ["sources", "2", "media", "177", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:48:07.351 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:48:22.792 [info] {"source":"oban","duration":471,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:43.412 [info] GET /sources/2/media/126/force_download 15:48:43.412 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=1391.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:48:43.413 [debug] QUERY OK source="settings" db=0.2ms idle=1392.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:48:43.413 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:48:43.413 [error] #PID<0.5466.0> running PinchflatWeb.Endpoint (connection #PID<0.5465.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/126/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/126/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5465.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/126/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60186}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/126", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5466.0>, params: %{}, path_info: ["sources", "2", "media", "126", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/126"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/126/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU97ts_PmxfzOMAAEGh"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5465.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/126/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60186}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/126", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/126/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5465.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/126/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60186}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/126", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5466.0>, params: %{}, path_info: ["sources", "2", "media", "126", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:48:52.793 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:00.625 [info] {"source":"oban","duration":157,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:49:07.543 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:49:22.795 [info] {"source":"oban","duration":1475,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:46.311 [info] GET /sources/2/media/124/force_download 15:49:46.311 [debug] QUERY OK source="settings" db=0.1ms idle=656.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:49:46.311 [debug] QUERY OK source="settings" db=0.1ms idle=290.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:49:46.311 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:49:46.312 [error] #PID<0.5475.0> running PinchflatWeb.Endpoint (connection #PID<0.5474.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/124/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/124/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/124/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40894}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/124", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5475.0>, params: %{}, path_info: ["sources", "2", "media", "124", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/124"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/124/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU9_YBPhymXjLkAAF9C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/124/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40894}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/124", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/124/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5474.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/124/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40894}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/124", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5475.0>, params: %{}, path_info: ["sources", "2", "media", "124", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:49:52.796 [info] {"source":"oban","duration":502,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:00.626 [info] {"source":"oban","duration":188,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:50:07.623 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:50:22.797 [info] {"source":"oban","duration":501,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:48.628 [info] GET /sources/1/media/121/force_download 15:50:48.629 [debug] QUERY OK source="settings" db=0.6ms idle=896.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:48.630 [debug] QUERY OK source="settings" db=0.1ms idle=609.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:48.630 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:50:48.630 [error] #PID<0.5483.0> running PinchflatWeb.Endpoint (connection #PID<0.5482.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/1/media/121/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/1/media/121/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5482.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/121/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53148}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/121", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5483.0>, params: %{}, path_info: ["sources", "1", "media", "121", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/1/media/121"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/1/media/121/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-DAK-xX9AFWgAAF-i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5482.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/121/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53148}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/121", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/1/media/121/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5482.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/1/media/121/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53148}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/1/media/121", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5483.0>, params: %{}, path_info: ["sources", "1", "media", "121", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:50:52.798 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:00.627 [info] {"source":"oban","duration":232,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:51:07.765 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:51:22.799 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:52.800 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:52.875 [info] GET /sources/2/media/127/force_download 15:51:52.875 [debug] QUERY OK source="settings" db=0.1ms idle=854.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:51:52.875 [debug] QUERY OK source="settings" db=0.1ms idle=854.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:52.876 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:51:52.876 [error] #PID<0.5492.0> running PinchflatWeb.Endpoint (connection #PID<0.5491.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/127/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/127/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5491.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/127/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40554}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/127", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5492.0>, params: %{}, path_info: ["sources", "2", "media", "127", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/127"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/127/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-GvgfoFtSyC8AAEIB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5491.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/127/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40554}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/127", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/127/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5491.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/127/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 40554}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/127", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5492.0>, params: %{}, path_info: ["sources", "2", "media", "127", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:52:00.628 [info] {"source":"oban","duration":190,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:52:07.972 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:52:22.801 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:52.802 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:54.206 [info] GET /sources/2/media/122/force_download 15:52:54.207 [debug] QUERY OK source="settings" db=0.2ms idle=321.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:52:54.207 [debug] QUERY OK source="settings" db=0.2ms idle=186.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:52:54.207 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:52:54.208 [error] #PID<0.5500.0> running PinchflatWeb.Endpoint (connection #PID<0.5499.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/122/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/122/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5499.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/122/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60062}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/122", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5500.0>, params: %{}, path_info: ["sources", "2", "media", "122", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/122"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/122/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-KT_FJ_eKjdAAAF_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.5499.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/122/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60062}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/122", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/122/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5499.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/122/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 60062}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/122", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5500.0>, params: %{}, path_info: ["sources", "2", "media", "122", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:53:00.629 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:53:08.028 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:53:22.804 [info] {"source":"oban","duration":499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:52.805 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:54.975 [info] GET /sources/2/media/125/force_download 15:53:54.975 [debug] QUERY OK source="settings" db=0.1ms idle=954.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:54.976 [debug] QUERY OK source="settings" db=0.2ms idle=954.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:53:54.976 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:53:54.976 [error] #PID<0.5509.0> running PinchflatWeb.Endpoint (connection #PID<0.5508.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/125/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/125/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5508.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/125/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47586}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/125", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5509.0>, params: %{}, path_info: ["sources", "2", "media", "125", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/125"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/125/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-N2XZ8_m97ukAAF_i"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5508.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/125/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47586}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/125", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/125/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5508.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/125/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47586}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/125", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5509.0>, params: %{}, path_info: ["sources", "2", "media", "125", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:54:00.630 [info] {"source":"oban","duration":156,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:54:08.178 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:54:22.806 [info] {"source":"oban","duration":492,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:52.807 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:00.630 [info] {"source":"oban","duration":151,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:55:00.859 [info] GET /sources/2/media/123/force_download 15:55:00.859 [debug] QUERY OK source="settings" db=0.2ms idle=838.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:55:00.860 [debug] QUERY OK source="settings" db=0.1ms idle=839.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:55:00.860 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 15:55:00.860 [error] #PID<0.5517.0> running PinchflatWeb.Endpoint (connection #PID<0.5516.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/media/123/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/123/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5516.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/123/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 46264}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/123", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5517.0>, params: %{}, path_info: ["sources", "2", "media", "123", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"from", "gptbot(at)openai.com"}, {"host", "pinchflat.kevinvn.nl"}, {"referer", "https://pinchflat.kevinvn.nl/sources/2/media/123"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)"}, {"x-forwarded-for", "74.7.227.149"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-openai-host-hash", "527064469"}, {"x-real-ip", "74.7.227.149"} ], request_path: "/sources/2/media/123/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-RrzaBVZe708AAELB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5516.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/123/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 46264}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/123", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/123/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5516.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/123/force_download", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 46264}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "from" => "gptbot(at)openai.com", "host" => "pinchflat.kevinvn.nl", "referer" => "https://pinchflat.kevinvn.nl/sources/2/media/123", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.4; +https://openai.com/gptbot)", "x-forwarded-for" => "74.7.227.149", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-openai-host-hash" => "527064469", "x-real-ip" => "74.7.227.149" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5517.0>, params: %{}, path_info: ["sources", "2", "media", "123", "force_download"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => Pinch (truncated) 15:55:08.477 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:55:22.808 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:52.809 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:00.631 [info] {"source":"oban","duration":169,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:56:08.540 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:56:22.810 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:52.811 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:00.633 [info] {"source":"oban","duration":167,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:57:08.594 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:57:22.812 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:52.813 [info] {"source":"oban","duration":497,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:00.634 [info] {"source":"oban","duration":152,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:58:08.654 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:58:22.814 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:52.815 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:00.635 [info] {"source":"oban","duration":189,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:59:08.753 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 15:59:22.816 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:52.817 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:00.636 [info] {"source":"oban","duration":201,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:00:08.811 [info] CONNECTED TO Phoenix.LiveView.Socket in 21µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:00:22.819 [info] {"source":"oban","duration":1587,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:52.820 [info] {"source":"oban","duration":604,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:59.228 [info] GET / 16:00:59.228 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 16:00:59.229 [debug] QUERY OK source="settings" db=0.2ms idle=1207.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:59.229 [debug] QUERY OK source="media_profiles" db=0.0ms idle=1207.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 16:00:59.229 [debug] QUERY OK source="sources" db=0.1ms idle=1207.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 16:00:59.230 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=1207.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:00:59.230 [debug] QUERY OK source="media_items" db=0.4ms idle=751.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:00:59.231 [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 [] 16:00:59.231 [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:00:59.232 [debug] QUERY OK source="settings" db=0.3ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:00:59.233 [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"] 16:00:59.233 [debug] QUERY OK source="media_items" db=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 (NOT (m0."media_filepath" IS NULL)) [] 16:00:59.234 [debug] QUERY OK source="media_items" db=0.3ms idle=2.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 16:00:59.234 [debug] QUERY OK source="sources" db=0.1ms idle=2.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:00:59.237 [debug] QUERY OK source="media_items" db=0.2ms idle=4.4ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 16:00:59.237 [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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:00:59.238 [info] Sent 200 in 10ms 16:01:00.637 [info] {"source":"oban","duration":220,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:01:09.315 [info] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:01:22.821 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:01:52.822 [info] {"source":"oban","duration":474,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:00.638 [info] {"source":"oban","duration":289,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:02:09.502 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:02:22.823 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:52.824 [info] {"source":"oban","duration":558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:00.639 [info] {"source":"oban","duration":153,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:03:09.736 [info] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:03:16.897 [info] GET / 16:03:16.897 [info] GET / 16:03:16.897 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 16:03:16.897 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 16:03:16.898 [debug] QUERY OK source="settings" db=0.3ms idle=875.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:16.898 [debug] QUERY OK source="settings" db=0.6ms idle=875.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_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:16.898 [debug] QUERY OK source="media_profiles" db=0.2ms idle=876.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 16:03:16.898 [debug] QUERY OK source="media_profiles" db=0.1ms idle=876.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 16:03:16.899 [debug] QUERY OK source="sources" db=0.3ms idle=250.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 16:03:16.899 [debug] QUERY OK source="sources" db=0.4ms idle=1.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 16:03:16.899 [debug] QUERY OK source="media_items" db=0.2ms idle=0.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:03:16.899 [debug] QUERY OK source="media_items" db=0.5ms idle=0.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:03:16.900 [debug] QUERY OK source="media_items" db=0.3ms idle=1.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:03:16.900 [debug] QUERY OK source="media_items" db=0.4ms idle=0.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:03:16.900 [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 [] 16:03:16.901 [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 [] 16:03:16.901 [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 [] 16:03:16.901 [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 [] 16:03:16.902 [debug] QUERY OK source="settings" db=0.5ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:03:16.902 [debug] QUERY OK source="settings" db=0.4ms queue=0.2ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:03:16.903 [debug] QUERY OK source="tasks" db=0.3ms idle=1.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"] 16:03:16.903 [debug] QUERY OK source="tasks" db=0.2ms idle=2.2ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", o1."id", o1."state", o1."queue", o1."worker", o1."args", o1."meta", o1."tags", o1."errors", o1."attempt", o1."attempted_by", o1."max_attempts", o1."priority", o1."attempted_at", o1."cancelled_at", o1."completed_at", o1."discarded_at", o1."inserted_at", o1."scheduled_at" FROM "tasks" AS t0 LEFT OUTER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (o1."state" IN (?)) AND (? IN (SELECT value FROM JSON_EACH(o1."tags"))) ORDER BY o1."attempted_at" DESC ["executing", "show_in_dashboard"] 16:03:16.904 [debug] QUERY OK source="media_items" db=0.1ms idle=2.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:03:16.904 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1.6ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:03:16.905 [debug] QUERY OK source="media_items" db=0.7ms idle=1.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."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:03:16.905 [debug] QUERY OK source="media_items" db=0.7ms idle=1.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] 16:03:16.905 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:03:16.906 [debug] QUERY OK source="sources" db=0.5ms idle=1.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:03:16.908 [debug] QUERY OK source="media_items" db=0.4ms 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"))) [] 16:03:16.908 [debug] QUERY OK source="media_items" db=0.6ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 16:03:16.909 [debug] QUERY OK source="media_items" db=0.8ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:03:16.910 [info] Sent 200 in 12ms 16:03:16.910 [debug] QUERY OK source="media_items" db=1.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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:03:16.911 [info] Sent 200 in 13ms 16:03:22.825 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:52.826 [info] {"source":"oban","duration":504,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:00.640 [info] {"source":"oban","duration":160,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:04:09.790 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:04:22.827 [info] {"source":"oban","duration":799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:52.828 [info] {"source":"oban","duration":407,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:00.641 [info] {"source":"oban","duration":184,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:05:10.007 [info] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:05:22.829 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:50.834 [info] GET /sources/new 16:05:50.834 [debug] Processing with PinchflatWeb.Sources.SourceController.new/2 Parameters: %{} Pipelines: [:browser] 16:05:50.835 [debug] QUERY OK source="media_profiles" db=0.7ms idle=811.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" [] 16:05:50.836 [debug] QUERY OK source="settings" db=0.3ms idle=812.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:50.836 [debug] QUERY OK source="settings" db=0.4ms idle=813.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:50.837 [debug] QUERY OK source="settings" db=0.2ms idle=813.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:50.838 [debug] QUERY OK source="settings" db=0.7ms idle=2.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:50.839 [debug] QUERY OK source="settings" db=0.4ms idle=3.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:50.841 [info] Sent 200 in 7ms 16:05:51.334 [info] GET /sources/1/edit 16:05:51.334 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 16:05:51.335 [debug] QUERY OK source="sources" db=0.3ms idle=499.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 16:05:51.336 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.2ms idle=498.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 16:05:51.337 [debug] QUERY OK source="settings" db=0.3ms idle=499.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:51.337 [debug] QUERY OK source="settings" db=0.3ms idle=499.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:51.338 [debug] QUERY OK source="settings" db=0.3ms 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 [] 16:05:51.340 [info] Sent 200 in 5ms 16:05:51.837 [info] GET /sources/1 16:05:51.838 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 16:05:51.839 [debug] QUERY OK source="sources" db=0.9ms idle=501.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 16:05:51.840 [debug] QUERY OK source="media_profiles" db=0.9ms queue=0.2ms idle=502.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:05:51.842 [debug] QUERY OK source="tasks" db=1.0ms queue=0.1ms idle=503.1ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at" FROM "tasks" AS t0 INNER JOIN "oban_jobs" AS o1 ON o1."id" = t0."job_id" WHERE (t0."source_id" = ?) AND (o1."state" IN (?,?,?,?)) [1, "executing", "available", "scheduled", "retryable"] 16:05:51.843 [debug] QUERY OK source="oban_jobs" db=1.5ms idle=503.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" = ?) [66] 16:05:51.847 [debug] QUERY OK source="settings" db=2.3ms queue=0.8ms idle=7.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:51.847 [debug] QUERY OK source="settings" db=0.5ms 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:05:51.848 [debug] QUERY OK source="settings" db=0.4ms idle=7.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:51.851 [debug] QUERY OK source="sources" db=1.8ms idle=7.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 16:05:51.853 [debug] QUERY OK source="media_items" db=1.3ms idle=8.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [1] 16:05:51.855 [debug] QUERY OK source="media_items" db=1.5ms idle=6.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 16:05:51.857 [debug] QUERY OK source="sources" db=1.6ms idle=7.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [1] 16:05:51.858 [debug] QUERY OK source="media_items" db=0.5ms idle=8.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [1] 16:05:51.858 [debug] QUERY OK source="media_items" db=0.2ms idle=6.6ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [1, 10, 0] 16:05:51.860 [debug] QUERY OK source="sources" db=1.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" = ?) [1] 16:05:51.861 [debug] QUERY OK source="media_items" db=0.5ms idle=5.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"))))) [1] 16:05:51.863 [debug] QUERY OK source="media_items" db=1.5ms queue=0.2ms idle=4.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 ? [1, 10, 0] 16:05:51.864 [info] Sent 200 in 26ms 16:05:52.354 [info] GET /sources/2/edit 16:05:52.354 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 16:05:52.356 [debug] QUERY OK source="sources" db=0.1ms idle=498.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:05:52.357 [debug] QUERY OK source="media_profiles" db=0.1ms idle=498.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 ORDER BY m0."name" [] 16:05:52.357 [debug] QUERY OK source="settings" db=0.6ms idle=496.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:52.358 [debug] QUERY OK source="settings" db=0.5ms idle=496.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:52.359 [debug] QUERY OK source="settings" db=0.1ms idle=495.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:52.362 [info] Sent 200 in 8ms 16:05:52.830 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:55.352 [info] GET /media_profiles/2/edit 16:05:55.352 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 16:05:55.353 [debug] QUERY OK source="media_profiles" db=0.5ms idle=1329.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 16:05:55.353 [debug] QUERY OK source="settings" db=0.1ms idle=1330.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:55.353 [debug] QUERY OK source="settings" db=0.1ms idle=1330.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:55.354 [debug] QUERY OK source="settings" db=0.2ms idle=1331.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:55.355 [info] Sent 200 in 3ms 16:05:55.599 [info] GET /media_profiles/2 16:05:55.600 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 16:05:55.600 [debug] QUERY OK source="media_profiles" db=0.1ms idle=759.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [2] 16:05:55.600 [debug] QUERY OK source="sources" db=0.1ms idle=247.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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" [2] 16:05:55.601 [debug] QUERY OK source="settings" db=0.2ms idle=247.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:55.601 [debug] QUERY OK source="settings" db=0.2ms idle=247.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:55.602 [debug] QUERY OK source="settings" db=0.4ms idle=247.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:55.603 [info] Sent 200 in 3ms 16:05:56.101 [info] GET /sources/2/force_metadata_refresh 16:05:56.101 [debug] QUERY OK source="settings" db=0.2ms idle=500.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:56.101 [debug] QUERY OK source="settings" db=0.1ms idle=500.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:05:56.102 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 16:05:56.102 [error] #PID<0.5611.0> running PinchflatWeb.Endpoint (connection #PID<0.5610.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.5610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53222}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5611.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://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.60"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.60"} ], 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", "GMU-30xPWMhWOJ0AAGNC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53222}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 53222}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYR3VIT25FWVIwdUtBUkZBbkdHYnUxM1JK.ZflbSeo1Cf_sY7A-3Zlh_HIfemjj7JD5BfFz5h8ZxSI" }, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5611.0>, params: %{}, path_info: ["sources", "2 (truncated) 16:06:00.642 [info] {"source":"oban","duration":180,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:06:10.462 [info] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fz8sIWY8MDc_Px5_DVs-OiY7dRFPQAwh3NjESczqMPnOw2LBDt3cw7cN", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pinchflat.kevinvn.nl/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pinchflat.kevinvn.nl/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 16:06:20.378 [info] GET /media_profiles/1/edit 16:06:20.378 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.edit/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 16:06:20.378 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1355.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:06:20.379 [debug] QUERY OK source="settings" db=0.8ms idle=513.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.380 [debug] QUERY OK source="settings" db=0.3ms idle=357.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.381 [debug] QUERY OK source="settings" db=0.4ms idle=357.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.383 [info] Sent 200 in 5ms 16:06:20.610 [info] GET /sources/2/force_index 16:06:20.611 [debug] QUERY OK source="settings" db=0.2ms idle=587.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.611 [debug] QUERY OK source="settings" db=0.2ms idle=232.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.611 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 16:06:20.611 [error] #PID<0.5619.0> running PinchflatWeb.Endpoint (connection #PID<0.5618.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl: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.5618.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47618}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5619.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://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.60"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.60"} ], request_path: "/sources/2/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-5QEuuTDTS7AAAGPC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5618.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47618}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5618.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47618}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5619.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://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.60"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.60"} (truncated) 16:06:20.893 [info] GET /media_profiles/1 16:06:20.893 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 16:06:20.893 [debug] QUERY OK source="media_profiles" db=0.1ms idle=513.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:06:20.894 [debug] QUERY OK source="sources" db=0.2ms idle=512.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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] 16:06:20.895 [debug] QUERY OK source="settings" db=0.7ms idle=283.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.895 [debug] QUERY OK source="settings" db=0.2ms idle=283.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:20.896 [debug] QUERY OK source="settings" db=0.3ms 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:06:20.897 [info] Sent 200 in 4ms 16:06:22.831 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:30.531 [info] GET / 16:06:30.531 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 16:06:30.531 [debug] QUERY OK source="settings" db=0.2ms idle=653.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:30.532 [debug] QUERY OK source="media_profiles" db=0.7ms idle=508.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 16:06:30.532 [debug] QUERY OK source="sources" db=0.2ms idle=509.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 16:06:30.533 [debug] QUERY OK source="media_items" db=0.3ms idle=510.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:06:30.533 [debug] QUERY OK source="media_items" db=0.2ms idle=510.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:06:30.534 [debug] QUERY OK source="settings" db=0.4ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:30.534 [debug] QUERY OK source="settings" db=0.4ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:30.535 [debug] QUERY OK source="settings" db=0.4ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:30.537 [debug] QUERY OK source="tasks" db=0.4ms 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"] 16:06:30.538 [debug] QUERY OK source="media_items" db=0.3ms 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 (m0."media_filepath" IS NULL)) [] 16:06:30.539 [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 (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 16:06:30.540 [debug] QUERY OK source="sources" db=0.7ms idle=4.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:06:30.542 [debug] QUERY OK source="media_items" db=0.2ms idle=6.8ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:06:30.544 [debug] QUERY OK source="media_items" db=1.5ms 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] 16:06:30.545 [info] Sent 200 in 14ms 16:06:30.890 [info] GET /sources/2/force_redownload 16:06:30.891 [debug] QUERY OK source="settings" db=0.2ms idle=351.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:30.891 [debug] QUERY OK source="settings" db=0.1ms idle=351.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:30.891 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 16:06:30.891 [error] #PID<0.5625.0> running PinchflatWeb.Endpoint (connection #PID<0.5624.0>, stream id 1) terminated Server: pinchflat.kevinvn.nl:80 (http) Request: GET /sources/2/force_redownload ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5624.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47036}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5625.0>, params: %{}, path_info: ["sources", "2", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.60"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, {"x-real-ip", "216.73.217.60"} ], request_path: "/sources/2/force_redownload", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GMU-52Xsm-baU-kAAGRi"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5624.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47036}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_redownload (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.5624.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_redownload", host: "pinchflat.kevinvn.nl", peer: {{192, 168, 1, 6}, 47036}, bindings: %{}, sock: {{172, 17, 0, 16}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pinchflat.kevinvn.nl", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-for" => "216.73.217.60", "x-forwarded-proto" => "https", "x-forwarded-scheme" => "https", "x-real-ip" => "216.73.217.60" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", has_body: false, streamid: 1, host_info: :undefined }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pinchflat.kevinvn.nl", method: "GET", owner: #PID<0.5625.0>, params: %{}, path_info: ["sources", "2", "force_redownload"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pinchflat.kevinvn.nl", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {192, 168, 1, 6}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pinchflat.kevinvn.nl"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-for", "216.73.217.60"}, {"x-forwarded-proto", "https"}, {"x-forwarded-scheme", "https"}, (truncated) 16:06:31.114 [info] GET /media_profiles/new 16:06:31.114 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.new/2 Parameters: %{} Pipelines: [:browser] 16:06:31.114 [debug] QUERY OK source="settings" db=0.1ms idle=571.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:31.115 [debug] QUERY OK source="settings" db=0.1ms idle=570.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:31.115 [debug] QUERY OK source="settings" db=0.2ms idle=236.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:31.116 [debug] QUERY OK source="settings" db=0.2ms idle=224.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:06:31.116 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:06:31.117 [info] Sent 200 in 3ms