Compare commits

..

4 Commits

Author SHA1 Message Date
Kieran Eglin fc8eed8b50 Bumped version 2024-03-26 08:55:04 -07:00
Kieran f42aab286a [Bugfix] Expose port in Dockerfile and force IPv4 (#129)
* Exposes port on built image

* Forced IPv4

* Added current version to sidebar
2024-03-26 08:54:20 -07:00
Kieran bf11cd0dd9 Added description to source (#124) 2024-03-25 15:40:09 -07:00
Kieran Eglin e051a37f0d Pushed bug comment 2024-03-25 12:15:21 -07:00
9 changed files with 44 additions and 3 deletions
+1 -1
View File
@@ -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
+2
View File
@@ -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>
+1 -1
View File
@@ -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
+4 -1
View File
@@ -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