Commit Graph

105 Commits

Author SHA1 Message Date
chme
210e6228bc [spotify] Prevent duplicate scan on startup
The logged_in callback is called during relogin in the initscan.
Additionally initscan explicitly starts the scan leading to a duplicate
scan run.
To prevent this from happening removed the scan call in the logged_in
callback and split the spotify_login_user function into a private
function (without scan) and a public function (with scan).
2017-12-18 22:46:09 +01:00
chme
83d8a55701 [spotify] Make libspotify login synchronous
Scanning saved albums/playlists over the webapi requires a logged in
libspotify session. To ensure, that the login process finished before
starting the webapi scan, the login needs to be synchronous.
2017-12-17 09:39:45 +01:00
chme
64f574cd83 [spotify] Fix logdomain in log statements 2017-12-17 09:15:32 +01:00
chme
1b8b0b2d83 [spotify] Only scan saved albums and playlist if webapi token is valid
and libspotify login succeeded

Each saved track needs to be registered with libspotify otherwise
playback of this track will fail. This makes sure we only add saved
tracks to the library that are playable. 

Also attempt a rescan if libspotify login succeeded. With this change it
does not matter if a user first logs into libspotify and then authorizes
the webapi access or the other way around.
2017-12-17 09:12:01 +01:00
chme
418f808d2e [spotify] Remove scanning playlists with libspotify 2017-12-17 08:08:55 +01:00
ejurgensen
7b97503f04 [spotify] Protect against weird artwork data size from libspotify
For some reason libspotify sometimes returns >1GB sizes?
2017-11-11 22:20:09 +01:00
ejurgensen
4928d2c155 [spotify] Replace db_file_stamp_bypath with db_file_ping 2017-10-17 23:10:21 +02:00
ejurgensen
d6b30f5a64 [spotify] Add MEDIA_KIND_MUSIC and move DATA_KIND_SPOTIFY 2017-10-17 23:10:21 +02:00
ejurgensen
c8edd2ff64 [spotify] Use db_file_ping_bypath() + refactor + fix small memleak
Align with other scanners to use 1-query db_file_ping_bypath(). Also refactor to
reduce indent level and fix memleak of mfi->album + mfi->album_artist.
2017-10-17 23:10:21 +02:00
chme
ecfea82234 [httpd/spotify] Redirect to admin.html, remove old oauth interface 2017-09-15 18:49:04 +02:00
chme
a832e40bea [spotify] Add function spotify_login_user 2017-09-15 06:42:21 +02:00
chme
29c0264444 [spotify] Add spotify status info and notify about status changes 2017-09-15 06:42:21 +02:00
chme
f449204ea2 [spotify] Add support for calling sp_session_user_name 2017-09-15 06:42:21 +02:00
ejurgensen
283df8aa72 [misc] Consolidate control file reader (e.g. for pairing credentials) into misc.c
- also remove requirement to enter device name in .remote file
2017-06-14 23:49:18 +02:00
chme
626c77046c [spotify] Fix empty spotify playlists 2017-04-10 09:33:22 +02:00
chme
bdd08f516f [library] Rename 'library_process_media' to 'library_add_media' 2017-03-19 18:30:46 +01:00
chme
dadba23efc Refactor library scan of media files
Remove the data_kind specific parts out of the general library functions
and into their (library) source specific functions.
2017-03-19 18:30:46 +01:00
chme
247abec88f [spotify] Only create spotify playlist folder after successful login
Before creating the folder there should be either a valid api token or a
valid libspotify session.
2017-03-11 09:44:54 +01:00
chme
00e5e098d4 [spotify] Purge spotify songs from db before scanning after oauth (#361) 2017-03-04 17:24:42 +01:00
chme
03e9182423 [spotify] Fix usage of "artist_override" config value 2017-02-26 11:04:04 +01:00
ejurgensen
a183463bb2 [spotify] Try to avoid image load callbacks from Spotify after timeouts,
since the artwork struct may have become invalid
2017-02-07 23:23:39 +01:00
chme
1f4e474671 [spotify] Retrieve playlist tracks based on user country (#352)
This avoids adding unplayable items to the library and due to the active
track relinking should make additional tracks playable by linking to a
playable version of the track.
2017-02-05 13:56:12 +01:00
ejurgensen
bbb3322ddc [spotify] Flush audio buffer on playback stop - and since we are
flushing from another thread we use evbuffer_enable_locking() which
in turn adds a requirement for libevent_pthreads to be present
2017-01-30 22:50:02 +01:00
ejurgensen
6af8fa07b4 [spotify] Use timespec_reltoabs instead of internal mk_reltime 2017-01-27 22:35:15 +01:00
ejurgensen
79639c73ed [input] Add Spotify input module 2017-01-27 22:08:56 +01:00
Scott Shambarger
a837389ac5 Minor change: remove unused include, init variable. 2017-01-21 08:51:51 -08:00
sshambar
b128271656 Merge branch 'master' into fixthreads 2017-01-21 10:27:26 -05:00
Scott Shambarger
8e3797ec43 [threads] Update mutex/cond functions to use new CHECK_ERR macros
Added various macros to check return values and log any errors and abort
if the call fails.
Updated logging to handle early errors before logging initialized.
2017-01-21 07:11:20 -08:00
chme
e092a9ff3e [spotify] Respect settings for 'artist_override' and 'album_override' (#340)
when scanning spotify through the web api

The goal is to reduce the artist/album cluttering that happens because
of the users spotify playlists. If 'artist_override' is true, all tracks
not in a saved album are treated as part of a compilation giving them
the configured album-artist (e. g. "Various artists"). I
'album_override' is true, tracks not in a saved album will use the
playlistname as albumname.
2017-01-21 10:17:33 +01:00
chme
a4180a5902 [spotify] Increase log level for skipping playlists during scan 2017-01-18 20:32:02 +01:00
chme
e8d6b17784 fix indentation 2017-01-18 20:28:56 +01:00
Scott Shambarger
b54d94fda6 [threads] Added missing initializers, check errors on mutex/cond calls 2017-01-13 17:32:59 -05:00
chme
a15923c377 [spotify] Fix for expired spotify access token and some cleanup 2017-01-13 19:20:24 +01:00
chme
03c5ecd690 [spotify] Split into smaller db transactions (do not keep an open
transaction between requests)
2017-01-13 18:56:37 +01:00
chme
f632789f8b [spotify] Set missing values for year, artwork, type, codectype,
description and improve logging
2017-01-13 18:56:37 +01:00
chme
66bbcf0576 [spotify] Ignore playlist updates with missing uri 2017-01-13 18:56:37 +01:00
chme
510d38c059 [library/filescanner/spotify] Rework full-rescan logic 2017-01-13 18:56:37 +01:00
chme
99945fa576 [spotify] Rescan of single playlists if update trigger received from
libspotify (Readds "spotify:savedtracks" playlist to avoid deletion of
saved tracks)
2017-01-13 18:56:37 +01:00
chme
adac1d3b5f [spotify] Trigger scan after retrieving a valid access token from the
webinterface

Library now offers the function "library_exec_async". This allows
library sources to offer functions that will be executed in
the library thread. Useful to allow partial scans of only one source.
2017-01-13 18:56:37 +01:00
chme
ae1a45bacc [library/spotify] Implement rescan in spotify.c and purge old files
after rescan
2017-01-13 18:56:37 +01:00
chme
0bea83cafa [spotify] Scan saved albums and playlist using the spotify web api 2017-01-13 18:56:37 +01:00
chme
4bd42dda41 [spotify] Remove loading saved tracks from the webapi (will be readded
later)
2017-01-13 18:56:37 +01:00
chme
1a85257fb3 [spotify] Extract function for preparing directories 2017-01-13 18:56:37 +01:00
chme
56ce3f9cba [library/filescanner/spotify] Add library source abstraction and new
"library" thread

- Implement filescanner as a library_source
- Add library source implementation for spotify
- Move process_media_info to library with small adjustments:
  - Remove dependency to F_SCAN_TYPE defines
  - Pass data_kind as parameter
  - Pass media_kind and compilation as parameter if a source forces a
specific value for these
- Move declaration of scan_ffmpeg to library; add
library_add_playlist_info to library
2017-01-13 18:56:37 +01:00
Scott Shambarger
ce4ef0aa23 [config] Many updates to configuration and feature checks
- Added custom checks for libraries and pkgconfig modules that test library
 presence with additional checks for use of headers and functions with
 given options.  Also support correct additional feature library checks
 using provided flags.
- Added custom enable/disable feature macros to simplify their use.
- Use custom CFLAGS and LIBS variables for Makefiles to simplify maintenance.
- Update many feature checks from platform to function.
- Streamline many function checks.
- Correctly check gnutls, gcrypt and gpg-error libraries.
- Fix chromecast and spotify config and compile on FreeBSD
- Added inotify, signalfd and kqueue, and byte swap checks.
- Many clarifications of error messages.
- Correct json-c checks to properly use supplied CFLAGS.
- Correct many quoting inconsistencies
- Use __DATE__ in place of BUILDDATE
- Use full path for gperf and antlr3
- Remove unnecessary CFLAGS
- Added tests for pthread_setname_np parameters
- Added tests for clock_gettime and timer_settime
- Added tests for time.h
- Test if pthread, dl and rt libs are required/available.
- Updated checks for libunistring
2017-01-06 00:44:18 -08:00
chme
ea56ee91bd [spotify] Add missing virtual path to "Saved Tracks" playlist 2016-12-03 14:53:47 +01:00
ejurgensen
3921cf5732 Merge branch 'spwebapi2' 2016-11-27 22:54:06 +01:00
ejurgensen
bb2a73ddab [spotify] Keep saved tracks through restarts + misc fixing up 2016-11-13 22:13:35 +01:00
chme
2db3318ce7 [player/spotify] Only pass spotify-path to spotify_playback_setup 2016-11-12 09:11:40 +01:00
ejurgensen
3040346a65 [spotify] Use Spotify OAuth and web api to get saved tracks/albums 2016-11-05 13:44:23 +01:00