From 3b94b269d9a7e21750673a0e06df105540bfebf8 Mon Sep 17 00:00:00 2001 From: Kieran Date: Thu, 22 Feb 2024 17:46:08 -0800 Subject: [PATCH] Updated video downloader to use full URL; improved docs (#35) --- lib/pinchflat/media/media_item.ex | 28 ++++++++++--------- .../media_client/video_downloader.ex | 2 +- .../media_client/video_downloader_test.exs | 3 +- test/support/fixtures/media_fixtures.ex | 6 ++-- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/pinchflat/media/media_item.ex b/lib/pinchflat/media/media_item.ex index b491bd7..2886b61 100644 --- a/lib/pinchflat/media/media_item.ex +++ b/lib/pinchflat/media/media_item.ex @@ -11,19 +11,21 @@ defmodule Pinchflat.Media.MediaItem do alias Pinchflat.Media.MediaMetadata alias Pinchflat.Media.MediaItemSearchIndex - @allowed_fields ~w( - title - media_id - description - original_url - livestream - media_downloaded_at - media_filepath - subtitle_filepaths - thumbnail_filepath - metadata_filepath - source_id - )a + @allowed_fields [ + # these fields are captured on indexing + :title, + :media_id, + :description, + :original_url, + :livestream, + :source_id, + # these fields are captured on download + :media_downloaded_at, + :media_filepath, + :subtitle_filepaths, + :thumbnail_filepath, + :metadata_filepath + ] @required_fields ~w(title original_url livestream media_id source_id)a schema "media_items" do diff --git a/lib/pinchflat/media_client/video_downloader.ex b/lib/pinchflat/media_client/video_downloader.ex index 15c85b5..9643ef1 100644 --- a/lib/pinchflat/media_client/video_downloader.ex +++ b/lib/pinchflat/media_client/video_downloader.ex @@ -32,7 +32,7 @@ defmodule Pinchflat.MediaClient.VideoDownloader do item_with_preloads = Repo.preload(media_item, [:metadata, source: :media_profile]) media_profile = item_with_preloads.source.media_profile - case download_for_media_profile(media_item.media_id, media_profile, backend) do + case download_for_media_profile(media_item.original_url, media_profile, backend) do {:ok, parsed_json} -> parser = metadata_parser(backend) diff --git a/test/pinchflat/media_client/video_downloader_test.exs b/test/pinchflat/media_client/video_downloader_test.exs index 794f6b5..65631bf 100644 --- a/test/pinchflat/media_client/video_downloader_test.exs +++ b/test/pinchflat/media_client/video_downloader_test.exs @@ -19,7 +19,8 @@ defmodule Pinchflat.MediaClient.VideoDownloaderTest do describe "download_for_media_item/3" do test "it calls the backend runner", %{media_item: media_item} do - expect(YtDlpRunnerMock, :run, fn _url, _opts, ot -> + expect(YtDlpRunnerMock, :run, fn url, _opts, ot -> + assert url == media_item.original_url assert ot == "after_move:%()j" {:ok, render_metadata(:media_metadata)} diff --git a/test/support/fixtures/media_fixtures.ex b/test/support/fixtures/media_fixtures.ex index c2e6e82..29cbec0 100644 --- a/test/support/fixtures/media_fixtures.ex +++ b/test/support/fixtures/media_fixtures.ex @@ -10,12 +10,14 @@ defmodule Pinchflat.MediaFixtures do Generate a media_item. """ def media_item_fixture(attrs \\ %{}) do + media_id = Faker.String.base64(12) + {:ok, media_item} = attrs |> Enum.into(%{ - media_id: Faker.String.base64(12), + media_id: media_id, title: Faker.Commerce.product_name(), - original_url: "https://www.youtube.com/channel/#{Faker.String.base64(12)}", + original_url: "https://www.youtube.com/watch?v=#{media_id}", livestream: false, media_filepath: "/video/#{Faker.File.file_name(:video)}", source_id: SourcesFixtures.source_fixture().id