Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fc8eed8b50 | |||
| f42aab286a | |||
| bf11cd0dd9 | |||
| e051a37f0d |
+1
-1
@@ -102,7 +102,7 @@ if config_env() == :prod do
|
|||||||
# Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access.
|
# Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access.
|
||||||
# See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html
|
# See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html
|
||||||
# for details about using IPv6 vs IPv4 and loopback vs public addresses.
|
# for details about using IPv6 vs IPv4 and loopback vs public addresses.
|
||||||
ip: {0, 0, 0, 0, 0, 0, 0, 0},
|
ip: {0, 0, 0, 0},
|
||||||
port: String.to_integer(System.get_env("PORT") || "4000")
|
port: String.to_integer(System.get_env("PORT") || "4000")
|
||||||
],
|
],
|
||||||
secret_key_base: secret_key_base
|
secret_key_base: secret_key_base
|
||||||
|
|||||||
@@ -80,6 +80,9 @@ defmodule Pinchflat.Metadata.MetadataParser do
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# NOTE: this should not be needed, but it is due to a bug in yt-dlp.
|
||||||
|
# Can remove once this is resolved:
|
||||||
|
# https://github.com/yt-dlp/yt-dlp/issues/9445#issuecomment-2018724344
|
||||||
defp filepath_if_exists(nil), do: nil
|
defp filepath_if_exists(nil), do: nil
|
||||||
|
|
||||||
defp filepath_if_exists(filepath) do
|
defp filepath_if_exists(filepath) do
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorker do
|
|||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Fetches and stores various forms of metadata for a source:
|
Fetches and stores various forms of metadata for a source:
|
||||||
|
- Attributes like `description`
|
||||||
- JSON metadata for internal use
|
- JSON metadata for internal use
|
||||||
- The series directory for the source
|
- The series directory for the source
|
||||||
- The NFO file for the source (if specified)
|
- The NFO file for the source (if specified)
|
||||||
@@ -59,6 +60,7 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorker do
|
|||||||
%{
|
%{
|
||||||
series_directory: series_directory,
|
series_directory: series_directory,
|
||||||
nfo_filepath: store_source_nfo(source, series_directory, source_metadata),
|
nfo_filepath: store_source_nfo(source, series_directory, source_metadata),
|
||||||
|
description: source_metadata["description"],
|
||||||
metadata: Map.merge(%{metadata_filepath: source_metadata_filepath}, metadata_image_attrs)
|
metadata: Map.merge(%{metadata_filepath: source_metadata_filepath}, metadata_image_attrs)
|
||||||
},
|
},
|
||||||
source_image_attrs
|
source_image_attrs
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ defmodule Pinchflat.Sources.Source do
|
|||||||
collection_id
|
collection_id
|
||||||
collection_type
|
collection_type
|
||||||
custom_name
|
custom_name
|
||||||
|
description
|
||||||
nfo_filepath
|
nfo_filepath
|
||||||
poster_filepath
|
poster_filepath
|
||||||
fanart_filepath
|
fanart_filepath
|
||||||
@@ -55,6 +56,7 @@ defmodule Pinchflat.Sources.Source do
|
|||||||
|
|
||||||
schema "sources" do
|
schema "sources" do
|
||||||
field :custom_name, :string
|
field :custom_name, :string
|
||||||
|
field :description, :string
|
||||||
field :collection_name, :string
|
field :collection_name, :string
|
||||||
field :collection_id, :string
|
field :collection_id, :string
|
||||||
field :collection_type, Ecto.Enum, values: [:channel, :playlist]
|
field :collection_type, Ecto.Enum, values: [:channel, :playlist]
|
||||||
|
|||||||
@@ -57,6 +57,11 @@
|
|||||||
<.icon name="hero-currency-dollar" /> Donate
|
<.icon name="hero-currency-dollar" /> Donate
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="group relative flex items-center gap-2.5 px-4 py-2 text-sm">
|
||||||
|
v<%= Application.spec(:pinchflat)[:vsn] %>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ defmodule Pinchflat.MixProject do
|
|||||||
def project do
|
def project do
|
||||||
[
|
[
|
||||||
app: :pinchflat,
|
app: :pinchflat,
|
||||||
version: "0.1.2",
|
version: "0.1.3",
|
||||||
elixir: "~> 1.16",
|
elixir: "~> 1.16",
|
||||||
elixirc_paths: elixirc_paths(Mix.env()),
|
elixirc_paths: elixirc_paths(Mix.env()),
|
||||||
start_permanent: Mix.env() == :prod,
|
start_permanent: Mix.env() == :prod,
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
defmodule Pinchflat.Repo.Migrations.AddDescriptionToSource do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def change do
|
||||||
|
alter table(:sources) do
|
||||||
|
add :description, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -75,6 +75,8 @@ RUN mix release
|
|||||||
# the compiled release and other runtime necessities
|
# the compiled release and other runtime necessities
|
||||||
FROM ${RUNNER_IMAGE}
|
FROM ${RUNNER_IMAGE}
|
||||||
|
|
||||||
|
ARG PORT=8945
|
||||||
|
|
||||||
RUN apt-get update -y
|
RUN apt-get update -y
|
||||||
RUN apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates \
|
RUN apt-get install -y libstdc++6 openssl libncurses5 locales ca-certificates \
|
||||||
ffmpeg curl git openssh-client nano
|
ffmpeg curl git openssh-client nano
|
||||||
@@ -101,8 +103,9 @@ RUN chown nobody /config /downloads
|
|||||||
|
|
||||||
# set runner ENV
|
# set runner ENV
|
||||||
ENV MIX_ENV="prod"
|
ENV MIX_ENV="prod"
|
||||||
ENV PORT=8945
|
ENV PORT=${PORT}
|
||||||
ENV RUN_CONTEXT="selfhosted"
|
ENV RUN_CONTEXT="selfhosted"
|
||||||
|
EXPOSE ${PORT}
|
||||||
|
|
||||||
# Only copy the final release from the build stage
|
# Only copy the final release from the build stage
|
||||||
COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/pinchflat ./
|
COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/pinchflat ./
|
||||||
|
|||||||
@@ -50,6 +50,23 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorkerTest do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "perform/1 when testing attribute updates" do
|
||||||
|
test "the source description is saved" do
|
||||||
|
stub(YtDlpRunnerMock, :run, fn
|
||||||
|
_url, _opts, ot when ot == @source_details_ot -> {:ok, source_details_return_fixture()}
|
||||||
|
_url, _opts, ot when ot == @metadata_ot -> {:ok, render_metadata(:channel_source_metadata)}
|
||||||
|
end)
|
||||||
|
|
||||||
|
source = source_fixture()
|
||||||
|
|
||||||
|
refute source.description
|
||||||
|
perform_job(SourceMetadataStorageWorker, %{id: source.id})
|
||||||
|
source = Repo.preload(Repo.reload(source), :metadata)
|
||||||
|
|
||||||
|
assert source.description == "This is a test file for Pinchflat"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "perform/1 when testing metadata storage" do
|
describe "perform/1 when testing metadata storage" do
|
||||||
test "sets metadata location for source" do
|
test "sets metadata location for source" do
|
||||||
stub(YtDlpRunnerMock, :run, fn
|
stub(YtDlpRunnerMock, :run, fn
|
||||||
|
|||||||
Reference in New Issue
Block a user