mirror of
https://github.com/owntone/owntone-server.git
synced 2025-04-21 03:04:04 -04:00
[spotify] Extract function for preparing directories
This commit is contained in:
parent
5efadb6fc2
commit
1a85257fb3
@ -623,6 +623,48 @@ spotify_metadata_get(sp_track *track, struct media_file_info *mfi, const char *p
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the directory id for /spotify:/<artist>/<album>, if the directory (or the parent
|
||||||
|
* directories) does not yet exist, they will be created.
|
||||||
|
* If an error occured the return value is -1.
|
||||||
|
*
|
||||||
|
* @return directory id for the given artist/album directory
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
prepare_directories(const char *artist, const char *album)
|
||||||
|
{
|
||||||
|
int dir_id;
|
||||||
|
char virtual_path[PATH_MAX];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = snprintf(virtual_path, sizeof(virtual_path), "/spotify:/%s", artist);
|
||||||
|
if ((ret < 0) || (ret >= sizeof(virtual_path)))
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_SPOTIFY, "Virtual path exceeds PATH_MAX (/spotify:/%s)\n", artist);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
dir_id = db_directory_addorupdate(virtual_path, 0, DIR_SPOTIFY);
|
||||||
|
if (dir_id <= 0)
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_SPOTIFY, "Could not add or update directory '%s'\n", virtual_path);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
ret = snprintf(virtual_path, sizeof(virtual_path), "/spotify:/%s/%s", artist, album);
|
||||||
|
if ((ret < 0) || (ret >= sizeof(virtual_path)))
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_SPOTIFY, "Virtual path exceeds PATH_MAX (/spotify:/%s/%s)\n", artist, album);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
dir_id = db_directory_addorupdate(virtual_path, 0, dir_id);
|
||||||
|
if (dir_id <= 0)
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_SPOTIFY, "Could not add or update directory '%s'\n", virtual_path);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dir_id;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spotify_track_save(int plid, sp_track *track, const char *pltitle, int time_added)
|
spotify_track_save(int plid, sp_track *track, const char *pltitle, int time_added)
|
||||||
{
|
{
|
||||||
@ -631,7 +673,6 @@ spotify_track_save(int plid, sp_track *track, const char *pltitle, int time_adde
|
|||||||
char url[1024];
|
char url[1024];
|
||||||
int ret;
|
int ret;
|
||||||
int dir_id;
|
int dir_id;
|
||||||
char virtual_path[PATH_MAX];
|
|
||||||
|
|
||||||
|
|
||||||
if (!fptr_sp_track_is_loaded(track))
|
if (!fptr_sp_track_is_loaded(track))
|
||||||
@ -681,31 +722,10 @@ spotify_track_save(int plid, sp_track *track, const char *pltitle, int time_adde
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = snprintf(virtual_path, sizeof(virtual_path), "/spotify:/%s", mfi.artist);
|
dir_id = prepare_directories(mfi.artist, mfi.album);
|
||||||
if ((ret < 0) || (ret >= sizeof(virtual_path)))
|
|
||||||
{
|
|
||||||
DPRINTF(E_LOG, L_SPOTIFY, "Virtual path exceeds PATH_MAX (/spotify:/%s)\n", mfi.artist);
|
|
||||||
free_mfi(&mfi, 1);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
dir_id = db_directory_addorupdate(virtual_path, 0, DIR_SPOTIFY);
|
|
||||||
if (dir_id <= 0)
|
if (dir_id <= 0)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_SPOTIFY, "Could not add or update directory '%s'\n", virtual_path);
|
DPRINTF(E_LOG, L_SPOTIFY, "Could not add or update directory for item: '%s'\n", url);
|
||||||
free_mfi(&mfi, 1);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
ret = snprintf(virtual_path, sizeof(virtual_path), "/spotify:/%s/%s", mfi.artist, mfi.album);
|
|
||||||
if ((ret < 0) || (ret >= sizeof(virtual_path)))
|
|
||||||
{
|
|
||||||
DPRINTF(E_LOG, L_SPOTIFY, "Virtual path exceeds PATH_MAX (/spotify:/%s/%s)\n", mfi.artist, mfi.album);
|
|
||||||
free_mfi(&mfi, 1);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
dir_id = db_directory_addorupdate(virtual_path, 0, dir_id);
|
|
||||||
if (dir_id <= 0)
|
|
||||||
{
|
|
||||||
DPRINTF(E_LOG, L_SPOTIFY, "Could not add or update directory '%s'\n", virtual_path);
|
|
||||||
free_mfi(&mfi, 1);
|
free_mfi(&mfi, 1);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user