From 748e512c40619f54ecdab369c8f4cfb6ee977332 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Thu, 15 Feb 2024 14:16:53 -0800 Subject: [PATCH] Add resolution to download option builder --- .../options/yt_dlp/download_option_builder.ex | 14 ++++++++++++++ .../yt_dlp/download_option_builder_test.exs | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/pinchflat/profiles/options/yt_dlp/download_option_builder.ex b/lib/pinchflat/profiles/options/yt_dlp/download_option_builder.ex index 58a0325..52825c6 100644 --- a/lib/pinchflat/profiles/options/yt_dlp/download_option_builder.ex +++ b/lib/pinchflat/profiles/options/yt_dlp/download_option_builder.ex @@ -26,6 +26,7 @@ defmodule Pinchflat.Profiles.Options.YtDlp.DownloadOptionBuilder do subtitle_options(media_profile) ++ thumbnail_options(media_profile) ++ metadata_options(media_profile) ++ + quality_options(media_profile) ++ output_options(media_profile) {:ok, built_options} @@ -87,6 +88,19 @@ defmodule Pinchflat.Profiles.Options.YtDlp.DownloadOptionBuilder do end) end + defp quality_options(media_profile) do + codec_options = "+codec:avc:m4a" + + case media_profile.preferred_resolution do + :"360p" -> [format_sort: "res:360,#{codec_options}"] + :"480p" -> [format_sort: "res:480,#{codec_options}"] + :"720p" -> [format_sort: "res:720,#{codec_options}"] + :"1080p" -> [format_sort: "res:1080,#{codec_options}"] + :"1440p" -> [format_sort: "res:1440,#{codec_options}"] + :"2160p" -> [format_sort: "res:2160,#{codec_options}"] + end + end + defp output_options(media_profile) do {:ok, output_path} = OutputPathBuilder.build(media_profile.output_path_template) diff --git a/test/pinchflat/profiles/options/yt_dlp/download_option_builder_test.exs b/test/pinchflat/profiles/options/yt_dlp/download_option_builder_test.exs index 56942ce..874b898 100644 --- a/test/pinchflat/profiles/options/yt_dlp/download_option_builder_test.exs +++ b/test/pinchflat/profiles/options/yt_dlp/download_option_builder_test.exs @@ -158,4 +158,12 @@ defmodule Pinchflat.Profiles.Options.YtDlp.DownloadOptionBuilderTest do refute :embed_metadata in res end end + + describe "build/1 when testing quality options" do + test "it includes quality options" do + assert {:ok, res} = DownloadOptionBuilder.build(@media_profile) + + assert {:format_sort, "res:1080,+codec:avc:m4a"} in res + end + end end