diff --git a/Makefile.am b/Makefile.am index 817b7dfa..83a4d938 100644 --- a/Makefile.am +++ b/Makefile.am @@ -20,6 +20,7 @@ nobase_dist_doc_DATA = \ README_ALSA.md \ README_SMARTPL.md \ README_PLAYER_WEBINTERFACE.md \ + README_RADIO_STREAMS.md \ scripts/pairinghelper.sh EXTRA_DIST = \ diff --git a/README.md b/README.md index 11222830..f79a98ee 100644 --- a/README.md +++ b/README.md @@ -323,6 +323,10 @@ forked-daapd has support for smart playlists. How to create a smart playlist is documented in [README_SMARTPL.md](https://github.com/ejurgensen/forked-daapd/blob/master/README_SMARTPL.md). +If you're not satisfied with internet radio metadata that forked-daapd shows, +then you can read about tweaking it in +[README_RADIO_STREAMS.md](https://github.com/ejurgensen/forked-daapd/blob/master/README_RADIO_STREAMS.md). + ## Artwork diff --git a/README_RADIO_STREAMS.md b/README_RADIO_STREAMS.md new file mode 100644 index 00000000..43e52eef --- /dev/null +++ b/README_RADIO_STREAMS.md @@ -0,0 +1,97 @@ +# forked-daapd and Radio Stream tweaking + +Radio streams have many different ways in how metadata is sent. Many should +just work as expected, but a few may require some tweaking. If you are not +seeing expected title, track, artist, artwork in forked-daapd clients or web UI, +the following may help. + +First, understand what and how the particular stream is sending information. +ffprobe is a command that can be used to interegrate most of the stream +information. `ffprobe ` should give you some useful output, +look at the Metadata section, below is an example. + +``` + Metadata: + icy-br : 320 + icy-description : DJ-mixed blend of modern and classic rock, electronica, world music, and more. Always 100% commercial-free + icy-genre : Eclectic + icy-name : Radio Paradise (320k aac) + icy-pub : 1 + icy-url : https://radioparadise.com + StreamTitle : Depeche Mode - Strangelove + StreamUrl : http://img.radioparadise.com/covers/l/B000002LCI.jpg +``` + +In the example above, all tags are populated with correct information, no +modifications to forked-daapd configuration should be needed. Note that +StreamUrl points to the artwork image file. + + +Below is another example that will require some tweaks to forked-daapd, Notice +`icy-name` is blank and `StreamUrl` doesn't point to an image. + +``` +Metadata: + icy-br : 127 + icy-pub : 0 + icy-description : Unspecified description + icy-url : + icy-genre : various + icy-name : + StreamTitle : Pour Some Sugar On Me - Def Leppard + StreamUrl : https://radio.stream.domain/api9/eventdata/49790578 +``` + +In the above, first fix is the blank name, second is the image artwork. +### 1) Stream Name/Title +Set the name with an EXTINF tag in the m3u playlist file: + +``` +#EXTM3U +#EXTINF:-1, - My Radio Stream Name +http://radio.stream.domain/stream.url +``` + +The format is basically `#EXTINF:, - `. +Length is -1 since it's a stream, `` was left blank since +`StreamTitle` is accurate in the Metadata but `` was set to +`My Radio Stream Name` since `icy-name` was blank. + +### 2) Artwork (and track duration) +If `StreamUrl` does not point directly to an artwork file then the link may be +to a json file that contains an artwork link. If so, you can make forked-daapd +download the file automatically and search for an artwork link, and also track +duration. + +Try to download the file, e.g. with `curl "https://radio.stream.domain/api9/eventdata/49790578"`. +Let's assume you get something like this: + +``` +{ + "eventId": 49793707, + "eventStart": "2020-05-08 16:23:03", + "eventFinish": "2020-05-08 16:27:21", + "eventDuration": 254, + "eventType": "Song", + "eventSongTitle": "Pour Some Sugar On Me", + "eventSongArtist": "Def Leppard", + "eventImageUrl": "https://radio.stream.domain/artist/1-1/320x320/562.jpg?ver=1465083491", + "eventImageUrlSmall": "https://radio.stream.domain/artist/1-1/160x160/562.jpg?ver=1465083491", + "eventAppleMusicUrl": "https://geo.itunes.apple.com/dk/album/530707298?i=530707313" +} +``` + +In this case, you would need to tell forked-daapd to look for "eventDuration" +and "eventImageUrl" (or just "duration" and "url"). You can do that like this: + +``` +curl -X PUT "http://localhost:3689/api/settings/misc/streamurl_keywords_length" --data "{\"name\":\"streamurl_keywords_length\",\"value\":\"duration\"}" +curl -X PUT "http://localhost:3689/api/settings/misc/streamurl_keywords_artwork_url" --data "{\"name\":\"streamurl_keywords_artwork_url\",\"value\":\"url\"} +``` + +If you want multiple search phrases then comma separate, e.g. "duration,length". + + +If your radio station is not returning any artwork links, you can also just make +a static artwork by placing a png/jpg in the same directory as the m3u, and with +the same name, e.g. `My Radio Stream.jpg` for `My Radio Stream.m3u`.