1
0
Fork 0
forked from len0rd/rockbox

Change the search_albumart_files "ignore track art" option to check track art last.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21126 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Andrew Mahone 2009-05-29 10:31:56 +00:00
parent b714ace163
commit 84106fd917

View file

@ -133,7 +133,7 @@ static bool try_exts(char *path, int len)
* *
* If the first symbol in size_string is a colon (e.g. ":100x100") * If the first symbol in size_string is a colon (e.g. ":100x100")
* then the colon is skipped ("100x100" will be used) and the track * then the colon is skipped ("100x100" will be used) and the track
* specific image (./<trackname><size>.bmp) is not tried. * specific image (./<trackname><size>.bmp) is tried last instead of first.
*/ */
bool search_albumart_files(const struct mp3entry *id3, const char *size_string, bool search_albumart_files(const struct mp3entry *id3, const char *size_string,
char *buf, int buflen) char *buf, int buflen)
@ -141,6 +141,8 @@ bool search_albumart_files(const struct mp3entry *id3, const char *size_string,
char path[MAX_PATH + 1]; char path[MAX_PATH + 1];
char dir[MAX_PATH + 1]; char dir[MAX_PATH + 1];
bool found = false; bool found = false;
int track_first = 1;
int pass;
const char *trackname; const char *trackname;
const char *artist; const char *artist;
int dirlen; int dirlen;
@ -155,93 +157,107 @@ bool search_albumart_files(const struct mp3entry *id3, const char *size_string,
if (strcmp(trackname, "No file!") == 0) if (strcmp(trackname, "No file!") == 0)
return false; return false;
if (*size_string == ':')
{
size_string++;
track_first = 0;
}
strip_filename(dir, sizeof(dir), trackname); strip_filename(dir, sizeof(dir), trackname);
dirlen = strlen(dir); dirlen = strlen(dir);
albumlen = id3->album ? strlen(id3->album) : 0; albumlen = id3->album ? strlen(id3->album) : 0;
/* the first file we look for is one specific to the track playing */ for(pass = 0; pass < 2; pass++)
if (*size_string == ':')
size_string++;
else {
strip_extension(path, sizeof(path) - strlen(size_string) - 4, trackname);
strcat(path, size_string);
strcat(path, "." EXT);
#ifdef USE_JPEG_COVER
pathlen = strlen(path);
#endif
found = try_exts(path, pathlen);
}
if (!found && albumlen > 0)
{ {
/* if it doesn't exist, if (track_first || pass)
* we look for a file specific to the track's album name */ {
pathlen = snprintf(path, sizeof(path), /* the first file we look for is one specific to the
"%s%s%s." EXT, dir, id3->album, size_string); current track */
fix_path_part(path, dirlen, albumlen); strip_extension(path, sizeof(path) - strlen(size_string) - 4,
found = try_exts(path, pathlen); trackname);
} strcat(path, size_string);
strcat(path, "." EXT);
if (!found)
{
/* if it still doesn't exist, we look for a generic file */
pathlen = snprintf(path, sizeof(path),
"%scover%s." EXT, dir, size_string);
found = try_exts(path, pathlen);
}
#ifdef USE_JPEG_COVER #ifdef USE_JPEG_COVER
if (!found && !*size_string) pathlen = strlen(path);
{
snprintf (path, sizeof(path), "%sfolder.jpg", dir);
found = file_exists(path);
}
#endif #endif
found = try_exts(path, pathlen);
artist = id3->albumartist != NULL ? id3->albumartist : id3->artist; }
if (pass)
if (!found && artist && id3->album) break;
{
/* look in the albumart subdir of .rockbox */
pathlen = snprintf(path, sizeof(path),
ROCKBOX_DIR "/albumart/%s-%s%s." EXT,
artist,
id3->album,
size_string);
fix_path_part(path, strlen(ROCKBOX_DIR "/albumart/"), MAX_PATH);
found = try_exts(path, pathlen);
}
if (!found)
{
/* if it still doesn't exist,
* we continue to search in the parent directory */
strcpy(path, dir);
path[dirlen - 1] = 0;
strip_filename(dir, sizeof(dir), path);
dirlen = strlen(dir);
}
/* only try parent if there is one */
if (dirlen > 0)
{
if (!found && albumlen > 0) if (!found && albumlen > 0)
{ {
/* we look in the parent directory /* if it doesn't exist,
* for a file specific to the track's album name */ * we look for a file specific to the track's album name */
pathlen = snprintf(path, sizeof(path), pathlen = snprintf(path, sizeof(path),
"%s%s%s." EXT, dir, id3->album, size_string); "%s%s%s." EXT, dir, id3->album, size_string);
fix_path_part(path, dirlen, albumlen); fix_path_part(path, dirlen, albumlen);
found = try_exts(path, pathlen); found = try_exts(path, pathlen);
} }
if (!found) if (!found)
{ {
/* if it still doesn't exist, we look in the parent directory /* if it still doesn't exist, we look for a generic file */
* for a generic file */
pathlen = snprintf(path, sizeof(path), pathlen = snprintf(path, sizeof(path),
"%scover%s." EXT, dir, size_string); "%scover%s." EXT, dir, size_string);
found = try_exts(path, pathlen); found = try_exts(path, pathlen);
} }
#ifdef USE_JPEG_COVER
if (!found && !*size_string)
{
snprintf (path, sizeof(path), "%sfolder.jpg", dir);
found = file_exists(path);
}
#endif
artist = id3->albumartist != NULL ? id3->albumartist : id3->artist;
if (!found && artist && id3->album)
{
/* look in the albumart subdir of .rockbox */
pathlen = snprintf(path, sizeof(path),
ROCKBOX_DIR "/albumart/%s-%s%s." EXT,
artist,
id3->album,
size_string);
fix_path_part(path, strlen(ROCKBOX_DIR "/albumart/"), MAX_PATH);
found = try_exts(path, pathlen);
}
if (!found)
{
/* if it still doesn't exist,
* we continue to search in the parent directory */
strcpy(path, dir);
path[dirlen - 1] = 0;
strip_filename(dir, sizeof(dir), path);
dirlen = strlen(dir);
}
/* only try parent if there is one */
if (dirlen > 0)
{
if (!found && albumlen > 0)
{
/* we look in the parent directory
* for a file specific to the track's album name */
pathlen = snprintf(path, sizeof(path),
"%s%s%s." EXT, dir, id3->album, size_string);
fix_path_part(path, dirlen, albumlen);
found = try_exts(path, pathlen);
}
if (!found)
{
/* if it still doesn't exist, we look in the parent directory
* for a generic file */
pathlen = snprintf(path, sizeof(path),
"%scover%s." EXT, dir, size_string);
found = try_exts(path, pathlen);
}
}
if (found)
break;
} }
if (!found) if (!found)