Add batch operation to resize covers with incorrect sizes
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
defmodule MusicLibrary.Records.Batch do
|
defmodule MusicLibrary.Records.Batch do
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
alias MusicLibrary.Records.Record
|
alias MusicLibrary.Records.{Cover, Record}
|
||||||
alias MusicLibrary.Repo
|
alias MusicLibrary.Repo
|
||||||
import Ecto.Query
|
import Ecto.Query
|
||||||
|
|
||||||
@@ -20,6 +20,18 @@ defmodule MusicLibrary.Records.Batch do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def refresh_old_artwork do
|
||||||
|
run_on_all_records(&refresh_old_artwork/1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def refresh_old_artwork(record) do
|
||||||
|
if Cover.correct_size?(record.cover_data) do
|
||||||
|
:ok
|
||||||
|
else
|
||||||
|
MusicLibrary.Records.refresh_cover(record)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def update_release_ids do
|
def update_release_ids do
|
||||||
run_on_all_records(&update_release_ids/1)
|
run_on_all_records(&update_release_ids/1)
|
||||||
end
|
end
|
||||||
@@ -44,21 +56,27 @@ defmodule MusicLibrary.Records.Batch do
|
|||||||
q = from(r in Record)
|
q = from(r in Record)
|
||||||
stream = Repo.stream(q)
|
stream = Repo.stream(q)
|
||||||
|
|
||||||
Repo.transaction(fn ->
|
Repo.transaction(
|
||||||
Enum.reduce(stream, [], fn record, acc ->
|
fn ->
|
||||||
case fun.(record) do
|
Enum.reduce(stream, [], fn record, acc ->
|
||||||
{:error, reason} ->
|
case fun.(record) do
|
||||||
Logger.error("Failed to run function on record #{record.id} with #{inspect(reason)}")
|
{:error, reason} ->
|
||||||
[record.id | acc]
|
Logger.error(
|
||||||
|
"Failed to run function on record #{record.id} with #{inspect(reason)}"
|
||||||
|
)
|
||||||
|
|
||||||
:ok ->
|
[record.id | acc]
|
||||||
acc
|
|
||||||
|
|
||||||
{:ok, _record} ->
|
:ok ->
|
||||||
acc
|
acc
|
||||||
end
|
|
||||||
end)
|
{:ok, _record} ->
|
||||||
end)
|
acc
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
timeout: :infinity
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp musicbrainz do
|
defp musicbrainz do
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
defmodule MusicLibrary.Records.Cover do
|
defmodule MusicLibrary.Records.Cover do
|
||||||
|
@size 600
|
||||||
def resize(cover_data) do
|
def resize(cover_data) do
|
||||||
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, 600)
|
{:ok, thumb} = Vix.Vips.Operation.thumbnail_buffer(cover_data, @size)
|
||||||
Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
Vix.Vips.Image.write_to_buffer(thumb, ".jpg")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def correct_size?(cover_data) do
|
||||||
|
{:ok, image} = Vix.Vips.Image.new_from_buffer(cover_data)
|
||||||
|
|
||||||
|
Vix.Vips.Image.width(image) == @size
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user