Updated video downloader to use full URL; improved docs (#35)

This commit is contained in:
Kieran 2024-02-22 17:46:08 -08:00 committed by GitHub
parent 927560beb6
commit 3b94b269d9
4 changed files with 22 additions and 17 deletions

View file

@ -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

View file

@ -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)

View file

@ -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)}

View file

@ -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