[Bugfix] Fixes issue with grabbing source/media details when first video is a premier (#79)
* Fixed issue with source details when first video is a premier * Updated other occurance
This commit is contained in:
@@ -22,7 +22,10 @@ defmodule Pinchflat.YtDlp.MediaCollection do
|
|||||||
"""
|
"""
|
||||||
def get_media_attributes_for_collection(url, addl_opts \\ []) do
|
def get_media_attributes_for_collection(url, addl_opts \\ []) do
|
||||||
runner = Application.get_env(:pinchflat, :yt_dlp_runner)
|
runner = Application.get_env(:pinchflat, :yt_dlp_runner)
|
||||||
command_opts = [:simulate, :skip_download]
|
# `ignore_no_formats_error` is necessary because yt-dlp will error out if
|
||||||
|
# the first video has not released yet (ie: is a premier). We don't care about
|
||||||
|
# available formats since we're just getting the media details
|
||||||
|
command_opts = [:simulate, :skip_download, :ignore_no_formats_error]
|
||||||
output_template = YtDlpMedia.indexing_output_template()
|
output_template = YtDlpMedia.indexing_output_template()
|
||||||
output_filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
|
output_filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
|
||||||
file_listener_handler = Keyword.get(addl_opts, :file_listener_handler, false)
|
file_listener_handler = Keyword.get(addl_opts, :file_listener_handler, false)
|
||||||
@@ -54,7 +57,10 @@ defmodule Pinchflat.YtDlp.MediaCollection do
|
|||||||
Returns {:ok, map()} | {:error, any, ...}.
|
Returns {:ok, map()} | {:error, any, ...}.
|
||||||
"""
|
"""
|
||||||
def get_source_details(source_url) do
|
def get_source_details(source_url) do
|
||||||
opts = [:simulate, :skip_download, playlist_end: 1]
|
# `ignore_no_formats_error` is necessary because yt-dlp will error out if
|
||||||
|
# the first video has not released yet (ie: is a premier). We don't care about
|
||||||
|
# available formats since we're just getting the source details
|
||||||
|
opts = [:simulate, :skip_download, :ignore_no_formats_error, playlist_end: 1]
|
||||||
output_template = "%(.{channel,channel_id,playlist_id,playlist_title})j"
|
output_template = "%(.{channel,channel_id,playlist_id,playlist_title})j"
|
||||||
|
|
||||||
with {:ok, output} <- backend_runner().run(source_url, opts, output_template),
|
with {:ok, output} <- backend_runner().run(source_url, opts, output_template),
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ defmodule Pinchflat.YtDlp.MediaCollectionTest do
|
|||||||
|
|
||||||
test "it passes the expected default args" do
|
test "it passes the expected default args" do
|
||||||
expect(YtDlpRunnerMock, :run, fn _url, opts, ot, _addl_opts ->
|
expect(YtDlpRunnerMock, :run, fn _url, opts, ot, _addl_opts ->
|
||||||
assert opts == [:simulate, :skip_download]
|
assert opts == [:simulate, :skip_download, :ignore_no_formats_error]
|
||||||
assert ot == Media.indexing_output_template()
|
assert ot == Media.indexing_output_template()
|
||||||
|
|
||||||
{:ok, ""}
|
{:ok, ""}
|
||||||
@@ -87,7 +87,7 @@ defmodule Pinchflat.YtDlp.MediaCollectionTest do
|
|||||||
|
|
||||||
test "it passes the expected args to the backend runner" do
|
test "it passes the expected args to the backend runner" do
|
||||||
expect(YtDlpRunnerMock, :run, fn @channel_url, opts, ot ->
|
expect(YtDlpRunnerMock, :run, fn @channel_url, opts, ot ->
|
||||||
assert opts == [:simulate, :skip_download, playlist_end: 1]
|
assert opts == [:simulate, :skip_download, :ignore_no_formats_error, playlist_end: 1]
|
||||||
assert ot == "%(.{channel,channel_id,playlist_id,playlist_title})j"
|
assert ot == "%(.{channel,channel_id,playlist_id,playlist_title})j"
|
||||||
|
|
||||||
{:ok, "{}"}
|
{:ok, "{}"}
|
||||||
|
|||||||
Reference in New Issue
Block a user