From faf4f2e7e48eb21510a31cda7b91547f885956e6 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Mon, 18 Mar 2024 11:28:05 -0700 Subject: [PATCH] Updated MI NFO builder to take in a filepath --- lib/pinchflat/downloading/media_downloader.ex | 4 ++- lib/pinchflat/metadata/nfo_builder.ex | 6 ++-- test/pinchflat/metadata/nfo_builder_test.exs | 34 ++++++++----------- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/lib/pinchflat/downloading/media_downloader.ex b/lib/pinchflat/downloading/media_downloader.ex index cf87514..1774910 100644 --- a/lib/pinchflat/downloading/media_downloader.ex +++ b/lib/pinchflat/downloading/media_downloader.ex @@ -56,7 +56,9 @@ defmodule Pinchflat.Downloading.MediaDownloader do defp determine_nfo_filepath(media_item, parsed_json) do if media_item.source.media_profile.download_nfo do - NfoBuilder.build_and_store_for_media_item(parsed_json) + filepath = Path.rootname(parsed_json["filepath"]) <> ".nfo" + + NfoBuilder.build_and_store_for_media_item(filepath, parsed_json) else nil end diff --git a/lib/pinchflat/metadata/nfo_builder.ex b/lib/pinchflat/metadata/nfo_builder.ex index 376233e..d14fb0b 100644 --- a/lib/pinchflat/metadata/nfo_builder.ex +++ b/lib/pinchflat/metadata/nfo_builder.ex @@ -9,13 +9,11 @@ defmodule Pinchflat.Metadata.NfoBuilder do @doc """ Builds an NFO file for a media item (read: single "episode") and - stores it in the same directory as the media file. Has the same name - as the media file, but with a .nfo extension. + stores it at the specified location. Returns the filepath of the NFO file. """ - def build_and_store_for_media_item(metadata) do - filepath = Path.rootname(metadata["filepath"]) <> ".nfo" + def build_and_store_for_media_item(filepath, metadata) do nfo = build_for_media_item(metadata) FilesystemHelpers.write_p!(filepath, nfo) diff --git a/test/pinchflat/metadata/nfo_builder_test.exs b/test/pinchflat/metadata/nfo_builder_test.exs index 696c978..0985170 100644 --- a/test/pinchflat/metadata/nfo_builder_test.exs +++ b/test/pinchflat/metadata/nfo_builder_test.exs @@ -2,37 +2,33 @@ defmodule Pinchflat.Metadata.NfoBuilderTest do use Pinchflat.DataCase alias Pinchflat.Metadata.NfoBuilder + alias Pinchflat.Filesystem.FilesystemHelpers setup do - {:ok, %{metadata: render_parsed_metadata(:media_metadata)}} + filepath = FilesystemHelpers.generate_metadata_tmpfile(:json) + + on_exit(fn -> File.rm!(filepath) end) + + {:ok, + %{ + metadata: render_parsed_metadata(:media_metadata), + filepath: filepath + }} end - describe "build_and_store_for_media_item/1" do - test "returns the filepath", %{metadata: metadata} do - result = NfoBuilder.build_and_store_for_media_item(metadata) + describe "build_and_store_for_media_item/2" do + test "returns the filepath", %{metadata: metadata, filepath: filepath} do + result = NfoBuilder.build_and_store_for_media_item(filepath, metadata) assert File.exists?(result) - - File.rm!(result) end - test "builds filepath based on media location", %{metadata: metadata} do - result = NfoBuilder.build_and_store_for_media_item(metadata) - - assert String.contains?(result, Path.rootname(metadata["filepath"])) - assert String.ends_with?(result, ".nfo") - - File.rm!(result) - end - - test "builds an NFO file", %{metadata: metadata} do - result = NfoBuilder.build_and_store_for_media_item(metadata) + test "builds an NFO file", %{metadata: metadata, filepath: filepath} do + result = NfoBuilder.build_and_store_for_media_item(filepath, metadata) nfo = File.read!(result) assert String.contains?(nfo, ~S()) assert String.contains?(nfo, "#{metadata["title"]}") - - File.rm!(result) end end end