mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-26 04:49:18 -05:00
[spotify] Fix for expired spotify access token and some cleanup
This commit is contained in:
parent
528614909c
commit
a15923c377
@ -1075,10 +1075,12 @@ playlist_remove(const char *uri)
|
||||
|
||||
if (!pli)
|
||||
{
|
||||
DPRINTF(E_DBG, L_SPOTIFY, "Playlist %s not found, can't delete\n", uri);
|
||||
DPRINTF(E_LOG, L_SPOTIFY, "Playlist '%s' not found, can't delete\n", uri);
|
||||
return -1;
|
||||
}
|
||||
|
||||
DPRINTF(E_LOG, L_SPOTIFY, "Removing playlist '%s' (%s)\n", pli->title, uri);
|
||||
|
||||
plid = pli->id;
|
||||
|
||||
free_pli(pli, 0);
|
||||
@ -2302,6 +2304,12 @@ scan_playlists()
|
||||
{
|
||||
DPRINTF(E_DBG, L_SPOTIFY, "Got playlist: '%s' with %d tracks (%s) \n", playlist.name, playlist.tracks_count, playlist.uri);
|
||||
|
||||
if (!playlist.uri || !playlist.name || playlist.tracks_count == 0)
|
||||
{
|
||||
DPRINTF(E_DBG, L_SPOTIFY, "Ignoring playlist '%s' with %d tracks (%s)\n", playlist.name, playlist.tracks_count, playlist.uri);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (playlist.owner)
|
||||
{
|
||||
snprintf(virtual_path, PATH_MAX, "/spotify:/%s (%s)", playlist.name, playlist.owner);
|
||||
@ -2350,7 +2358,7 @@ scan_playlist(const char *uri)
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINTF(E_DBG, L_SPOTIFY, "Got playlist: '%s' with %d tracks (%s) \n", playlist.name, playlist.tracks_count, playlist.uri);
|
||||
DPRINTF(E_LOG, L_SPOTIFY, "Saving playlist '%s' with %d tracks (%s) \n", playlist.name, playlist.tracks_count, playlist.uri);
|
||||
|
||||
if (playlist.owner)
|
||||
{
|
||||
|
@ -20,17 +20,12 @@
|
||||
#include "spotify_webapi.h"
|
||||
|
||||
#include <event2/event.h>
|
||||
#include <json.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef HAVE_JSON_C_OLD
|
||||
# include <json/json.h>
|
||||
#else
|
||||
# include <json-c/json.h>
|
||||
#endif
|
||||
|
||||
#include "db.h"
|
||||
#include "http.h"
|
||||
#include "library.h"
|
||||
@ -321,7 +316,7 @@ spotifywebapi_token_refresh()
|
||||
const char *err;
|
||||
int ret;
|
||||
|
||||
if (token_requested && difftime(token_requested, time(NULL)) < expires_in)
|
||||
if (token_requested && difftime(time(NULL), token_requested) < expires_in)
|
||||
{
|
||||
DPRINTF(E_DBG, L_SPOTIFY, "Spotify token still valid\n");
|
||||
return 0;
|
||||
@ -356,7 +351,7 @@ spotifywebapi_token_refresh()
|
||||
}
|
||||
|
||||
static int
|
||||
spotifywebapi_request_uri(struct spotify_request *request, const char *uri)
|
||||
request_uri(struct spotify_request *request, const char *uri)
|
||||
{
|
||||
char bearer_token[1024];
|
||||
int ret;
|
||||
@ -442,7 +437,7 @@ spotifywebapi_request_next(struct spotify_request *request, const char *uri)
|
||||
spotifywebapi_request_end(request);
|
||||
}
|
||||
|
||||
ret = spotifywebapi_request_uri(request, next_uri);
|
||||
ret = request_uri(request, next_uri);
|
||||
free(next_uri);
|
||||
|
||||
if (ret < 0)
|
||||
@ -465,8 +460,8 @@ spotifywebapi_request_next(struct spotify_request *request, const char *uri)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
track_metadata(json_object* jsontrack, struct spotify_track* track)
|
||||
static void
|
||||
parse_metadata_track(json_object* jsontrack, struct spotify_track* track)
|
||||
{
|
||||
json_object* jsonalbum;
|
||||
json_object* jsonartists;
|
||||
@ -494,14 +489,14 @@ track_metadata(json_object* jsontrack, struct spotify_track* track)
|
||||
}
|
||||
|
||||
static int
|
||||
get_year_from_releasdate(const char *release_date)
|
||||
get_year_from_date(const char *date)
|
||||
{
|
||||
char tmp[5];
|
||||
uint32_t year = 0;
|
||||
|
||||
if (release_date && strlen(release_date) >= 4)
|
||||
if (date && strlen(date) >= 4)
|
||||
{
|
||||
strncpy(tmp, release_date, sizeof(tmp));
|
||||
strncpy(tmp, date, sizeof(tmp));
|
||||
tmp[4] = '\0';
|
||||
safe_atou32(tmp, &year);
|
||||
}
|
||||
@ -509,8 +504,8 @@ get_year_from_releasdate(const char *release_date)
|
||||
return year;
|
||||
}
|
||||
|
||||
void
|
||||
album_metadata(json_object *jsonalbum, struct spotify_album *album)
|
||||
static void
|
||||
parse_metadata_album(json_object *jsonalbum, struct spotify_album *album)
|
||||
{
|
||||
json_object* jsonartists;
|
||||
|
||||
@ -529,7 +524,7 @@ album_metadata(json_object *jsonalbum, struct spotify_album *album)
|
||||
|
||||
album->release_date = jparse_str_from_obj(jsonalbum, "release_date");
|
||||
album->release_date_precision = jparse_str_from_obj(jsonalbum, "release_date_precision");
|
||||
album->release_year = get_year_from_releasdate(album->release_date);
|
||||
album->release_year = get_year_from_date(album->release_date);
|
||||
|
||||
// TODO Genre is an array of strings ('genres'), but it is always empty (https://github.com/spotify/web-api/issues/157)
|
||||
//album->genre = jparse_str_from_obj(jsonalbum, "genre");
|
||||
@ -558,7 +553,7 @@ spotifywebapi_saved_albums_fetch(struct spotify_request *request, json_object **
|
||||
return -1;
|
||||
}
|
||||
|
||||
album_metadata(jsonalbum, album);
|
||||
parse_metadata_album(jsonalbum, album);
|
||||
|
||||
album->added_at = jparse_str_from_obj(item, "added_at");
|
||||
album->mtime = jparse_time_from_obj(item, "added_at");
|
||||
@ -590,13 +585,13 @@ spotifywebapi_album_track_fetch(json_object *jsontracks, int index, struct spoti
|
||||
return -1;
|
||||
}
|
||||
|
||||
track_metadata(jsontrack, track);
|
||||
parse_metadata_track(jsontrack, track);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
playlist_metadata(json_object *jsonplaylist, struct spotify_playlist *playlist)
|
||||
static void
|
||||
parse_metadata_playlist(json_object *jsonplaylist, struct spotify_playlist *playlist)
|
||||
{
|
||||
json_object *needle;
|
||||
|
||||
@ -637,7 +632,7 @@ spotifywebapi_playlists_fetch(struct spotify_request *request, struct spotify_pl
|
||||
return -1;
|
||||
}
|
||||
|
||||
playlist_metadata(jsonplaylist, playlist);
|
||||
parse_metadata_playlist(jsonplaylist, playlist);
|
||||
request->index++;
|
||||
|
||||
return 0;
|
||||
@ -708,7 +703,7 @@ spotifywebapi_playlisttracks_fetch(struct spotify_request *request, struct spoti
|
||||
return -1;
|
||||
}
|
||||
|
||||
track_metadata(jsontrack, track);
|
||||
parse_metadata_track(jsontrack, track);
|
||||
track->added_at = jparse_str_from_obj(item, "added_at");
|
||||
track->mtime = jparse_time_from_obj(item, "added_at");
|
||||
|
||||
@ -741,7 +736,7 @@ spotifywebapi_playlist_start(struct spotify_request *request, const char *path,
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = spotifywebapi_request_uri(request, uri);
|
||||
ret = request_uri(request, uri);
|
||||
if (ret < 0)
|
||||
{
|
||||
free(owner);
|
||||
@ -750,7 +745,7 @@ spotifywebapi_playlist_start(struct spotify_request *request, const char *path,
|
||||
}
|
||||
|
||||
request->haystack = json_tokener_parse(request->response_body);
|
||||
playlist_metadata(request->haystack, playlist);
|
||||
parse_metadata_playlist(request->haystack, playlist);
|
||||
|
||||
free(owner);
|
||||
free(id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user