albumart search - parameterize ectension hunting to make code cleaner

also searches some more extns like all-caps versions and truncated jpe
vs jpeg. also add folder and .cover/.front/.folder images per dir.
this has been here a long while and some people didn't notice but kept
asking for it... :) they never tried it seems. :)
This commit is contained in:
Carsten Haitzler 2020-02-17 18:12:18 +00:00
parent c794cfd4ea
commit b05552c4f1
1 changed files with 63 additions and 45 deletions

View File

@ -350,14 +350,15 @@ albumart_file_get(const char *file)
{
char *tmp = alloca(strlen(file) + 1 + 100);
char *dir, *fraw, *s;
const char *fname;
const char *fname, *e;
const char *ext[] = { "png", "PNG", "jpg", "JPG", "jpeg", "JPEG", "jpe", "JPE", NULL };
int i;
sprintf(tmp, "%s.png", file);
if (ecore_file_exists(tmp)) return strdup(tmp);
sprintf(tmp, "%s.jpg", file);
if (ecore_file_exists(tmp)) return strdup(tmp);
sprintf(tmp, "%s.jpeg", file);
if (ecore_file_exists(tmp)) return strdup(tmp);
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s.%s", file, e);
if (ecore_file_exists(tmp)) return strdup(tmp);
}
dir = ecore_file_dir_get(file);
if (!dir) dir = strdup(".");
@ -376,45 +377,62 @@ albumart_file_get(const char *file)
s = strrchr(fraw, '.');
if (s) *s = 0;
sprintf(tmp, "%s/%s.png", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/%s.jpg", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/%s.jpeg", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/%s.%s", dir, fraw, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.%s.%s", dir, fname, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.%s.%s", dir, fraw, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.thumb/%s.%s", dir, fname, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.thumb/%s.%s", dir, fraw, e);
if (ecore_file_exists(tmp)) goto found;
}
sprintf(tmp, "%s/.%s.png", dir, fname);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.%s.jpg", dir, fname);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.%s.jpeg", dir, fname);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.%s.png", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.%s.jpg", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.%s.jpeg", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.thumb/%s.png", dir, fname);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.thumb/%s.jpg", dir, fname);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.thumb/%s.jpeg", dir, fname);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.thumb/%s.png", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.thumb/%s.jpg", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/.thumb/%s.jpeg", dir, fraw);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/cover.jpg", dir);
if (ecore_file_exists(tmp)) goto found;
sprintf(tmp, "%s/front.jpg", dir);
if (ecore_file_exists(tmp)) goto found;
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/cover.%s", dir, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/front.%s", dir, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/folder.%s", dir, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.cover.%s", dir, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.front.%s", dir, e);
if (ecore_file_exists(tmp)) goto found;
}
for (i = 0; (e = ext[i]) && e; i++)
{
sprintf(tmp, "%s/.folder.%s", dir, e);
if (ecore_file_exists(tmp)) goto found;
}
free(dir);
free(fraw);