summaryrefslogtreecommitdiff
path: root/scripts/context/lua/mtx-flac.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2013-10-20 01:20:14 +0300
committerMarius <mariausol@gmail.com>2013-10-20 01:20:14 +0300
commit965214d981e6129b782c67adcaf3a81aedcb0bac (patch)
tree84f5945aae8efc9b6eb1898b873be5453cafe43d /scripts/context/lua/mtx-flac.lua
parente7d0d90a434e5452ff9e86c8abab5a4cac35e2f1 (diff)
downloadcontext-965214d981e6129b782c67adcaf3a81aedcb0bac.tar.gz
stable 2013.05.28 00:36
Diffstat (limited to 'scripts/context/lua/mtx-flac.lua')
-rw-r--r--scripts/context/lua/mtx-flac.lua37
1 files changed, 8 insertions, 29 deletions
diff --git a/scripts/context/lua/mtx-flac.lua b/scripts/context/lua/mtx-flac.lua
index 4e01abc99..2155b24be 100644
--- a/scripts/context/lua/mtx-flac.lua
+++ b/scripts/context/lua/mtx-flac.lua
@@ -56,20 +56,11 @@ readers.default = function(f,size,target)
f:seek("cur",size)
end
-local valid = {
- ["fLaC"] = true,
- ["ID3♥"] = false,
-}
-
function flac.getmetadata(filename)
local f = io.open(filename, "rb")
if f then
- local banner = readstring(f,4)
- local whatsit = valid[banner]
- if whatsit ~= nil then
- if whatsit == false then
- flac.report("suspicious flac file: %s (%s)",filename,banner)
- end
+ local banner = readstring(f,4)
+ if banner == "fLaC" then
local data = {
banner = banner,
filename = filename,
@@ -105,14 +96,13 @@ function flac.savecollection(pattern,filename)
local files = dir.glob(pattern)
flac.report("%s files found, analyzing files",#files)
local music = { }
- table.sort(files)
for i=1,#files do
local data = flac.getmetadata(files[i])
if data then
- local tags = data.tags
- local info = data.info
- local artist = tags.artist or "no-artist"
- local album = tags.album or "no-album"
+ local tags = data.tags
+ local info = data.info
+ local artist = tags.artist
+ local album = tags.album
local albums = music[artist]
if not albums then
albums = { }
@@ -144,18 +134,8 @@ function flac.savecollection(pattern,filename)
f:write("\t<artist>\n")
f:write("\t\t<name>",lpegmatch(p_escaped,artist),"</name>\n")
f:write("\t\t<albums>\n")
- local list = table.keys(albums)
- table.sort(list,function(a,b)
- local ya, yb = albums[a].year or 0, albums[b].year or 0
- if ya == yb then
- return a < b
- else
- return ya < yb
- end
- end)
- for nofalbums=1,#list do
- local album = list[nofalbums]
- local data = albums[album]
+ for album, data in sortedpairs(albums) do
+ nofalbums = nofalbums + 1
f:write("\t\t\t<album year='",data.year or 0,"'>\n")
f:write("\t\t\t\t<name>",lpegmatch(p_escaped,album),"</name>\n")
f:write("\t\t\t\t<tracks>\n")
@@ -199,7 +179,6 @@ local helpinfo = [[
<category name="basic">
<subcategory>
<flag name="collect"><short>collect albums in xml file</short></flag>
- <flag name="pattern"><short>use pattern for locating files</short></flag>
</subcategory>
</category>
</flags>