35 lines
1.4 KiB
Julia
35 lines
1.4 KiB
Julia
|
using DataFrames
|
||
|
import FileIO
|
||
|
|
||
|
"Check that all songs have the correct format"
|
||
|
function format_check(s::Vector{Beets.Song}; format = "FLAC")
|
||
|
wrong = filter(s -> s.format != format, s)
|
||
|
paths = [x.path for x in wrong] .|> dirname |> unique
|
||
|
(success = length(wrong) == 0, howmany = length(wrong), broken = wrong, paths = paths)
|
||
|
end
|
||
|
|
||
|
"Check that all songs exists"
|
||
|
function existing_check(s::Vector{Beets.Song})
|
||
|
paths = getfield.(s, :path)
|
||
|
ok = isfile.(paths)
|
||
|
(success = all(ok), howmany = count(.!ok), broken = s[.!ok], paths = paths[.!ok])
|
||
|
end
|
||
|
|
||
|
"Check that all songs are under the right path"
|
||
|
function path_check(s::Vector{Beets.Song}; path = "/mnt/music/")
|
||
|
paths = getfield.(s, :path)
|
||
|
ok = startswith.(paths, path)
|
||
|
(success = all(ok), howmany = count(.!ok), broken = s[.!ok], paths = paths[.!ok])
|
||
|
end
|
||
|
|
||
|
brokenartists(r) = map(x -> Beets.artist(x) , r.broken) |> unique
|
||
|
brokenalbums(r) = map(x -> Beets.album(x) , r.broken) |> unique
|
||
|
|
||
|
l() = map(a -> (artist = a.artist.name, title = a.title), brokenalbums(format_check(Beets.songs())))
|
||
|
m() = map(a -> (artist = a.artist.name, title = a.title), brokenalbums(existing_check(Beets.songs())))
|
||
|
n() = map(a -> (artist = a.artist.name, title = a.title), brokenalbums(path_check(Beets.songs())))
|
||
|
|
||
|
l() |> DataFrame |> d -> FileIO.save("format.csv", d)
|
||
|
m() |> DataFrame |> d -> FileIO.save("missing.csv", d)
|
||
|
n() |> DataFrame |> d -> FileIO.save("wrong_path.csv", d)
|