From bd54e08555d79e5fb06b6d5fee7b719950c23454 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Thu, 14 Mar 2024 09:07:53 -0700 Subject: [PATCH] Added code to compensate for yt-dlp bug --- lib/pinchflat/metadata/metadata_parser.ex | 19 ++++++++++++++++--- .../metadata/metadata_parser_test.exs | 9 +++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/pinchflat/metadata/metadata_parser.ex b/lib/pinchflat/metadata/metadata_parser.ex index 7aa2ed0..ee6e8c5 100644 --- a/lib/pinchflat/metadata/metadata_parser.ex +++ b/lib/pinchflat/metadata/metadata_parser.ex @@ -54,9 +54,22 @@ defmodule Pinchflat.Metadata.MetadataParser do |> Enum.reverse() |> Enum.find_value(fn attrs -> attrs["filepath"] end) - %{ - thumbnail_filepath: thumbnail_filepath - } + if thumbnail_filepath do + # NOTE: whole ordeal needed due to a bug I found in yt-dlp + # https://github.com/yt-dlp/yt-dlp/issues/9445 + # Can be reverted to remove this entire conditional once fixed + %{ + thumbnail_filepath: + thumbnail_filepath + |> String.split(~r{\.}, include_captures: true) + |> List.insert_at(-3, "-thumb") + |> Enum.join() + } + else + %{ + thumbnail_filepath: thumbnail_filepath + } + end end defp parse_infojson_metadata(metadata) do diff --git a/test/pinchflat/metadata/metadata_parser_test.exs b/test/pinchflat/metadata/metadata_parser_test.exs index a3ef8e6..0f2184c 100644 --- a/test/pinchflat/metadata/metadata_parser_test.exs +++ b/test/pinchflat/metadata/metadata_parser_test.exs @@ -94,6 +94,15 @@ defmodule Pinchflat.Metadata.MetadataParserTest do assert String.ends_with?(result.thumbnail_filepath, ".webp") end + # NOTE: this can be removed once this bug is fixed + # https://github.com/yt-dlp/yt-dlp/issues/9445 + # and the associated conditional in the parser is removed + test "automatically appends `-thumb` to the thumbnail filename", %{metadata: metadata} do + result = Parser.parse_for_media_item(metadata) + + assert String.contains?(result.thumbnail_filepath, "-thumb.webp") + end + test "doesn't freak out if the media has no thumbnails", %{metadata: metadata} do metadata = Map.put(metadata, "thumbnails", %{})