Commit Graph

3573 Commits

Author SHA1 Message Date
chme
937d1e3f5f [db] Add "group" attribute to query_params and allow grouping files 2019-01-28 22:40:25 +01:00
chme
06aaacbe8f [smartpl] Fix wrong where clause for date field queries with "before"
keyword
2019-01-28 20:46:04 +01:00
chme
9fff02841b [jsonapi] Fix error in web interface files-view if the library directory
end with a trailing slash
2019-01-28 15:00:18 +01:00
chme
238361ea25 [player] Fix segfault when getting single speaker/output by id 2019-01-26 17:50:30 +01:00
chme
b000803fe3 [misc] Add compiler hint to check format parameters 2019-01-26 10:08:11 +01:00
chme
1f2b608d62 [mpd] Fix wrong number of format parameters for safe_asprintf
Fixes a segfault in cases where the default playlist directory config
(in the mpd section of the configuration file) was set/activated.
2019-01-26 10:07:48 +01:00
chme
116c315a84 [player] Rename struct spk_info to player_speaker_info 2019-01-22 17:47:15 +01:00
chme
343c583229 [jsonapi] Support changing volume by the given step (increase/decrease
volume)
2019-01-21 11:11:20 +01:00
chme
db7b9c689b [player] Add command to get a single speaker info by its id 2019-01-21 11:11:20 +01:00
chme
c165c55b5b [jsonapi] Add player/toggle endpoint
Toggles playback state depending on the current player state:
- playing --> pause
- paused, stopped --> play
2019-01-20 12:03:50 +01:00
ejurgensen
741825d086 [cast] Add option to exclude speakers (closes #659) 2019-01-09 20:26:31 +01:00
chme
fb60a05228 [jsonapi] Add support for "playback", "clear" and "shuffle" parameters
in
"queue/items/add" endpoint
2019-01-05 07:21:36 +01:00
chme
77a19a6df9 [jsonapi] Add checks for failed playback start and return error code 2019-01-02 09:51:54 +01:00
chme
0f4cbb3375 [http/jsonapi] Use strtok_r instead of strtok 2019-01-02 09:51:54 +01:00
chme
f23732945b [websocket] Support "database" notifications 2019-01-02 09:51:54 +01:00
chme
b3853ef0f3 [jsonapi] Check for empty "uris" parameter in queue/items/add (prevents
a segfault) and log failed requests in error log
2019-01-02 09:51:54 +01:00
chme
2ead24a2f7 [jsonapi] Add optional expression parameter to queue/items/add endpoint
Adds support to add tracks by a smart pl query expression
2019-01-02 09:51:54 +01:00
chme
ca99bf8718 [jsonapi] Sort files by filename and return directories in api/config 2019-01-02 09:51:54 +01:00
ejurgensen
cd7af46c36 [db] Generic version of db_drop_indices/triggers + fix memleak
Memleak in db_drop_triggers() in error case (array "index" not being freed)
2019-01-01 21:34:29 +01:00
chme
010e8b2959 [db] Fix missing creation of triggers for persistent ids in db init 2019-01-01 09:38:02 +01:00
ejurgensen
19c39bf133 [scan] Always use compilation_artist for tracks in compilation dir
Reason is that tracks in compilation dir are not to be trusted when it comes
to album_artist.

See afee99d5db (commitcomment-31807556).
2018-12-31 15:55:49 +01:00
ejurgensen
9929832b5f [db] Don't zero play_count, skip_count, seek, time_played, time_skipped on update
If a file gets updated/rescanned we generally don't want to reset the above
values. This commit adds DB_FLAG_NO_ZERO, which marks a field so that
db_file_update() will only update it if the new value is non-zero (i.e. the
caller probably has a "better" value).
2018-12-31 15:55:49 +01:00
ejurgensen
734b4e9851 [db] Transfer some library tag fixup to the db's generic fixup
Transfer setting defaults for media_kind and item_kind. Also sets
default media_kind for queue_items.
2018-12-31 15:55:49 +01:00
ejurgensen
c3eb95d201 [db] Change use of compilation_artist, so that album_artist has preference
This change means that we will use album_artist even if compilation_artist
is configured, thus compilation_artist will only be used to override artist.
2018-12-31 15:55:49 +01:00
ejurgensen
9fc2065ada [db] Use album_artist if we have no artist metadata 2018-12-31 15:55:49 +01:00
ejurgensen
8043ca1291 [db] Drop upgrade support for pre-v17 db versions
Also drop the old way of recreating the files table, it is now replaced by
db_table_upgrade().
2018-12-31 15:55:49 +01:00
ejurgensen
a4c254e6e7 [db] Recreate v20 files table, so that new constraints take effect if upgrading
The constraints on songalbumid and songartistid where changed with v20, so we
need to make sure they take effect when upgrading.

This commit tries to do the table recreation like sqlite recommends and without
manually crafted copy queries that are probably prone to errors.

Since we are recreating anyway, this commit also reorders the columns slightly.

It also includes auto-drop/recreation of triggers (should really have been its
own commit) during upgrade, like is already done with indices.
2018-12-31 15:55:49 +01:00
ejurgensen
1de8f39264 [db] Generic fixup + align fixing up between mfi, pli and queue_item
The idea here is to make sure the fixing up of tags is done in a consistent
manner. For strings, this means stuff like trimming and empty strings -> null
are applied the same unless there are special exception rules set. It also
means that defaults are applied the same across structs, e.g. "Unknown artist"
for both mfi->artist and queue_item->artist.

The change is also necessary because we want to remove trimming from the sql
query and instead implement it ourselves.
2018-12-31 15:55:49 +01:00
ejurgensen
fc5a66f86d [misc] New utility functions: trim, atrim and safe_snprintf_cat 2018-12-31 15:55:49 +01:00
ejurgensen
d3121f4ec7 [db] Use prepared statements for file insert, update and ping
Get rid of the SQL query strings, since they are prone to errors and are
probably also slower that using prepared statements.
2018-12-31 15:55:49 +01:00
ejurgensen
53d7005547 [pipe] Error check of b64_decode return value 2018-12-29 16:50:27 +01:00
ejurgensen
103dda29f3 [misc] Move CHECK_NULL inside b64_decode (around the malloc)
To stay in line with general use of the macro
2018-12-29 16:39:52 +01:00
chme
788cb6f133 [pipe/raop] Check for NULL to avoid scan-build issues (in case of oom) 2018-12-29 16:34:56 +01:00
ejurgensen
a37fc0916f [alsa] Fix scan-build issue: Argument with 'nonnull' attribute passed null 2018-12-29 16:34:56 +01:00
chme
2ffb94c9d1 [db] Fix scan-build issue "Argument with 'nonnull' attribute passed
null"
2018-12-29 16:34:56 +01:00
chme
46b37b2c80 [daapd] Fix scan-build issue "Dereference of null pointer" 2018-12-29 16:34:56 +01:00
chme
75432ce73f [rtsp] Initialize addr to avoid scan-build issue "Assigned value is
garbage or undefined"
2018-12-29 16:34:56 +01:00
chme
f3a495cd37 [player] Fix memory leak if opening new source failed
player.c:2032:11: warning: Potential leak of memory pointed to by 'ps'
2018-12-29 16:34:56 +01:00
chme
b7f3e71f7e [db_upgrade] Fix memory leak in error case
db_upgrade.c:72:7: warning: Potential memory leak
2018-12-29 16:34:56 +01:00
chme
21ce281cd1 [filescanner] Fix Use-after-free error
library/filescanner_ffmpeg.c:396:7: warning: Use of memory after it is
freed
2018-12-29 16:34:56 +01:00
chme
2a76e888f0 [player] Send notification on output added/removed 2018-12-29 08:46:00 +01:00
whatdoineed2do/Ray
e9f92ba1a7 [jsonapi] correct count of tracks added returned 2018-12-24 19:27:19 +00:00
chme
dcbe503686 [jsonapi] Return number of items added in queue/items/add endpoint
response
2018-12-20 11:19:47 +01:00
chme
2b7ff60771 [jsonapi] Fix playing from position if player state is shuffled 2018-12-20 11:19:47 +01:00
chme
b558e3498d [jsonapi] Add rating and title_sort to track object 2018-12-20 11:19:47 +01:00
chme
e6dc2a5845 [jsonapi] Add new endpoint "api/library/files"
This endpoint allows traversing the directory tree of the local library.
2018-12-18 08:28:19 +01:00
chme
070379edef [db] Fetch directory id by path; use const for path and virtual_path 2018-12-18 08:28:19 +01:00
chme
dc020cc3ac [db/filescanner/spotify] Set directory path 2018-12-18 08:28:19 +01:00
chme
42cbd721fd [db] Minor version upgrade: new column "path" in directories table 2018-12-18 08:28:19 +01:00
Martin
b5606a2f5a Added support for track and disc items in smart playlists 2018-12-10 13:20:20 +01:00
ejurgensen
4f6c9bb366 Revert "[player] Do not abort if pausing a stream or pipe playback"
This reverts commit fd84dd51b5.
2018-12-03 23:59:31 +01:00
ejurgensen
bb1347f2c0 Revert "[raop] Listen for _airplay._tcp and make it a condition for device removal (issue #496)"
This reverts commit 1e051407d5.
2018-12-01 10:03:22 +01:00
whatdoineed2do/Ray
cfadcc184f [jsonapi] support composer in queue and track objs 2018-11-30 17:22:21 +01:00
whatdoineed2do
488f52b04f [db] schema v19.11 support composer in queue tbl 2018-11-30 17:22:21 +01:00
chme
fd84dd51b5 [player] Do not abort if pausing a stream or pipe playback
Instead we stop reading from the source and check on playback resume if
the source needs to be reopened.
2018-11-30 16:16:42 +01:00
chme
f6ddec3389 [player] On pause the current streaming item needs to be stopped, if it
is not the current playing item.

This happens if the input already switched to the next item in the queue
starting to stream it to the outputs (2 second buffer) while the outputs
are still playing the last seconds of the old item.
2018-11-30 15:41:28 +01:00
ejurgensen
357d346fce
Merge pull request #628 from chme/artwork
[jsonapi] Artwork url for non library items and streams
2018-11-30 10:12:41 +01:00
chme
234ccc2899 [http] Prevent adding empty artwork urls into icy metadata
Some radio streams send empty strings as "StreamUrl", prevent these from
beeing added into the queue database.
2018-11-30 06:39:22 +01:00
chme
041a87427c [spotify] Set artwork url in queue items for spotify tracks
Fixes missing artwork for spotify tracks that are not in the user
library.
2018-11-28 20:31:50 +01:00
chme
534bbdb477 [artwork] Introduce constant for default artwork width/height 2018-11-28 20:28:38 +01:00
ejurgensen
1e051407d5 [raop] Listen for _airplay._tcp and make it a condition for device removal (issue #496) 2018-11-26 20:24:28 +01:00
ejurgensen
18acb73fdb [raop] Add option to make an Airplay speaker permanent in the speaker list (issue #496) 2018-11-26 20:24:28 +01:00
chme
89ca5e8ba9 [jsonapi] Fix wrong artwork url for non library queue items and streams
Add check against the special file_id DB_MEDIA_FILE_NON_PERSISTENT_ID to
identify if a queue item is not in the library. And always prefer the
artwork url in the queue item before the artwork for the library file.
2018-11-25 10:07:55 +01:00
chme
bb959fdec9 [spotify] Use added_at as time_added and time_modified
Saved albums and playlist items have a "added at" attribut use it as
created instead of probably unexpected current time.
2018-11-24 06:31:39 +01:00
chme
0d8a764f41
Merge pull request #617 from chme/webinterface
Update player web interface
2018-11-23 14:31:24 +01:00
whatdoineed2do/Ray
14010eeb28 [smartpl] support searching by ssongartistid (list tracks for artist), artist_id and songartistid 2018-11-23 14:11:02 +01:00
chme
a8e8dc1999 [library/db/filescanner/spotify] Reshuffle after adding non library
items to the queue
2018-11-11 07:01:22 +01:00
chme
05141480e2 [player/db] Increment queue version if shuffle mode is turned off
This fixes showing the wrong queue in the player web interface after
turing shuffle mode off.
2018-11-11 07:01:22 +01:00
chme
4cf71bafcc
Merge pull request #605 from chme/play_next
[jsonapi] Add support for a position parameter in the queue/items/add endpoint
2018-11-02 18:38:10 +01:00
chme
8d8663e93d [db/queue] Support adding non-library items at a given position to the
queue
2018-10-25 19:36:43 +02:00
chme
d2390933e9 [jsonapi] Support "position" parameter in queue/items/add endpoint 2018-10-25 19:36:43 +02:00
whatdoineed2do/Ray
3b10049d72 [filescanner] parse https streams for m3u 2018-10-23 10:06:11 +01:00
ejurgensen
df7456dc39 [mdns] Make connection test optional and only do it for Airplay (fixes #602)
Some remotes don't respond as expected to the test. Retune will give connection
refused, because the test is made too quickly, before the service is running.

Even if we delay the test it won't work because Retune crashes.

Since the false mdns advertisements are only seen on Airplay, we only do the
test there.
2018-10-14 22:13:58 +02:00
Don Cross
07e46d75c8 [alsa] Made resync period configurable 1..20 seconds, with default=10. (#604)
The unconfigurable resync period of 10 seconds was not frequent
enough to keep my own ALSA device in sync with the AirPlay stream.
Now the period is configurable.  The default is still at 10
seconds, to prevent any change in behavior unless opted in by
the user.

Currently the adjustment causes a tiny "click" distortion in the
ALSA output, so it is better to make the check as infrequent as
possible, while still being frequent enough to stay in sync
over lengthy sessions of playback.

Added source_sample_rate, target_sample_rate to alsa_session.
This is a first step toward rendering ALSA at a different
sampling rate than the AirPlay stream, so that (a) we will
be able to dynamically adjust the ALSA sampling rate for an
improved sync algorithm, and (b) later, a more generalized
resampling algorithm can accommodate very different hardware
sampling rates like 22050 Hz or 48000 Hz.

Reworked alsa_session_free() so that it can be used to
tear down a partially initialized alsa_session if an
error occurs in the middle of alsa_session_make().
This simplifies the error handling logic in alsa_session_make().
This refactoring will be helpful later when resampling is added,
because more data structures will be dynamically allocated
during initialization.

Signed-off-by: Don Cross <cosinekitty@gmail.com>
2018-10-14 20:40:36 +02:00
ejurgensen
830d8594aa [raop] Use et=4 to determine support for auth_setup (issue #557) 2018-10-09 21:35:15 +02:00
ejurgensen
41126d7be4 [artworkapi/jsonapi] Retrieve artwork for track/album/artist 2018-10-07 21:54:38 +02:00
ejurgensen
c1619f7be0 [httpd] Increase max depth of path_paths (fixes #599) 2018-10-07 21:42:37 +02:00
ejurgensen
75dd9a5764 [daap] Fixup 2018-10-04 22:39:46 +02:00
ejurgensen
6109a5b6dd [daap] Don't send two errors on auth problems + use 401 instead of 403 (issue #594) 2018-10-04 22:33:30 +02:00
ejurgensen
75743bea80 [daap] Fix missing prompt for library password for non-remote DAAP clients (fixes #594) 2018-09-30 22:39:53 +02:00
ejurgensen
b54c9ff1c6 [db] Fix count error in db_build_query_browse() if no items match query 2018-09-23 01:37:40 +02:00
ejurgensen
aa3aa383ef [raop] If ipv6 fails, fall back to ipv4 and disable ipv6 permanently for the device 2018-09-19 23:03:33 +02:00
ejurgensen
f686756dd8 [db] Upgrade schema to 19.10 to remove invalid time_skipped values from commit fde0a281 2018-09-19 19:40:45 +02:00
ejurgensen
a003c419c3 [db] Add missing casts of time_skipped (fixes #593)
The print mask for some reason uses int64, so time_skipped was too short
2018-09-19 08:12:40 +02:00
ejurgensen
4a16384d3a [filescanner] Convert plist timestamps to Unix when importing iTunes XML 2018-09-18 20:29:28 +02:00
ejurgensen
97233d4753 [raop] Put ipv6 IP literals in brackets as per rfc3986 2018-09-16 22:19:27 +02:00
ejurgensen
2a9d3f7474
Merge pull request #591 from chme/queue_add_pos
[db] Add support to add items to the queue at a specified position
2018-09-16 13:13:13 -07:00
chme
7252b3e509 [db] Add support to add items to the queue at specified position 2018-09-16 09:36:43 +02:00
chme
f84e67ed5e [db/conf] Add automatic calculation of ratings based on played/skipped
If activated in the configuration file, rating is updated after playing
or skipping a song. The calculation is based on how it is done in the
mpdstats plugin for beets
(https://beets.readthedocs.io/en/latest/plugins/mpdstats.html).
2018-09-16 08:46:16 +02:00
chme
3ca5402638 [dacp] Only return requested number of queue item (fixes #556) 2018-09-13 21:11:41 +02:00
ejurgensen
2c1f2f1b15 [mdns] connection test: don't wait if connect() succeeds immediately 2018-09-10 20:18:06 +02:00
ejurgensen
475c598d0e [mdns] Check return values of avahi_address_snprint() 2018-09-09 22:17:31 +02:00
chme
461a1d55bf [player] Only add persistent items to history
The current logic in httpd_dacp.c cannot handle non persistent items
correctly. The items are always shown with the dummy_mfi with "unkown
artist" etc.
2018-09-08 09:14:24 +02:00
chme
9a47335a05 [player] Only increment playcount and scrobble persistent items
Ommits useless update query for playcount for items that are not in the
library. Also avoids trying to scrobble these items (fixes error log
message "lastfm: Scrobble failed, track id 9999999 is unknown")
2018-09-08 08:32:49 +02:00
ejurgensen
ce1bf8f40d [web] Lower log level of libwebsockets 2018-09-08 00:24:49 +02:00
ejurgensen
b3fc87170e [mdns] Fix missing check of the value-result from getsockopt(SO_ERROR)
The connection test would not catch "No route to host", as this is returned
through the value-result buffer.

This fix might partially solve issue #498.
2018-09-07 23:19:46 +02:00
ejurgensen
93730281f4 [dacp] Map discrete-pause to playpause command handler 2018-09-07 21:40:23 +02:00
ejurgensen
3ba92aa860 [httpd] Better logging of unauthorized requests 2018-09-07 17:01:32 +02:00
ejurgensen
16e375e637 [db/misc] Cast ARRAY_SIZE to unsigned (avoids compiler warnings) 2018-09-04 20:07:05 +02:00
ejurgensen
350361e8bb [db] Be forwards compatible with tables that have additional columns 2018-09-02 23:38:46 +02:00
ejurgensen
a29772e8be [raop] Fix AirPlay 2 issue #557, fix for stream metadata, better logging
AirPlay 2 devices like Sonos One and AirPort Express with firmware 7.8
require auth-setup before ANNOUNCE, otherwise they will return 403.

Also fixed a problem where metadata did not get sent when toggling
a speaker on/off if we were playing an endless stream.
2018-09-02 20:22:38 +02:00
whatdoineed2do
e3ce003190 genre search functionality (#559)
* [jsonapi] Add support for listing albums for genres
2018-09-02 09:05:18 +02:00
chme
ef3ab53562 [mdns] Fix compile warning "directive output may be truncated" (provided
string length might not be big enough for ipv6 addresses)
2018-09-02 07:46:50 +02:00
ejurgensen
697338d118
Merge pull request #567 from whatdoineed2do/bug/httpd-dir-check
[bugfix] httpd dir check does not like symlinks to directories
2018-08-26 00:24:45 +02:00
Rok Mandeljc
083f58abf7 daap_request: cache the query result only if user agent was provided
Avoid calling cache_daap_add() when hreq->user_agent is NULL
(user agent is not provided by the client), because it will
trigger a segfault when strdup() is called with that NULL pointer.

Fixes #571.
2018-08-24 17:05:11 +02:00
ejurgensen
231b5615f1 [main] Just show version info when called with -v argument 2018-08-18 23:59:57 +02:00
ejurgensen
fde0a28142 Support for skip_count and time_skipped file metadata 2018-08-18 22:56:27 +02:00
whatdoineed2do
8b7c19a299 [httpd] allow webdir (htdocs) to be symlink to dir 2018-08-18 11:34:03 +01:00
ejurgensen
5ee0b69d39 [transcode] Set ffmpeg options so that it will attempt to reconnect streams 2018-08-12 19:50:54 +02:00
ejurgensen
ab1ded35e4 [config] Make user_agent configurable + don't use ffmpeg default (ref issue #562) 2018-08-12 19:49:23 +02:00
ejurgensen
970769cab6 [mdns] Fix mdns problems with ATV4 and ipv6
Avahi gives us several ipv6 addresses for an ATV4 that aren't actually
connectable. Here we simply try to make a connection to the address,
and if it is not possible within a timeout we ignore the announcement.

We also now don't start a mdns record browser if the address from the
resolver passes the connection test and isn't link-local.
2018-06-25 21:44:07 +02:00
ejurgensen
0d4dd06b51 [filescanner] iTunes XML mapping of Play Count and Play Date
See issue #549
2018-06-25 20:03:38 +02:00
ejurgensen
975d75d607 [daap] Add mapping of dmap.persistentid
Used by rtRemote when starting playback of a searched item
2018-06-17 23:11:05 +02:00
ejurgensen
9d95466e09 [db] Use ANALYZE instead of PRAGMA optimize (reverts commit cd96ec5)
Turns out PRAGMA optimize does not analyze tables on a fresh install,
which means that sqlite_stat1 is not available for the query planner,
which means that wrong indexes are used.

See https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=49928&sid=1e5d1d418315d7565ae027d751dd94a0&start=1350#p1328964
2018-06-16 21:43:58 +02:00
ejurgensen
3325b2d9ce [transcode] Use proper const for avfilter_get_by_name() result 2018-06-06 00:00:22 +02:00
chme
f4422e9cf4 [MAKEFILE/misc] Add option to disable inclusion of default webinterface 2018-06-03 23:39:37 +03:00
chme
cc98eef88f [websocket] Properly log libwebsockets log messages 2018-05-31 10:57:28 +03:00
chme
705b7013c3 [player/dacp/mpd/json] Update master volume after setting speaker volume
Changing a speaker volume in a DACP clients results in two dacp requests
(at least in Retune):

setproperty?include-speaker-id=0&dmcp.volume=41
setproperty?speaker-id=198018693182577&dmcp.volume=43

The first request sets the absolute volume for the speaker (player.c -
volume_setabs_speaker). The second request is only triggered if the
volume from the first one is not the new master volume. This second
requests adjusts the relativ volume based on the loudest device (new
master volume) (player.c - volume_setrel_speaker). After the second
request the master volume and the relative volumes are correct (range
from 0 - 100 percent and master volume is 100 percent).

MPD and JSON API clients only set the absolute volume which results in
inconsistent master_volume and relative volumes. The added option to
update the master volume in volume_setabs_speaker/volume_setrel_speaker
makes sure the master volume and the relative volumes are correctly set.
2018-05-31 10:49:53 +03:00
chme
3d779e1273 [player] Additional debug logs for speaker volume 2018-05-31 10:49:53 +03:00
ejurgensen
b6e1269cf2 [raop/dacp/player] Support for Airplay speakers to register volume updates
Implements Active-Remote, which is sent to the speaker, so it can use this
to tell us who it is when it makes dacp request with a device-volume update.
2018-05-27 16:12:20 +02:00
ejurgensen
646bf37f17 [dacp] Add support for play + stop commands
These commands are not used by Remote, but some Airplay speakers are
able to make them (e.g. my Sony STR-DN1040).

Also prepare being able to set the device volume property.
2018-05-14 23:09:04 +02:00
ejurgensen
05c935a7b7 [main] mdns announce dacp so that speakers can use it for playback control
See issue #531
2018-05-14 22:00:35 +02:00
ejurgensen
f5d7477ddb
Merge pull request #530 from chme/spotify_rework
Allow playing arbitrary spotify tracks
2018-05-11 19:12:04 +02:00
ejurgensen
83b6bcebcd [raop] Use OPTIONS for keep_alive instead of GET_PARAMETER
Old Airport Express hangs up if we use GET_PARAMETER (despite announcing support
for it...), and since iTunes seems to use OPTIONS we also do that. We weren't
really using the return value of GET_PARAMETER anyway.

See also comment added to commit d9a67b6dce
2018-05-10 21:46:24 +02:00
chme
c77acbddf2 [artwork] Ignore artwork requests for items with a non persistent id 2018-05-10 07:23:33 +02:00
chme
843fbeb066 [jsonapi] Add non-library uris to the queue 2018-05-10 07:02:15 +02:00
chme
7bab990eb3 [spotify/jsonapi] Expose access token and user country in JSON API
spoitfy endpoint
2018-05-10 07:02:15 +02:00
chme
d562cb9b6b [spotify] Retry playback setup if song is still loading 2018-05-10 07:02:15 +02:00
chme
f108b6b498 [spotify] Support adding arbitrary spotify-uris to the queue
Allows adding non-library spotify tracks to be added to the queue. The
path given to queue_add should either be a spotify track, album or
playlist uri.
2018-05-10 07:02:15 +02:00
chme
e6a5168c0d [spotify] (Re-) add track-relinking for playlists and albums
Appending the market parameter got lost in the refactoring and therefor
not track-relinking happend
2018-05-09 22:47:37 +02:00
chme
116f7a0253 [spotify] Log progress of scanning saved albums/playlists 2018-05-09 22:47:37 +02:00
chme
cfc5fef88d [spotify] Refactor spotify_webapi 2018-05-09 22:47:37 +02:00
chme
eaab6f887b [spotify] Decoupling of the spotify webapi from libspotify integration
Separation of scanning Spotify songs into the library (spotify_webapi.c)
and playing Spotify songs through libspotify (spotify.c).
2018-05-09 22:47:37 +02:00
chme
85257788ba [jsonapi] Add cache control header to count endpoint and fix
not-modified-since check to check against the last db update instead of
last start time
2018-05-09 22:29:52 +02:00
chme
41e99ca3cd [db/mpd/jsonapi] Include artist and album count in filecount query; add
count endpoint and additional metadata to JSON API; remove unused
artist-/album-count queries
2018-05-09 22:29:52 +02:00
chme
ae3e0b6bf5 [httpd] Lower log level if file is not found 2018-04-26 22:20:27 +02:00
ejurgensen
d84818649a [transcode] Fix for issue #502, ffmpeg segfault when jpeg encoding
For some reason it seems the Docker version of ffmpeg 3.4 uses "optimal"
Huffman tables (despite not being default), which cause ffmpeg to crash
when mjpeg encoder is encoding artwork jpeg's
2018-04-21 23:19:41 +02:00
chme
43745cf5c3 [smartpl.g] Fix memleak in smart playlist parsing with string operators 2018-04-15 22:11:40 +02:00
chme
359d12f4ff [db] Free order by-clause in playist_info 2018-04-15 22:11:40 +02:00
chme
6ceede44f4 [db] Use default -1 for playlists.query_limit column 2018-04-15 22:11:40 +02:00
chme
f167e975c2 Unify naming of "order by" clause in structs/table 2018-04-15 22:11:40 +02:00
chme
47a79d40f1 [db] Allow fetching playlists if the schema contains more columns than
the column map (can happen if there was a minor db version upgrade)
2018-04-15 22:11:40 +02:00
chme
d15018cb99 [httpd/jsonapi] Add cache control headers to some json api endpoints
Adds utility functions to httpd.c for checking the request headers for
either an "If-None-Match" or an "If-Not-Modified-Since" headers. If the
header value is found and it matches the current value for the requested
resource, we return early with a http response code 403 (Not Modified).
If the request header value is not present or does not match we add the
current ETag/Last-Modified values to the response headers and process
the request normally.
2018-04-15 22:11:40 +02:00
chme
99a812ad9a [jsonapi] Add new endpoints for artist/album/playlist/seek 2018-04-15 22:11:40 +02:00
chme
33459bd4ef [jsonapi] Extend search endpoint to support queries in smartpl language 2018-04-15 22:11:40 +02:00
chme
f1c7672426 [db] Fix total results for album group query
The query did not respect the filter and therefor always returned the
number of albums in the library and not the number of albums for the
given query.
2018-04-15 22:11:40 +02:00
chme
6bdcda1524 [db/filescanner] Upgrade database to v19.08 and support limit/order by
in smart playlist files
2018-04-15 22:11:40 +02:00
chme
5189fe2305 [smartpl/filescanner] Refactor smart playlist parsing
Moves the actual parsing with ANTLR3 out of filescanner.c to allow
future reuse in different context (JSON api)
2018-04-15 22:11:40 +02:00
chme
9708e26dd1 [db] Add support for ORDER BY and HAVING clause in query parameter 2018-04-15 22:11:40 +02:00
chme
84f262401e [smartpl.g] Add ORDER BY, LIMIT and HAVING to smart playlist grammar 2018-04-15 22:11:40 +02:00