diff options
author | phelin <phelin> | 2008-01-10 23:33:51 +0000 |
---|---|---|
committer | phelin <phelin> | 2008-01-10 23:33:51 +0000 |
commit | 3d2752b849a7cd8bee622b9e7c8aa9f476034002 (patch) | |
tree | 8f196b8ce7ec84950265b89cae1cfe914cbdaf04 | |
parent | 484149ce03b96d7656b7aa3af0f953c249117385 (diff) | |
download | xineliboutput-3d2752b849a7cd8bee622b9e7c8aa9f476034002.tar.gz xineliboutput-3d2752b849a7cd8bee622b9e7c8aa9f476034002.tar.bz2 |
Combine ID3Scanner command output handling for both metaflac and mp3info.
-rw-r--r-- | tools/playlist.c | 58 |
1 files changed, 23 insertions, 35 deletions
diff --git a/tools/playlist.c b/tools/playlist.c index 9380b413..b4880d6a 100644 --- a/tools/playlist.c +++ b/tools/playlist.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: playlist.c,v 1.9 2008-01-10 23:32:18 phelin Exp $ + * $Id: playlist.c,v 1.10 2008-01-10 23:33:51 phelin Exp $ * */ @@ -139,16 +139,28 @@ class cID3Scanner : public cThread LOGDBG("ID3Scanner Started"); while(Running()) { if(!(Item = m_List.Next(Item))) - break; + break; + + if(xc.IsAudioFile(Item->Filename)) { + LOGDBG("Scanning metainfo for file %s", *Item->Filename); + cString Cmd = ""; + if(!strcasecmp((Item->Filename) + strlen(Item->Filename) - 5, ".flac")) + Cmd = cString::sprintf("metaflac " + " --show-tag=TITLE " + " --show-tag=ALBUM " + " --show-tag=ARTIST " + " --show-tag=TRACKNUMBER " + " \"%s\"", + shell_escape(Item->Filename, '\"')); + else + Cmd = cString::sprintf("mp3info -p \"" + "ARTIST=%%a\\r\\n" + "ALBUM=%%l\\r\\n" + "TITLE=%%t\\r\\n" + "TRACKNUMBER=%%n\\r\\n\"" + " \"%s\"", + shell_escape(Item->Filename, '\"')); - if(!strcasecmp((Item->Filename) + strlen(Item->Filename) - 5, ".flac")) { - cString Cmd = cString::sprintf("metaflac " - " --show-tag=TITLE " - " --show-tag=ALBUM " - " --show-tag=ARTIST " - " --show-tag=TRACKNUMBER " - " \"%s\"", - shell_escape(Item->Filename, '\"')); cPipe p; if(p.Open(*Cmd, "r")) { cMutexLock ml(&m_List.m_Lock); @@ -162,33 +174,9 @@ class cID3Scanner : public cThread else if(!strncasecmp(pt, "TITLE=", 6) && strlen(pt) > 7) Item->Title = (pt+6); else if(!strncasecmp(pt, "TRACKNUMBER=", 12) && strlen(pt) > 12) - Item->Tracknumber = (pt+12); + Item->Tracknumber = cString::sprintf("%s%s", strlen(pt) == 13 ? "0" : "", (pt+12)); } } - } else if(xc.IsAudioFile(Item->Filename)) { - cString Cmd = cString::sprintf("mp3info -p \"" - "Artist: %%a\\r\\n" - "Album: %%l\\r\\n" - "Title: %%t\\r\\n" - "Tracknumber: %%n\\r\\n\"" - " \"%s\"", - shell_escape(Item->Filename, '\"')); - cPipe p; - if(p.Open(*Cmd, "r")) { - cMutexLock ml(&m_List.m_Lock); - cReadLine r; - char *pt; - while(NULL != (pt = r.Read(p))) { - if(!strncmp(pt, "Artist: ", 8) && strlen(pt) > 9) - Item->Artist = (pt+8); - if(!strncmp(pt, "Album: ", 7) && strlen(pt) > 8) - Item->Album = (pt+7); - if(!strncmp(pt, "Title: ", 7) && strlen(pt) > 8) - Item->Title = (pt+7); - if(!strncmp(pt, "Tracknumber: ", 12) && strlen(pt) > 13) - Item->Tracknumber = (pt+12); - } - } } } LOGDBG("ID3Scanner Done."); |