ejurgensen
790c9dcca9
[misc] Define SOCK_NONBLOCK and SOCK_CLOEXEC if platform doesn't
2021-04-01 01:45:09 +02:00
ejurgensen
64d6b0d4c3
[raop] Fix scan-build make warning after removing switch in commit 98dad07
2021-04-01 01:21:11 +02:00
ejurgensen
ba8b752a9b
[misc] Fix macOS build (doesn't have SOCK_CLOEXEC)
2021-04-01 00:01:12 +02:00
ejurgensen
ed6176062a
[airplay] Logging adjustments
2021-03-31 23:55:25 +02:00
ejurgensen
d2a5f939f5
[mpd] Bind via misc.c's net_xxx methods
2021-03-31 23:55:25 +02:00
ejurgensen
d4711decdc
[httpd] Bind via misc.c's net_xxx methods
2021-03-31 23:55:25 +02:00
ejurgensen
11151affbd
[misc] Add net_evhttp_bind() for centralizing libevent based binding
2021-03-31 23:55:25 +02:00
ejurgensen
c423f3af91
[cfg] Add websocket_interface option
2021-03-31 23:55:25 +02:00
ejurgensen
e5fcfc6574
[cast] Use net_connect() instead of own cast_connect()
2021-03-31 23:55:25 +02:00
ejurgensen
98dad07b7f
[airplay] Convert services to dual stack, plus use net_connect() and net_bind()
2021-03-31 23:55:25 +02:00
ejurgensen
f3febb63d9
[raop] Convert services to dual stack, plus use net_bind() and net_connect()
2021-03-31 23:55:25 +02:00
ejurgensen
dfc1580f13
[misc] Add logging of net_connect() service
2021-03-31 23:55:25 +02:00
ejurgensen
dd0f0ece78
[mdns] Remove ipv4/ipv6 argument to mdns_browse
...
Make sure mdns_browse() always works the same, and follows user config.
2021-03-31 23:55:25 +02:00
ejurgensen
7871d71a9c
[misc] Add utility network functions, incl configurable addr binding
...
Also make misc.c/h a bit less messy.
2021-03-31 23:55:25 +02:00
ejurgensen
3673aa7215
[player] Protect against crash if very first input_write() is FLAG_ERROR
2021-03-31 22:20:56 +02:00
ejurgensen
daa0652e7b
[docs] Rename repo: ejurgensen -> owntone
2021-03-30 23:39:07 +02:00
ejurgensen
75f6c72003
[misc] Correct comment
2021-03-27 22:44:16 +01:00
ejurgensen
9c3887a80f
[commands] Add missing include
2021-03-27 22:44:02 +01:00
ejurgensen
19635e61ec
[httpd] Fix scan-build make warning from commit 3a03c74
...
Potential buffer overflow
2021-03-15 21:59:40 +01:00
chme
3a03c74f91
Deny access to files outside the web root directory
2021-03-14 09:08:16 +01:00
ejurgensen
363bd5644b
[pipe] Support for Shairport sync metadata flush event
2021-03-12 19:48:01 +01:00
ejurgensen
bbe7526414
[airplay] Update pairing modules (pair_ap 0.2)
2021-03-07 23:02:14 +01:00
Peter Salas
8ba35dfa19
[scan] Remove leftover iTunes #ifdefs
2021-02-28 08:31:16 -08:00
ejurgensen
036100eecd
[cast] Length check of protobuf messages just to be safe
2021-02-17 22:45:45 +01:00
ejurgensen
13be7999cb
[db] Add some headers in db_upgrade.c for easier navigation
2021-02-10 20:05:56 +01:00
ejurgensen
bd91a238ec
[db] Upgrade schema to 21.06, change default of query_limit to 0
2021-02-10 20:04:56 +01:00
ejurgensen
79b4a070b0
[db] Change type of "disabled" to int64
...
Before the value in the db was not read straight into mfi->disabled and
pli->disabled, instead it was evaluated as != 0, so the ->disabled field
would just be true or false. This was also necessary when INOTIFY_FAKE_COOKIE
(1 << 32) was written to the DB, because it could not fit in the uint32 of
mfi->disabled/pli->disabled.
I consider this juggling poor practice, so with this change it is read straight
in and out, always as a int64.
2021-02-09 15:16:06 +01:00
ejurgensen
b6163c9d34
[db] Fix bug in bind_generic, input to sqlite3_bind_int64 should be int64_t
2021-02-09 15:16:06 +01:00
ejurgensen
1fa1d9091b
[db] Consolidate setting struct fields from database queries
2021-02-09 15:16:06 +01:00
ejurgensen
689d1ce3dd
[db] Refactor queue_item functions
...
- Use prepared statements
- Add qi_mfi_map that defines mapping between mfi, dbmfi and qi
- Use qi_cols_map/qi_mfi_map for iteration (avoid duplicating field references)
- Stick to "qi" as name for a queue_item in db.c (more similar to mfi/pli/gri)
- Some renaming and other minor stuff in db.c's queue code
2021-02-09 15:16:06 +01:00
ejurgensen
76c52bba3b
[rsp] Add ALAC as a codec Roku supports (ref issue #1182 )
2021-01-29 20:31:53 +01:00
ejurgensen
ac6d87656a
[airplay] Change recommended airplay2-receiver repo
2021-01-29 20:30:22 +01:00
chme
f75947f29a
[db] Remove break after v2103 update and directly run update for v2104
...
The break results in the ugrade stopping at v2103 and only after another
restart of forked-daapd the update to v2104 happens. Removing it will
directly update to the latest DB version.
2021-01-23 16:32:41 +01:00
ejurgensen
728d253e1f
[jsonapi] Make updating of currently playing track metadata easier
...
Update to commit #aaffa4a that makes it easier to update currently playing
track, user can use "now_playing" instead of getting the queue item id.
2021-01-21 22:46:19 +01:00
ejurgensen
aaffa4a83f
[jsonapi] Add support for updating queue_item metadata ( closes #1153 )
...
This commit also changes db.c's sort_tag_create to always recreate sort tags,
so that they match source tags, should they have changed. Unclear to me why
the previous solution didn't do that, so will probably regret this change when
it dawns on me.
2021-01-21 20:56:05 +01:00
ejurgensen
275d66b6ad
[airplay] Use compressed ALAC to save bandwidth
...
Uses ffmpeg to compress ALAC. Before each audio packet was always 1411 bytes,
now they are half or even much less if it is just silence.
2021-01-18 00:19:34 +01:00
ejurgensen
1977db0319
[xcode] Add profile for ALAC encoding
2021-01-18 00:19:34 +01:00
ejurgensen
f105958a64
[airplay] Fix so that AirPlay 2 devices are removed
2021-01-18 00:19:34 +01:00
chme
0334269989
[mpd] Support search/find/count with modified-since
filter criteria
2021-01-16 10:45:15 +01:00
chme
9ff06f094d
[htdocs] Rebuild web interface v0.8.5
2021-01-16 08:23:50 +01:00
ejurgensen
60b096c707
[airplay] Make auth-setup easier to test via a define switch
2021-01-14 22:53:09 +01:00
ejurgensen
8b9e064af9
[raop] Lower log level
2021-01-14 22:46:20 +01:00
ejurgensen
b2b91998d9
[airplay] Fix decryption of large responses
...
If the response is large evrtsp will not read the entire message from the
socket. This change allows for decryption and parsing of partial messages.
2021-01-14 21:36:47 +01:00
ejurgensen
73c5dcec5a
[airplay] Update pairing, change ciphering function return values
2021-01-14 21:29:22 +01:00
ejurgensen
754f69bb10
[airplay] Change logging for devices that don't have AirPlay 2 features field
...
Closes #1167 re announcement from Kodi
2021-01-12 17:59:43 +01:00
ejurgensen
74f4b2c8b2
[airplay] Fixup
2021-01-12 17:56:47 +01:00
whatdoineed2do/Ray
5eeadd3f1b
[settings] add webinterface.recently_added_limit
2021-01-11 19:40:04 +01:00
ejurgensen
8f48179365
[airplay] Small update to pairing modules
2021-01-10 23:33:19 +01:00
ejurgensen
1546a43585
[airplay] Disable extended logging
2021-01-10 23:32:34 +01:00
ejurgensen
4e122303a1
[conf] Add speaker level option to disable AirPlay 1
2021-01-10 16:42:08 +01:00
ejurgensen
9805f03d10
[airplay] Update pairing, fix compiler complain about const initialization
2021-01-10 15:29:28 +01:00
ejurgensen
6b91c92bca
[airplay] Remove rs->session, not used any more
2021-01-10 15:05:21 +01:00
ejurgensen
ef0f41dc46
[airplay] Separate naming of AirPlay 1 and 2, incl log domains
2021-01-10 15:05:21 +01:00
ejurgensen
f16dc204b2
[player] Logging fixup
2021-01-10 15:05:21 +01:00
ejurgensen
ffadc399af
[cfg] Add option for prefering AirPlay 2 (useful for testing)
2021-01-10 15:05:21 +01:00
ejurgensen
a5bd8b011e
[cfg] libplist+libsodium now required, remove configure options
...
Need the two libraries for AirPlay 2, which can't be optional.
Means iTunes XML and device verification configure options are no longer
useful.
2021-01-10 15:05:21 +01:00
ejurgensen
01360fff99
[airplay] Delete auth_key on probe failure
2021-01-10 15:05:21 +01:00
ejurgensen
9cdd2a9f8b
[db] Upgrade schema to 21.05 (change auth_keys in speaker table)
2021-01-10 15:05:21 +01:00
ejurgensen
3ea480d1e7
[player] Use output priority to select between raop/Airplay 1 and Airplay 2
2021-01-10 15:05:21 +01:00
ejurgensen
fac97eed9c
[raop] Drop handling of old auth_keys, not necessary with db schema update
2021-01-10 15:05:21 +01:00
ejurgensen
8368ca7686
[airplay] Add support for AirPlay 2
...
Includes
- Implementation in src/outputs/airplays2, type OUTPUT_TYPE_AIRPLAY
- Homekit pairing, both normal (with PIN) and transient
- New session startup sequence, incl GET /info, SETPEERS and 2 x SETUP
- No more OPTIONS and ANNOUNCE
- Use POST /feedback for keepalive instead of SET_PARAMETERS
- Sequence dispatching instead of callback chains
- Continue despite "Bad request" to SET_PARAMETER (volume)
- Opening of event connection to receiver (reverse rtsp connection)
Still to be done
- Password authentication
- Handling of events
2021-01-10 14:58:06 +01:00
ejurgensen
86f762bb1f
[plist_wrap] Add libplist convenience wrapper
2021-01-10 14:52:31 +01:00
ejurgensen
3b00900572
[player] Add pkt->header_len in rtp_common
2021-01-10 14:51:16 +01:00
ejurgensen
8b842be17f
[evrtsp] Add support for SETPEERS and GET
2021-01-10 14:45:39 +01:00
ejurgensen
4621d25aaa
[logger] Add DHEXDUMP() for logging raw data
...
Substitute for Wireshark when the data exchange is encrypted
2021-01-10 14:45:39 +01:00
Christian Meffert
724cfa0093
Merge pull request #1134 from chme/podcast-updates
...
[library] Directly notify listeners of db changes after adding new items
2021-01-09 11:21:42 +01:00
ejurgensen
506959985b
[xcode] Treat Apple Music like iTunes ( closes #1152 )
2020-12-26 12:57:43 +01:00
ejurgensen
14756c0d59
[outputs] Add nickname option for Airplay/Chromecast speakers (issue #1145 )
2020-12-15 21:45:58 +01:00
ejurgensen
76cd982201
[rtsp] Shorten evrtsp timeouts, 45-50 sec is too long
2020-12-11 17:12:31 +01:00
ejurgensen
1d5691be2f
[artwork] Refactor artwork_get() and fix issue #1139
...
artwork_get() would return error for non-file images that shouldn't be
rescaled, which was a bit weird. This makes artwork_get() more straight-
forward.
Also fix issue #1139 simply by not calling artwork_get() in cases were
queue_item->artwork_url is an old temp file (in source_item_pipe_get).
2020-11-28 21:27:58 +01:00
ejurgensen
d1a1f6c59c
[pipe] Log when artwork is written to temp file
2020-11-28 21:27:58 +01:00
whatdoineed2do/Ray
4082f9e215
[library] Add function to delete playlist by id that directly
...
invalidates the REST API client caches
2020-11-28 08:27:52 +01:00
Justin Wong
0f5393633a
Check utf-8 in metadata_packet_get
2020-11-23 23:31:00 +08:00
chme
59bac6b068
[mpd] Add missing OK response line, if multiple commands are sent
...
without beeing wrapped in a command list
2020-11-22 11:33:40 +01:00
chme
ccaa7967bf
[mpd] Fix nextsong/nextsongid in status cmd response
2020-11-22 11:33:40 +01:00
chme
3fbe16ac1b
[library] Directly notify listeners of db changes after adding new items
2020-11-22 11:09:31 +01:00
chme
13e8103962
[httpd/spotify] Remove redirect to legacy admin.html page
2020-11-22 10:27:10 +01:00
ejurgensen
b6a686866a
[xcode] Retry with default probe size if quick probe fails (issue #1126 )
2020-11-21 20:40:30 +01:00
ejurgensen
04fa902b01
[xcode] Change open_input() to return ffmpeg error
2020-11-21 20:40:30 +01:00
ejurgensen
eea3a3bd27
[xcode] Fix memleak on open input error
2020-11-21 20:40:30 +01:00
whatdoineed2do/Ray
2e69f5dac6
[rss] defer playlistitems purge til ready to update with new rss
...
Current impl fetches pl, purge pl items, fetch RSS, inserts entries. If the RSS
fetch fails (remote server is temporary unreachable) the playlistitems for that
RSS are all dropped.
This has a side effect that RSS playlists cannot be determined from tracks (see
issue #1126 ) and thus cannot be deleted.
Simple fix to defer playlist item purge to the point that the RSS fetch is ok
and before the inserts
2020-11-21 14:01:39 +00:00
ejurgensen
695927de2a
[artwork] Remove old artwork_get_xxx in favor of new which has a format arg
2020-11-18 23:23:05 +01:00
ejurgensen
a9e6497be2
[cast] Increase packet buffer
2020-11-18 23:13:00 +01:00
ejurgensen
572c15a04d
[cast] Remove some unused MEDIA_xxx commands
2020-11-18 23:13:00 +01:00
ejurgensen
bb8719718a
[cast] Rename state enums, don't use MEDIA any more
2020-11-18 23:13:00 +01:00
ejurgensen
d5f5e312ab
[cast] Add config option for max_volume, like for Airplay
2020-11-18 23:13:00 +01:00
ejurgensen
c21266d26f
[cast] Use RTCP ACKs/nACKs from device to control how packets are sent
...
Previously we just sent packets when ready, which especially during startup
meant a largish number of packets got sent rapidly. This seemed to cause audio
glitches. With this change the rate is adapted to follow ACKs from the device,
which is more in line with Chromium's way, though still far from the same.
Also added capability to resend packets when a nACK is received.
Also some wip attempts at sending coverart as VP8 video.
2020-11-18 23:13:00 +01:00
ejurgensen
dff64e3dd0
[raop] Remove endian includes, now included via rtp_common.h
2020-11-18 23:13:00 +01:00
ejurgensen
06d1d7273d
[player] Add a basic RTCP parser for Chromecast packets
...
Also put the endian includes in the header, both raop.c and cast.c will need
them.
2020-11-18 23:13:00 +01:00
ejurgensen
cd9fa019dd
[misc] Add NTOSTR() macro
...
Get the string value of a number definition
2020-11-18 23:13:00 +01:00
ejurgensen
5929938a18
[outputs] RTP: Distinguish clearly between payload type and marker bit
...
Also make quality an optional input to rtp_session_new(), since it isn't
required internally by the RTP module.
2020-11-18 23:13:00 +01:00
ejurgensen
2098349fdb
[artwork] Add ability to request a specific image format
2020-11-18 23:13:00 +01:00
ejurgensen
7e106aec09
[xcode] Add VP8 encoding profile
2020-11-18 23:13:00 +01:00
ejurgensen
a11ab808b2
[cast] Make fake announcement of video stream ( fixes #1092 )
...
For unknown reasons some Chromecast devices disconnect causing a TLS error if
we don't OFFER a video stream. Seems actually sending video isn't required to
fix the issue.
2020-11-18 23:13:00 +01:00
ejurgensen
db43d51568
[xcode] Explicitly set the frame duration of OPUS packets to 20 ms
...
Protect against errors in case future versions of ffmpeg change default
2020-11-18 23:13:00 +01:00
ejurgensen
ad4b886a11
[cast] Make GET_CAPABILITIES request in debug mode
...
Note that not all devices support this request
2020-11-18 23:13:00 +01:00
ejurgensen
92953f1a2c
[cast] Use unsigned ints for ID's so we don't risk negative values
...
ssrc_id could become negative because rtp_session.ssrc_id is uint32, but we
were printing it with %d.
2020-11-18 23:13:00 +01:00
ejurgensen
504a66a315
[cast] Add some comments
2020-11-18 23:13:00 +01:00
Christian Meffert
22a4af7b93
Merge pull request #1111 from whatdoineed2do/disable-playlist-caching
...
[db] playlist cache invalidation fix
2020-11-07 08:43:07 +01:00
ejurgensen
745fee4eb9
[db] Remove unused macro STR()
2020-11-05 23:02:44 +01:00
ejurgensen
6eb01f8ffc
[outputs] Remove incorrect NULL return if packet buffer seqnum is 0
...
Since seqnum wraps around it should be ok to call rtp_packet_get() even when
session->seqnum is 0.
2020-11-03 23:44:22 +01:00
whatdoineed2do/Ray
7917695676
[db] add LISTENER_DATABASE for db_pl_*() on CRUD
2020-11-03 10:12:42 +00:00
whatdoineed2do/Ray
827921a028
[db] update db_statement_run() to accepts update events like db_query_run()
2020-11-03 09:28:14 +00:00
nia
4cdeb1afea
Remove unnecessary check for FreeBSD
...
The non-timerfd code path depends on SIGALRM being defined, so signal.h
always needs to be included.
This allows forked-daapd to build and run on NetBSD and probably other
BSD systems too.
2020-11-02 15:07:17 +01:00
Christian Meffert
3395773c9f
Merge pull request #1105 from chme/rescan-metadata
...
[spotify] Force metadata update on library "metarescan" update
2020-10-24 09:57:40 +02:00
ejurgensen
c20b85a6d9
[artwork] Always stash results of http requests in cache, even if negative
...
This is an attempt to be nice to peers, so that we don't make many similar
requests to e.g. Discogs. This could happen via proces_items() for an album
where we have the same artwork url for each track, and if it was 404 we
would continue attempting the same request for each track.
2020-10-20 23:22:49 +02:00
ejurgensen
0383f19e9f
[artwork] Avoid repeating online search requests with same query
...
This changes online_source_search_check_last() so that it also works if the
last search query was unsuccesful, i.e. last_artwork_url was NULL.
2020-10-19 22:34:26 +02:00
ejurgensen
f48fae20e2
[db] Remove unused db_speaker_clear_all()
2020-10-19 20:39:03 +02:00
ejurgensen
d2d9b78ae7
[player] Don't unselect disappeared speakers on exit/restart
...
With the new speaker selection philosophy we aim to preserve user choice, so we
shouldn't unselect speakers just because they happen to be switched off when
the server is restarted.
2020-10-19 20:36:32 +02:00
ejurgensen
ce9fbff8f5
[artwork] Use cache stash to avoid making repeated requests
...
E.g. for an album we would for each track request artwork from Spotify, even
though the requests are similar and the first one didn't give a result.
2020-10-19 20:25:01 +02:00
ejurgensen
3233aefa8a
[scan] Improve logging of inotify events
2020-10-19 20:24:31 +02:00
chme
bda2cff5db
[spotify] Force metadata update on library "metarescan" update
2020-10-18 10:35:51 +02:00
chme
d29f56f3eb
[httpd] Add "max-age=0" to Cache-Control header to force browsers to
...
always revalidate cached content
2020-09-27 19:13:07 +02:00
chme
20a2c96b2a
[jsonapi] Add boolean field "random" to playlist
...
The new field "random" is true for smart playlists with an order by
clause "random", otherwise it is false. This allows clients to handle
randomly generated playlists differently from static playlists.
2020-09-27 19:13:07 +02:00
chme
dd811e6c70
[jsonapi] Prevent browsers to cache playlist tracks
...
The tracks of a smart playlist might change between library rescans.
Allowing them to be cached based on the last rescan timestamp
("Last-Modified" header in the response) leads to potentially showing
incorrect track listing if a cached version is used. Thus the response
for playlist tracks should never be cached by the browser (this is
achieved with setting "Cache-Control" header to "no-store").
2020-09-27 19:13:07 +02:00
Tucker Kern
39b14ff8d4
Use relative paths in web interface to ease reolcation or proxying
2020-09-27 19:13:07 +02:00
chme
023436c959
[settings] Add support for (optional) default values and remove default
...
value functions for artwork
2020-09-27 19:13:07 +02:00
chme
e86aa95d89
[settings] Add new setting for "webinterface"
...
- add settings to show/hide menu items in the top nav bar
- add setting to show/hide cover artwork in album lists
2020-09-27 19:13:07 +02:00
Christian Meffert
1258427afc
Merge pull request #1090 from chme/spotify-release-date
...
Map release date for Spotify tracks + fix release data being off by one day
2020-09-24 06:44:23 +02:00
ejurgensen
81c776fc4a
[player] Fixup commit 1f45967
2020-09-21 17:18:09 +02:00
ejurgensen
1f45967481
[player] Fix autoselect so it also applies when there are no selected devices (second attempt)
...
Second attempt at fixing regression in version 27.2. First attempt was commit 2345885
.
Closes #1091 .
2020-09-21 17:12:18 +02:00
chme
a28c6ba1d6
[spotify] Scan album info during saved playlists scan (if available)
2020-09-19 08:00:26 +02:00
ejurgensen
513a09e6d1
[player] Reduce log severity of devices not starting
2020-09-06 23:18:08 +02:00
ejurgensen
2345885f19
[player] Fix autoselect so it also applies when there are no selected devices
...
Regression in version 27.2. Closes #1091 .
2020-09-06 00:12:15 +02:00
ejurgensen
500f57ba1a
[player] Clear up return value of outputs_start()
...
Should return 0 if no devices at all, or if none selected. Should not return
negative from failure to stop unselected devices.
2020-09-06 00:08:40 +02:00
chme
451e0bf10b
[spotify/jsonapi] Map date_released for Spotify tracks; fix date
...
released being off by one day in the JSON API
2020-09-01 20:37:10 +02:00
chme
6f5822e461
[jsonapi] Map fields time_added, time_played, seek for album / artist
2020-08-30 09:08:41 +02:00
chme
a74a3e5add
[db] Add fields time_added, time_played, seek to group object
2020-08-30 09:08:41 +02:00
chme
382467eb9c
[jsonapi] Map additional metadata for artist and album
2020-08-30 09:08:41 +02:00
chme
8afae4a41b
[db] Fetch additional metadata for artist and album in group query
2020-08-30 09:08:41 +02:00
ejurgensen
bb9536ef44
[scan] Early skip if file should be ignored
...
Avoids needless logging, e.g. from failed lstat(). Closes #1078 .
2020-08-22 21:38:12 +02:00
ejurgensen
c5df688caf
[alsa] Align commit bfe99e5
with coding style
2020-08-22 21:36:10 +02:00
whatdoineed2do/Ray
bfe99e56f7
[alsa] use alsamixer volume adjustment algorithm
2020-08-22 21:25:17 +02:00
ejurgensen
11de4c09bc
[misc] Also have buildopts[] have disabled features + regex
2020-08-19 20:12:06 +02:00
ejurgensen
a5ddb3c85d
[player] Fix for volumes of unselected devices being reduced
...
Closes #1077
2020-08-13 20:48:48 +02:00
ejurgensen
de5060bc57
[db] Remove a FIXME, not much of an issue
2020-08-10 23:03:37 +02:00
ejurgensen
d77927d3c3
[xcode] Fix incorrect error check, unsigned int can't be negative
...
av_find_best_stream() returns an int, with negative being an error
Credit lgtm.com
2020-08-10 22:56:08 +02:00
ejurgensen
d9177dfb25
[artwork] Remove some superfluous checks
...
Credit lgtm.com
2020-08-10 22:50:04 +02:00
ejurgensen
a0876e532c
[websocket] Prefix globals with websocket_
...
Avoids e.g. "event" being both the name of a global and a parameter name in
send_notify_reply()
credit lgtm.com
2020-08-10 22:36:00 +02:00
ejurgensen
23be5aa749
[config] Name change to avoid overlapping/hiding global variable "cfg"
...
credit lgtm.com
2020-08-10 22:29:02 +02:00
ejurgensen
5e6b5fbe8a
[httpd/logger] Use gmtime_r/localtime_r instead of gmtime/localtime
...
gmtime and localtime are not thread safe
credit lgtm.com
2020-08-10 22:23:21 +02:00
ejurgensen
fada4c0ee7
[lastfm] Fix incorrect error condition test
2020-08-10 22:08:35 +02:00
ejurgensen
47779e59e7
[input] Fix memleak of path when seting up a new input file
...
Credit @whatdoineed2do
Closes #1067
2020-08-10 22:01:49 +02:00
whatdoineed2do/Ray
76d35f5abc
[scan] bulk_scan() counter reset before processing any library dirs
2020-08-09 22:33:23 +02:00
ejurgensen
55d5289c05
[player] Add settings for persisting repeat, shuffle and consume
...
Closes issue #963
2020-07-24 20:15:03 +02:00
ejurgensen
3245b81e60
[settings] Add shorthand macros for getting/setting options
2020-07-24 20:15:03 +02:00
whatdoineed2do/Ray
d567bd004a
[db,conf,json] new backup endpoint
2020-07-24 20:07:42 +02:00
ejurgensen
a71444d3e1
[player] Limit auto reconnection + add option for user override
...
With this commit auto reconnection per default will only be done for ATV4s and
HomePods. Reconnection is not always desirable, for instance if the device cuts
the connection because it is busy with something else, ref. issue #934 .
The commit also adds an option to override auto reconnection, thus either
enabling it for other devices or disabling it for affected devices.
2020-07-24 00:10:26 +02:00
ejurgensen
e8bdcd2365
[xcode] Use ffmpeg's "image2pipe" muxer instead of "image2"
...
With ffmpeg 4.3 it seems image2 no longer works for non-file output, so use
image2pipe instead.
Closes #1061
2020-07-19 23:52:42 +02:00
ejurgensen
d0a7d5114b
[http] Drop own Shoutcast metadata requestor, rely on ffmpeg now
...
ffmpeg/libav has been capable of this since approx 2016, so the fallback
functions can be dropped now.
Also means we don't add automatically add Icy-MetaData: 1 to request
headers any more.
2020-07-17 00:08:16 +02:00
ejurgensen
3e707c4060
[http] Make libcurl a hard requirement
...
Always using libcurl makes the code simpler, plus makes sure we always have a
https client
2020-07-16 23:30:05 +02:00
ejurgensen
941fb47c1d
[player] Only resurrect speakers that fail during playback
...
Fix bug where we would resurrect speakers, incl restart playback, if the speaker
disconnected after a flush.
Closes #1057
2020-07-16 23:08:58 +02:00
ejurgensen
c4d6e1c251
[raop] Extra logging of invalid retransmit headers
2020-07-16 21:30:48 +02:00
whatdoineed2do/Ray
c6c1e8f9ee
[alsa] dump_card() includes ALSA device name
...
Include ALSA's device name in the ALSA modules 'info' logging to help
identify sound devices as seen by the system for assisting config setup
Many configs use ALSA's hw ids to refer to device but ALSA can also use
device names:
laudio: Available ALSA playback mixer(s) on hw:0 CARD=Intel (HDA Intel): 'Master' 'Headphone' 'Speaker' 'PCM' 'Mic' 'Beep'
laudio: Available ALSA playback mixer(s) on hw:1 CARD=E30 (E30): 'E30 '
From the example above can use these ALSA names interchangably:
'hw:0' and 'hw:Intel'
'hw:1' and 'hw:E30'
2020-07-14 21:55:46 +01:00
ejurgensen
67f16138c5
[pipe] Change int64_t print mask for log message
...
Removes compiler warning
2020-07-05 20:59:03 +02:00
ejurgensen
5e60527f40
[spotify] Add an API endpoint for logging out of Spotify
2020-07-05 20:43:51 +02:00
ejurgensen
1b74966ef1
[db] Remove HAVE_SPOTIFY_H conditionals, not required
...
The db functions don't depend on the Spotify library, so remove conditionals
2020-07-05 20:43:51 +02:00
Christian Meffert
3fd812ef2f
Merge pull request #1008 from chme/web_next
...
Player web interface v0.7.2
2020-07-05 10:59:15 +02:00
Christian Meffert
0e8e8564bb
Merge pull request #1042 from chme/player-prev-next
...
[player/jsonapi] Do not report error on skip next/prev if end/start of queue is reached
2020-07-05 10:58:50 +02:00
Christian Meffert
07f3f808c7
Merge pull request #1041 from chme/ws-header-space
...
[ws] Set websocket header data space
2020-07-05 10:57:54 +02:00
Christian Meffert
db51d59be4
Merge pull request #995 from whatdoineed2do/json-add-by-query-with-limit
...
[jsonapi] support 'limit' on 'api/queue/items/add?expression='
2020-07-03 20:09:00 +02:00
chme
56564dec87
[ws] Set header data space to 4096
...
Hopefully fixes the "LWS Ran out of header data space" error seen in the
Chrome browser.
2020-07-03 09:53:39 +02:00
chme
9616cfdf0c
[jsonapi] harmonize "channels" attribute in queue item and track object
2020-07-01 07:32:12 +02:00
ejurgensen
a2ec7ee28f
[outputs] Fix gcc 10 complaining about multiple definitions
...
outputs_master_volume, output_device_list and output_buffer were defined in
outputs.h, but should only have been declared with extern.
Solve it by making output_buffer static/non-global (wasn't used anyway), and
the two others are now returned by functions.
2020-06-29 00:19:03 +02:00
ejurgensen
69fbd7b32a
[library] Fix gcc 10 warning
...
And avoid a year 10000 doomsday
2020-06-28 23:23:52 +02:00
chme
8e333c7978
[player/jsonapi] Do not report error on skip next/prev if end/start of
...
queue is reached
2020-06-28 11:56:51 +02:00
whatdoineed2do/Ray
dd2ee019a8
[streaming] drop client mp3 streaming connections if libav has mp3 encode
2020-06-11 13:11:12 +01:00
ejurgensen
8046f13698
[outputs] Fix issue where speaker becomes unselected after pause (flush)
2020-05-30 21:31:27 +02:00
ejurgensen
5d22f11b0e
[player/outputs] Fix for speaker selection and volume adj ( closes #1011 )
...
* Make sure that vol_adjust() bases adjustments on the same speakers that the
user sees as active
* If a speaker fails during activation we unselect it, so that we don't keep
trying to start it, so we find a new master volume if required, and so it is
possible for the user to reselect it.
2020-05-27 23:02:29 +02:00
ejurgensen
a9a6f4b584
[outputs] Check for session in outputs_device_authorize()
2020-05-27 23:02:29 +02:00
ejurgensen
384b1171d9
[raop] Change device verification so we don't risk stale sesssions
...
Before, if a user never verified the device, we would have a device->session
even though the device was not streaming and was in a failed state.
This solution should be more clean and in line with the overall principle that
we only have a session when communicating with the device.
Also includes a bit of code refactoring.
2020-05-27 23:02:29 +02:00
ejurgensen
138d482510
[dummy] Add capability to mock device verification for testing
2020-05-27 23:02:29 +02:00
ejurgensen
d6ec6afb5b
[outputs] Remove outputs_authorize()
...
Replaced by outputs_device_authorize()
2020-05-26 23:21:06 +02:00
ejurgensen
3cca778419
[player] Stop using outputs_authorize() so it can be removed
...
Use outputs_device_authorize() instead
2020-05-26 23:20:29 +02:00
ejurgensen
d18e49f59b
[jsonapi] Make PUT /api/outputs/x capable of device verification
2020-05-26 22:46:49 +02:00
ejurgensen
18e75c2445
[player] Add player_speaker_authorize()
...
A more straightforward function for device verification, using the new
outputs_device_authorize() function.
2020-05-26 22:45:38 +02:00
ejurgensen
2fa2d33602
[outputs] Add a more standard device authentication function
...
outputs_authorize() has two issues, one that the caller can't specify device
(problem if there are two devices waiting for verification), the other that it
didn't offer a standard callback, so difficult to catch failure/success.
2020-05-26 22:42:06 +02:00
ejurgensen
9308f81224
[player] Get rid of listener notifications direct from outputs
...
Try to consolidate in player.c
2020-05-25 22:43:08 +02:00
ejurgensen
010185eab5
[player] Another way of implementing commit 3b033e48
2020-05-25 22:43:04 +02:00
ejurgensen
3b033e48ee
[player] Consolidate listener handling in one player trigger - wip
...
The goal is to make the listener invokation more unified and less ad hoc. Also
reduce risk of blocking/deadlocking player thread.
2020-05-25 22:42:22 +02:00
ejurgensen
3885b92111
[worker] Remove not-so-useful log message
2020-05-25 22:42:22 +02:00
ejurgensen
38ed9e59ad
[listener] Update so that comments etc match actual use
2020-05-25 22:42:22 +02:00
ejurgensen
37521406f3
[input] Split file_http.c input into file.c and http.c
...
The common code is by now limited, and there is a lot of http-specific code.
2020-05-19 23:06:36 +02:00
ejurgensen
8acb2a647d
[http] Don't set ICY metadata if they are just empty strings
...
An empty string will mean that m3u tags won't get used (unless m3u_override is
configured), but they should be used, since they are probably better than an
empty string.
2020-05-19 23:06:36 +02:00
ejurgensen
a69cc65ff6
[input] Download StreamUrl resource async so input thread is not blocked
2020-05-19 23:06:36 +02:00
ejurgensen
28df2fb0f9
[input] Extra comment
2020-05-19 23:06:36 +02:00
ejurgensen
552c201cf3
[artwork] Change cache strategy for artwork_url_get
...
Credit @sfeakes
2020-05-19 23:06:36 +02:00
ejurgensen
b44e5b3ede
[input] Add handler/parser for StreamUrl tags
2020-05-19 23:06:36 +02:00
ejurgensen
ca82857bfe
[artwork] Add artwork_extension_is_artwork() + some fixup/renaming
2020-05-19 23:06:36 +02:00
ejurgensen
d2ac216f47
[http] Change name of struct field for StreamUrl
...
Should not be called artwork_url, since it also can link to other ressources.
Also some fixup, e.g. use new macros.
2020-05-16 00:13:31 +02:00
ejurgensen
d073781445
[json] Add endpoint to delete a setting (reset to defaults)
2020-05-16 00:13:10 +02:00
ejurgensen
bb434297ca
[artwork] Be more forgiving towards incorrect mime content-types
2020-05-15 23:10:43 +02:00
ejurgensen
360e46683b
[input] Add a simple input for testing timing
2020-05-12 22:25:38 +02:00
ejurgensen
e570cbdcbd
[player] Use input progress metadata to update clients
...
Before, we were ignoring progress metadata, and we were also updating clients
and db too early with input metadata (right when read from the input, instead of
waiting until playback (speakers) were at that position.
This change adds a complicated async chain of events from when the update is
received.
2020-05-12 20:16:15 +02:00
ejurgensen
68022d5c10
[dacp] Change update id's more often
...
Sometimes the artwork changes, but the album does not (especially likely if we
are in a row of "Unknown album"-tracks)
2020-05-11 21:39:02 +02:00
ejurgensen
63ab446bd5
[pipe] Fix issue where Shairport progress metadata was ignored
...
Sometimes the progress has a negative position, which we were incorrectly
disregarding.
2020-05-11 21:39:02 +02:00
ejurgensen
1921a2401f
[artwork] Fix memleak in source_item_pipe_get
...
Queue item not being freed on succes
2020-05-11 21:37:29 +02:00
ejurgensen
97a2165666
[lastfm] Fix forgotten include in commit de1b1c3
...
Closes #1001
2020-05-11 19:19:28 +02:00
ejurgensen
a6cb70fd66
[artwork] Don't use group handlers if unknown group (artist/album)
2020-05-11 17:24:05 +02:00
ejurgensen
de1b1c3805
[cfg] Remove hardcoding of strings for unknown album etc
...
Now configurable, since we don't have real localisation
2020-05-11 17:02:14 +02:00
whatdoineed2do/Ray
69c56f5971
[jsonapi] items/add?expression can take 'limit' param
2020-05-09 20:04:27 +01:00
whatdoineed2do/Ray
c5fe0d217b
[jsonapi] support 'limit' on 'api/queue/items/add?expression='
...
Extend to support SMART query allows 'limit'
curl -X POST "http://localhost:3689/api/queue/items/add?expression=genre+is+%22Pop%22+order+by+time_added+desc+limit+3 "
2020-05-09 17:09:03 +01:00
whatdoineed2do/Ray
4147e302a8
[SMARTPL] add 'random' in 'order by' clause
...
'random' tag in 'order by' clause to request SQLite to random select data rows from result set
"random 3 pop" {
genre is "Pop" and
media_kind is music
order by random desc
limit 3
}
2020-05-09 15:47:30 +01:00
ejurgensen
86d49a7028
[artwork] Don't log Spotify artwork errors if user is not logged in
...
Ref issue #986
2020-05-05 16:23:55 +02:00
ejurgensen
07158cf2d5
[raop] Fix incorrect log domains
2020-05-05 16:06:06 +02:00
ejurgensen
b10434627a
[player] Remove outdated comment
2020-05-05 16:04:39 +02:00
ejurgensen
778d6f4999
[config] Change speaker_autoselect default to no
...
The changes in commit 6612899
mean that we now do more to maintain selection of
a user selected speaker, even if it fails or is powered off for a while. Thus
this option is no longer relevant.
The option was also never very good for people with many speakers.
2020-05-04 17:41:57 +02:00
ejurgensen
b6dfb48100
[raop] Adjust keep alive interval 30s -> 25s
...
Testing with Homepod/ATV points at 25s working better, see:
https://github.com/ejurgensen/forked-daapd/issues/734#issuecomment-622959334
2020-05-03 23:15:44 +02:00
ejurgensen
57ff2e3124
[raop] Fix bug where we send start packets during teardown
...
The teardown send function was setting state to CONNECTED, which made
raop_write() believe that the device had just joined.
2020-05-03 00:00:26 +02:00
ejurgensen
661289990c
[player] Migrate a lot of speaker handling to outputs.c
...
Moves speaker selection, volume handling and startup to outputs.c, plus adds
the ability to "resurrect" a speaker that disconnects.
The purpose of moving the code is to concentrate device handling in one place.
Also changes how we deal with speaker selection. The player will now generally
not alter a user selection, even if the device fails. The purpose of this is to
maintain selection both if the device briefly fails, and if the user switches
off the device (we stop playback) and later turns it on + starts new playback.
2020-05-03 00:00:18 +02:00
ejurgensen
0e19102efd
[artwork] Define MEDIA_KIND_ALL as USHRT_MAX instead of individual num values
2020-05-02 00:52:52 +02:00
ejurgensen
37b4188c3c
[artwork] Generalize handler configuration of supported media_kinds
2020-05-02 00:52:52 +02:00
ejurgensen
9d1f15d3c2
[db] Define MEDIA_KIND_ALL
2020-05-02 00:52:52 +02:00
whatdoineed2do/Ray
329c0620fc
[artwork] query playlist-wide artwork if availble
2020-04-30 20:28:36 +02:00
whatdoineed2do/Ray
5a872dc436
[library] rss pulls channel->image->url if available
2020-04-30 20:28:36 +02:00
whatdoineed2do/Ray
e7c62086a2
[db] add artwork_url to playlist_info
2020-04-30 20:28:36 +02:00
whatdoineed2do/Ray
9a0c7e9ad2
[db] v21.4 - add playlist..artwork_url column
2020-04-30 20:28:36 +02:00
ejurgensen
d84ea2008f
[pipe] Increase metadata pipe max read size + don't abort if exceeded
...
Closes #976
2020-04-29 23:02:05 +02:00
ejurgensen
a14a8458aa
[scan] Remove iTunes_CDDB_IDs as album ID ( closes #972 )
...
Seems this ID is not reliable, it can be semi-empty, e.g. with a value of '16++'
2020-04-29 20:57:13 +02:00
ejurgensen
489b90e067
[rsp] Add comments with RSP sample requests
2020-04-29 20:55:46 +02:00
whatdoineed2do/Ray
52800b419a
[smartpl] support song_length
2020-04-29 11:53:29 +01:00
ejurgensen
6d9cf5c1d7
[rsp] Fix commit 24e3ac1
so it filters properly (ref issue #944 )
2020-04-28 22:27:36 +02:00
ejurgensen
d3fb451960
[player] Save seek position more often
...
Makes it possible for the user to resume playback from the correct position if
for instance the speaker disconnects -> pb_abort is called.
2020-04-27 21:29:51 +02:00
ejurgensen
153eb40b6d
[db] Remove some definitions of ARTWORK_XXX
...
The artwork db field should only be used to save media file artwork metadata,
which mostly means whether it has embedded artwork or not. It should not be
used to save where we found artwork for the file, since that is not static.
So this commit removes for instance ARTWORK_OWN, ARTWORK_DIR etc., which we
weren't using anyway.
2020-04-25 22:07:10 +02:00
ejurgensen
daf3922650
[artwork] Remove http instance of artwork_source for embedded
...
Commit 8510f7e
should mean that it is not required any more, since we won't be
probing http streams unless we know they have artwork.
2020-04-25 21:59:18 +02:00
chme
8510f7e5f2
[artwork] Only try embedded artwork if dbmfi has ARTWORK_EMBEDDED flag
2020-04-25 21:58:21 +02:00
ejurgensen
946853fdf4
[rss] Change feed virtual_path
...
Instead of /file:/https:/domain.podcast set it to /https://domain.podcast.com/xxxx
2020-04-25 21:51:00 +02:00
whatdoineed2do/Ray
f23ef1aa9c
[library] RSS - protect against invalid pubdate
2020-04-24 19:04:45 +02:00
ejurgensen
b00e2655f0
Merge pull request #954 from chme/rss-scanner
...
[rss] Always use RSS feed title and author for album and artist
2020-04-24 19:02:48 +02:00
ejurgensen
7a9f66538a
[raop] Extra comments + logging changes
2020-04-24 18:49:33 +02:00
ejurgensen
b78282db38
[player] Only send startup metadata once
2020-04-24 18:46:17 +02:00
ejurgensen
07972c28f7
[raop] Only send exact types of metadata requested by device
...
Airport Express announces md=2, meaning only progress metadata, so we shouldn't
send artwork and text metadata to it.
2020-04-24 18:46:17 +02:00
ejurgensen
4491928466
[player] Don't send metadata before the input has started
...
Otherwise we have a race condition between the worker and the input thread. If
the worker returns with metadata before the input thread has started reading,
then pb_session.pts will still be zero, which means metadata->pts will be zero
in finalize_cb(). That is an invalid time to give the outputs.
2020-04-24 18:46:17 +02:00
ejurgensen
e2205e2399
[raop] Fix calculation of metadata progress values
2020-04-24 18:49:03 +02:00
ejurgensen
8070c2f68c
[outputs] Change rtp timespec arg to take value instead of pointer
2020-04-24 18:46:17 +02:00
ejurgensen
349b05bd4f
[raop] Use progress metadata to keep ATV4/Homepod connection alive (issue #734 )
...
Instead of using OPTIONS we use SET_PARAMETER with progress metadata to avoid
disconnects from Apple TVs, Homepods and possibly also Airport Expresses.
2020-04-24 18:46:17 +02:00
ejurgensen
01033c0662
[cast] Fix incorrect log level
2020-04-22 00:00:09 +02:00
ejurgensen
886557f946
[cast] Better logging of app not launching
2020-04-20 21:40:39 +02:00
Christian Meffert
a1cf32172a
Merge pull request #955 from chme/jsonapi-track-playlists
...
Add JSON API endpoint to fetch playlists for a track
2020-04-19 07:21:58 +02:00
chme
df0c36f4f4
[jsonapi] Add new endpoint to fetch playlists for a track
...
The new endpoint `api/library/track/{id}/playlists` allows to fetch all
playlists that contain the track.
2020-04-19 06:44:13 +02:00
ejurgensen
aa9a08aedb
[alsa] Improvements to commit 0a08b93
2020-04-18 21:35:47 +02:00
ejurgensen
515232e7fc
Merge pull request #950 from whatdoineed2do/alsa-device-listing
...
[alsa] option to list alsa devices/mixers suitable for playback
2020-04-18 20:54:28 +02:00
whatdoineed2do/Ray
0a08b93c24
[alsa] list alsa devices/mixers suitable for playback
2020-04-18 11:36:41 +01:00
chme
5074b158bd
[rss] Always use RSS feed title and author for album and artist
2020-04-18 11:46:44 +02:00
Justin Wong
c0b3782578
Updated websocket.c to notify once per event cycle
2020-04-18 15:11:39 +08:00
ejurgensen
3994ef0f2e
[jsonapi] Add endpoint for playlist update of query_limit
...
Makes it possible to set number of podcasts retrieved for RSS feeds.
Closes #951 .
2020-04-17 20:10:58 +02:00
ejurgensen
95bc6e3e70
Merge pull request #946 from whatdoineed2do/scan-rss-rescan-fix
...
[library] RSS bug fix - meta rescan resets "play count" and other fields
2020-04-17 11:21:29 +02:00
whatdoineed2do/Ray
3d869b0857
[library] RSS - reuse db file id when performing meta scan
...
Fixes issue when performing an 'api/rescan' (results in RSS_SCAN_META scan type
in this module) that would result in a library_media_save() -> a readd even for
entries that already exist in db. This would result in dropping db record, incl
play_count etc instead of an update
2020-04-17 09:44:51 +01:00
ejurgensen
24e3ac1a80
[rsp] Filter out non-file sources since they can't be played
2020-04-15 22:05:19 +02:00
ejurgensen
1c08b75ce5
[httpd] Improve log and error message
2020-04-15 16:00:18 +02:00
ejurgensen
19358dc869
[mxml] Simplify mxml workarounds
2020-04-15 15:59:15 +02:00
ejurgensen
5ad5f85cc4
[mxml] Workaround mxmlNewTextf/mxmlSaveString segfault
...
Occurs on amd64 Debian 10.x with mxml 2.12
2020-04-15 15:59:15 +02:00
Justin Wong
938a19ff15
Update volume on device reconnect
2020-04-14 23:49:34 +08:00
ejurgensen
805cd16442
[pairing] Remove dead assignment
2020-04-13 21:39:59 +02:00
ejurgensen
90eb333f03
Merge pull request #933 from nhannam/raop-configurable-ports
...
[raop] Allow configuration of raop control and timing ports
2020-04-12 19:49:49 +02:00
chme
14b4081769
[artwork] Ignore streams with media kind != music in artwork sources
...
"stream", "discogs", "coverartarchive", "spotify"
2020-04-12 10:49:56 +02:00
Nigel Hannam
5d6c8d7b5b
[raop] Fix spelling mistakes
2020-04-11 22:44:41 +01:00
Nigel Hannam
5f3103fae7
[raop] Move config into new airplay_shared block
2020-04-11 22:30:27 +01:00
ejurgensen
08b2eb8d4c
[dacp/player] Change support for prevent-playback and busy (ref issue #934 )
...
Adds support for dcmp.device-busy, and also changes handling of
device-prevent-playback so it matches iTunes better.
2020-04-10 21:01:41 +02:00
whatdoineed2do/Ray
e5ff30e11b
[scan] support #EXTGENRE:
2020-04-09 17:43:09 +01:00
Nigel Hannam
19d1d4f67b
[raop] Allow configuration of raop control and timing ports
2020-04-08 21:16:00 +01:00
ejurgensen
c4cc366e6f
[artwork] Avoid slow nowplaying artwork response -> slow Remote connect
...
Lower priority of potentielly slow embedded artwork retrieval, plus make sure
we tell the transcode module about http data kind, so that it can probe
quicker.
2020-04-07 22:54:10 +02:00
ejurgensen
3a897afc44
[xcode] Use smaller probe size for remote tracks for quicker startup
2020-04-07 21:44:52 +02:00
ejurgensen
a8e6522a3c
[xcode] Change workaround in commit a0ac66e
for AIFF issue
...
This solution matches what we do for 'in' filter
2020-04-07 21:24:31 +02:00
ejurgensen
a0ac66e020
[xcode] Workaround for ffmpeg detecting channel_layout = 0 for AIF
2020-04-07 20:55:17 +02:00
whatdoineed2do/Ray
0baa0ac552
[smartpl] add samplerate
2020-04-07 18:46:33 +01:00
whatdoineed2do/Ray
1b354121c5
[smartpl] support birate,bits_per_sample,codectype
2020-04-05 14:42:01 +01:00
ejurgensen
4fcd0ba781
[daap] Adjust user_agent_filter() so code matches intention
2020-04-04 21:25:14 +02:00
ejurgensen
5651ce7694
[library] Use item title from RSS feed
2020-04-04 21:07:16 +02:00
ejurgensen
dbc798da4f
[-] Workaround for mxml 2.10 memleak
...
2.10's mxmlDelete memleaks, and mxml is used in many parts of forked-daapd. So
to avoid that we ship upstream's fixed version of mxmlDelete and use that.
2020-04-04 21:07:16 +02:00
ejurgensen
2d8521139c
[library] Add action to library_schedule_callback()
...
Makes it possible for the caller to request that a previous callback is
replaced, so we don't end up with more and more callbacks. Also add other
options for future use.
2020-04-04 21:07:16 +02:00
ejurgensen
2af7296723
[library] Ignore RSS items without URL's
2020-04-04 21:07:16 +02:00
ejurgensen
1a45a2acda
[db] Fix db_pl_delete so it won't delete files belonging to other pl's
2020-04-04 21:07:16 +02:00
ejurgensen
16a3b8878f
[jsonapi] Change library_item_add, add delete pl and drop library_item_remove
2020-04-04 21:07:16 +02:00
ejurgensen
59fa33311d
[library] Refactor RSS scanner
2020-04-04 21:07:16 +02:00
ejurgensen
b19314e814
[db] Add cleanup to db_pl_delete(), remove db_pl_purge()
2020-04-04 21:07:16 +02:00
ejurgensen
2ee5f6d747
[library] Change implementation of item_add, event cb and drop item_remove.
2020-04-04 21:07:16 +02:00
whatdoineed2do/Ray
5cddf0e347
[jsonapi] RSS support: new /api/library/item_{add,remove} endpoints for adding items to library - for RSS at this time and extend PL_ search and queries to incl PL_RSS
2020-04-04 21:07:16 +02:00
whatdoineed2do/Ray
10b10f8037
[daap] RSS support: podcasts visible on IOS Remote app
...
IOS appl generates request for itunes.extended-media-kind: 4,36,6,7 when
navigating "Podcasts" item on menu
2020-04-04 21:07:16 +02:00
whatdoineed2do/Ray
d40131d38d
[scan] RSS support: new library source - RSS scanner; periodically updates RSS feeds as found in db once subuscribed. Auto translates apple podcasts to RSS link
2020-04-04 21:07:16 +02:00
whatdoineed2do/Ray
8b02ea9d6b
[library] RSS support: new library interface item_{add.remove} and all library modules to register (timer) events
2020-04-04 21:07:16 +02:00
whatdoineed2do/Ray
57b0626906
[db] RSS support: new PL_RSS db value and new pl purge
2020-04-04 21:07:16 +02:00
Rosen Penev
08b055dd2b
websocket: add header for errno
...
fixes compilation under newer musl.
2020-03-29 20:51:19 -07:00
ejurgensen
f61dfa0529
[db] db_pl_delete_bypath() must also delete disabled playlists
...
Otherwise we end up with a bunch of disabled playlists in the db.
2020-03-29 00:33:44 +01:00
Christian Meffert
5bd32135ee
Merge pull request #916 from whatdoineed2do/json-playlist-play-count-update
...
[json] enable playlist play_count
2020-03-28 07:41:24 +01:00
ejurgensen
114881cd1c
[misc] Add comment for commit 27138ed
2020-03-25 16:13:55 +01:00
uvjustin
27138edd55
Update misc.c
...
Allocate extra byte for null termination of string
2020-03-25 14:57:23 +08:00
ejurgensen
cfecb4a5f5
[scan] Also support nested smart playlists (closes issue #923 )
2020-03-23 23:46:52 +01:00
whatdoineed2do/Ray
a31430f671
[jsonapi] album/playlist inc uses db specific methods
2020-03-23 13:42:46 +00:00
whatdoineed2do/Ray
286525a85c
[db] inc playcount using filter
2020-03-23 13:39:59 +00:00
whatdoineed2do/Ray
1a912d9808
[jsonapi] enable album track play_count update
2020-03-23 13:39:59 +00:00
whatdoineed2do/Ray
a6d8d55bd4
[jsonap] new PUT /api/library/playlists/[[:digit:]]+/tracks endpoint
...
enable playlist tracks play_count updates: 'increment', 'reset', 'played'
2020-03-23 13:39:59 +00:00
chme
ec8ce91baa
[jsonapi] Use synchronous pairing request command
2020-03-18 14:56:05 +01:00
chme
accab800ac
[pairing] Refactor remote_pairing to use cmdbase
...
This allows to call a sync command that returns the outcome of a pairing
request. And that will be useful for the JSON API and the web interface.
2020-03-18 14:56:05 +01:00
ejurgensen
3b27d50f97
Merge pull request #907 from chme/artwork_remove_libspotify_refactor
...
Remove libspotify as artwork source + refactoring
2020-03-15 18:27:18 +01:00
chme
67fd555b52
[artwork] Refactor artwork_get_dir_image
2020-03-14 07:03:06 +01:00
chme
c75ff89769
[jsonapi] Do not fail on /api/library/playlists/0
...
The root playlist folder does not exist in the DB therefor add special
handling and return some fixed data.
2020-03-08 19:13:17 +01:00
Christian Meffert
1bf094ed81
Merge pull request #906 from chme/playlist_folder2
...
JSON API - Support for Playlist Folders
2020-03-08 07:31:09 +01:00
ejurgensen
51b7a8854c
[scan] Add support for MUSICBRAINZ_ALBUMID tag (fixes issue #914 )
2020-03-06 19:07:06 +01:00
ejurgensen
37510db748
[mdns] Fix possible incorrect library ID in _dacp._tcp ( fixes #899 )
...
If the library ID started with one or more 0's then it would not be printed in
the announcement, which meant that DACP commands would not work due to
incorrect ID.
2020-03-02 19:53:43 +01:00
whatdoineed2do/Ray
81f4834814
[http] leak fix for curl_slist_append()
2020-02-28 21:57:10 +00:00
ejurgensen
64c6007aad
[db] Fix memleak from unexpected return value, closes issue #909
...
On success the function was returning SQLITE_OK = 100, not 0, which made
json_reply_library think that the operation failed.
Credit @whatdoineed2do
2020-02-25 21:58:18 +01:00
chme
6ba45e8d94
[artwork] Remove libspotify based artwork handler
2020-02-25 05:41:49 +01:00
chme
36ebf7d06c
[jsonapi] Add support for playlist folders
2020-02-24 21:27:53 +01:00
ejurgensen
248f82f3c8
[db] Fixup fixup in commit #00de0a3 (upgrade dbvers to 21.3)
...
Forgot to include db_upgrade to v21.3
2020-02-23 21:26:00 +01:00
ejurgensen
1ed10771f1
[artwork] Get enablement of online srcs from settings
...
Settings will take care of consulting the cfg file now
2020-02-23 20:30:35 +01:00
ejurgensen
9b9d2d0fb7
[settings] Add handlers to set default settings, e.g. from the cfg file
2020-02-23 20:30:35 +01:00
ejurgensen
5736217315
[db] Change prototype of db_admin_getxxx() functions
...
Makes it possible for caller to distinguish between "not set" and "set to 0".
2020-02-23 20:30:35 +01:00
ejurgensen
afa1a07a42
[artwork] Fix handling of cache + enable online srcs via config
...
* Don't save artwork for permanent items (file + Spotify) to the stash. The
stash is only for short term artwork.
* If a request comes with a different max_w/max then search the online source
again.
* Make artwork requests thread-safe by mutex protecting the search history.
* Add config option
2020-02-23 20:30:35 +01:00
ejurgensen
c674f84497
[json] Make clients reload artwork when we have new http metadata
2020-02-23 20:30:35 +01:00
ejurgensen
ad9ebb75c6
[artwork] Refinement of online artwork search
...
* Add system to avoid making too many futile requests + repeated requests
* Fixup Spotify artwork search (use type=track, type=album gave empty results)
* Include stash caching in artwork_get_byurl()
2020-02-23 20:30:35 +01:00
ejurgensen
8261fb8e59
[http] Don't return zero-length ICY title metadata
2020-02-23 20:30:35 +01:00
ejurgensen
9068c66dcd
[cache] Minor changes so "const char *" path arguments are accepted
2020-02-23 20:30:35 +01:00
ejurgensen
2651a979fe
[inputs] Fix issue where input metadata would not be erased
...
When playing a stream, the input metadata is transferred to the queue_item.
However, that was not done if there was no input metadata, which meant that
old metadata was not getting erased.
2020-02-23 20:30:35 +01:00
ejurgensen
b43e174baf
[logger] Show long log messages truncated
2020-02-23 20:30:35 +01:00
ejurgensen
a289135325
[artwork] Construct online src querys based on data_kind
...
For http streams we don't have an album name to search for. Plus we don't
want to cache those images.
2020-02-23 20:30:35 +01:00
ejurgensen
b73f33f8e9
[artwork] Use settings to enable online sources
2020-02-23 20:30:35 +01:00
ejurgensen
18cf2dbbbf
[misc] Change json_drilldown to _select and fix error case
2020-02-23 20:30:35 +01:00
ejurgensen
70f0ff1f61
[artwork] Support for online artwork sources - WIP
...
* Discogs
* Spotify
* Cover Art Archive
2020-02-23 20:30:35 +01:00
ejurgensen
15b18e26b7
[http] Let the curl https client follow up to 5 redirects
...
Requests for artwork to Cover Art Archive require redirects. Perhaps there are
also some playlist requests that will benefit from this.
2020-02-23 20:30:35 +01:00
ejurgensen
937f4431f8
[misc] Add json_drilldown() function
...
Will descend into a json object along the path set by a list of keys
2020-02-23 20:30:35 +01:00
ejurgensen
d86ca1176d
[misc] Add an in-place string replacement function
2020-02-23 20:30:35 +01:00
ejurgensen
00de0a3f76
[db] Fixup commit #1edfadc
2020-02-23 20:25:22 +01:00
whatdoineed2do/Ray
3a48864001
[smartpl] support date_realeased
2020-02-23 20:25:22 +01:00
whatdoineed2do/Ray
de665fc6c8
[daap] honor requests to sort by 'releasedate'
2020-02-23 20:25:22 +01:00
whatdoineed2do/Ray
78194807db
[db] add S_RELEASEDATE and idx
2020-02-23 20:25:22 +01:00
Christian Meffert
80921a71a4
Merge pull request #901 from whatdoineed2do/json-spotify-token-leak
...
Json spotify token leak
2020-02-22 08:27:32 +01:00
ejurgensen
b40e691e6e
[db] Fix memleak of mfi->url
...
Credit @whatdoineed2do
2020-02-16 21:16:33 +01:00
whatdoineed2do/Ray
3049b3e70e
[jsonapi] spotify token leak
2020-02-14 21:10:15 +00:00
ejurgensen
646dd44dd9
Silence unused var/func warnings for autogenerated ANTLR files
2020-02-08 21:24:25 +01:00
ejurgensen
f4cb0fb79d
[db] Error checking for alloc failure
2020-02-08 16:10:33 +01:00
ejurgensen
e9d1a2475e
[db] Fix memleak on error from prev commit
2020-02-08 15:17:34 +01:00
ejurgensen
541a1a6701
[db] Orphan nested playlists if parent is deleted/cleared
...
Also align db_pl_delete_bypath with db_pl_delete by making it a wrapper.
2020-02-08 13:41:26 +01:00
ejurgensen
84aced0a3d
[scan] Fix exit and error message if nested playlist is invalid
2020-02-08 13:38:24 +01:00
ejurgensen
6b007dcd26
[scan] Fixes for #d2f0d7b
...
* Don't treat m3u's with m3u URL's as nested playlists
* Dereference playlist paths in the m3u's
2020-02-08 12:11:14 +01:00
ejurgensen
5295d787ad
[scan] Change library_playlist_save return + fix Spotify
...
* fix Spotify invalid mem access
* fix clearing of Spotify files
2020-02-08 10:55:15 +01:00
ejurgensen
da29fa5f93
[scan] Make sure new, nested playlists are scanned
...
During scanning we might find a new, nested playlist (so inside another m3u),
which we will then save. When the scanner then reaches the actual playlist file,
we must make sure to scan the contents of it. This means the timestamp when
saving the first time has to be set to a dummy value.
2020-02-08 10:55:15 +01:00
ejurgensen
4b60da5fb4
[scan] Minor changes to smart pl scanner
2020-02-08 10:55:15 +01:00
ejurgensen
4c86798182
[scan] Fix bug added to iTunes scanner
...
Incorrect title for meta playlist used in commit 9be7d8f
2020-02-08 10:55:15 +01:00
ejurgensen
77a8de3bea
[scan] Fix db_pl_add() so it always returns correct id
2020-02-08 10:55:15 +01:00
ejurgensen
d94cf3f07f
[scan] Add option to let m3u tags override ICY metadata (issue #891 )
2020-02-08 10:55:15 +01:00
ejurgensen
cac4b14e6f
[conf] Add missing stdint.h include
2020-02-08 10:55:15 +01:00
ejurgensen
189370df91
[scan] Update smartpl scanner to use filescanner util functions
2020-02-08 10:55:15 +01:00
ejurgensen
2a69869816
[scan] Update iTunes scanner to use new filescanner util functions
2020-02-08 10:55:15 +01:00
ejurgensen
46a9114948
[scan] Support for nested playlists
...
Also includes some refactoring of the playlist filescanner and some
rearrangement of filescanner.c functions.
2020-02-08 10:55:15 +01:00
ejurgensen
ba1c536ca3
[library] Let library_media_save() return errors
2020-02-08 10:55:15 +01:00
ejurgensen
c5988665b0
[db] Expose db_pl_fetch_byid()
2020-02-08 10:55:15 +01:00
ejurgensen
abdc0d6d27
[library] Some refactoring of the library module
...
Misc refactoring, e.g. alignment of how modules save tracks and playlists, incl
use of mfi and pli. Also try to avoid direct calls between library and player.
2020-02-08 10:55:15 +01:00
ejurgensen
08e89ffd4f
[db] Use prepared statements for playlists (add/update)
2020-02-08 10:55:15 +01:00
ejurgensen
942628f914
[library] Check for all scanning methods in library_init()
2020-02-08 10:53:59 +01:00