Skip to content

Commit

Permalink
Added the ability to mark chapters via sponsorblock (#542)
Browse files Browse the repository at this point in the history
  • Loading branch information
kieraneglin authored Jan 3, 2025
1 parent 967e21a commit e150355
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 6 deletions.
1 change: 1 addition & 0 deletions lib/pinchflat/downloading/download_option_builder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilder do
case {behaviour, categories} do
{_, []} -> []
{:remove, _} -> [sponsorblock_remove: Enum.join(categories, ",")]
{:mark, _} -> [sponsorblock_mark: Enum.join(categories, ",")]
{:disabled, _} -> []
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/pinchflat/profiles/media_profile.ex
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ defmodule Pinchflat.Profiles.MediaProfile do
field :embed_metadata, :boolean, default: false

field :download_nfo, :boolean, default: false
field :sponsorblock_behaviour, Ecto.Enum, values: [:disabled, :remove], default: :disabled
field :sponsorblock_behaviour, Ecto.Enum, values: [:disabled, :mark, :remove], default: :disabled
field :sponsorblock_categories, {:array, :string}, default: []
# NOTE: these do NOT speed up indexing - the indexer still has to go
# through the entire collection to determine if a media is a short or
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ defmodule PinchflatWeb.MediaProfiles.MediaProfileHTML do
def friendly_sponsorblock_options do
[
{"Disabled (default)", "disabled"},
{"Mark Segments as Chapters", "mark"},
{"Remove Segments", "remove"}
]
end
Expand Down
24 changes: 19 additions & 5 deletions test/pinchflat/downloading/download_option_builder_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,19 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do
assert {:sponsorblock_remove, "sponsor,intro"} in res
end

test "does not include :sponsorblock_remove option without categories", %{media_item: media_item} do
test "includes :sponsorblock_mark option when specified", %{media_item: media_item} do
media_item =
update_media_profile_attribute(media_item, %{
sponsorblock_behaviour: :mark,
sponsorblock_categories: ["sponsor", "intro"]
})

assert {:ok, res} = DownloadOptionBuilder.build(media_item)

assert {:sponsorblock_mark, "sponsor,intro"} in res
end

test "does not include any sponsorblock option without categories", %{media_item: media_item} do
media_item =
update_media_profile_attribute(media_item, %{
sponsorblock_behaviour: :remove,
Expand All @@ -296,9 +308,10 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do

assert {:ok, res} = DownloadOptionBuilder.build(media_item)

refute {:sponsorblock_remove, ""} in res
refute {:sponsorblock_remove, []} in res
refute Keyword.has_key?(res, :sponsorblock_remove)
refute Keyword.has_key?(res, :sponsorblock_mark)
refute :sponsorblock_remove in res
refute :sponsorblock_mark in res
end

test "does not include any sponsorblock options when disabled", %{media_item: media_item} do
Expand All @@ -307,9 +320,10 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do

assert {:ok, res} = DownloadOptionBuilder.build(media_item)

refute {:sponsorblock_remove, ""} in res
refute {:sponsorblock_remove, []} in res
refute Keyword.has_key?(res, :sponsorblock_remove)
refute Keyword.has_key?(res, :sponsorblock_mark)
refute :sponsorblock_remove in res
refute :sponsorblock_mark in res
end
end

Expand Down

0 comments on commit e150355

Please sign in to comment.