int artwork_get_item_filename(char *filename, int max_w, int max_h, int format, struct evbuffer *evbuf) { int ret; /* FUTURE: look at embedded artwork */ /* Look for basename(filename).{png,jpg} */ ret = artwork_get_own_image(filename, max_w, max_h, format, evbuf); if (ret > 0) return ret; /* Look for basedir(filename)/{artwork,cover}.{png,jpg} */ ret = artwork_get_dir_image(filename, 0, max_w, max_h, format, evbuf); if (ret > 0) return ret; return -1; }
int artwork_get_group(int id, int max_w, int max_h, int format, struct evbuffer *evbuf) { struct query_params qp; struct db_media_file_info dbmfi; char *dir; int got_art; int ret; DPRINTF(E_DBG, L_ART, "Artwork request for group %d\n", id); /* Try directory artwork first */ memset(&qp, 0, sizeof(struct query_params)); qp.type = Q_GROUP_DIRS; qp.id = id; ret = db_query_start(&qp); if (ret < 0) { DPRINTF(E_LOG, L_ART, "Could not start Q_GROUP_DIRS query\n"); /* Skip to invidual files artwork */ goto files_art; } got_art = -1; while ((got_art < 0) && ((ret = db_query_fetch_string(&qp, &dir)) == 0) && (dir)) { got_art = artwork_get_dir_image(dir, 1, max_w, max_h, format, evbuf); if (got_art < 0) got_art = artwork_get_parentdir_image(dir, 1, max_w, max_h, format, evbuf); } db_query_end(&qp); if (ret < 0) DPRINTF(E_LOG, L_ART, "Error fetching Q_GROUP_DIRS results\n"); else if (got_art > 0) return got_art; /* Then try individual files */ files_art: memset(&qp, 0, sizeof(struct query_params)); qp.type = Q_GROUP_ITEMS; qp.id = id; ret = db_query_start(&qp); if (ret < 0) { DPRINTF(E_LOG, L_ART, "Could not start Q_GROUP_ITEMS query\n"); return -1; } got_art = -1; while ((got_art < 0) && ((ret = db_query_fetch_file(&qp, &dbmfi)) == 0) && (dbmfi.id)) { got_art = artwork_get_own_image(dbmfi.path, max_w, max_h, format, evbuf); } db_query_end(&qp); if (ret < 0) DPRINTF(E_LOG, L_ART, "Error fetching Q_GROUP_ITEMS results\n"); else if (got_art > 0) return got_art; return -1; }