milaq / YCast

Self hosted vTuner internet radio service emulation
Other
240 stars 93 forks source link

stations.yml with m3u links not working using Marantz IOS / Android App #85

Open Lightning1984 opened 3 years ago

Lightning1984 commented 3 years ago

Hi,

I'm Using a Marantz NR1605 AV Receiver.

When using m3u URIs the Station cannot be played using the IOS / Android app. When pressing the link the spinning wheel shows up for a while and then reverts to the station folder.

When starting the same station from the AVReceivers webinterface it works without any problem.

I have done a few Wireshark captures to try to understand whats going on. What i have found out so far is that when the stream is started from the Webinterface the receiver downloads and parses the m3u file and then opens the streaming URL defined in the file. When the same stream is started from the IOS/Android APP the receiver also downloads the file, but then somehow fails to parse the content. There is no attempt to dns resolve or open the streaming url made. The telnet interface of the AV Receiver at the same time shows "NSE1File Format Error"

I have tried to find a radiobrowser listed station that also lists a m3u or m3u8 file: This is one for example: stationuuid': '962c05c0-0601-11e8-ae97-52543be04c81', 'name': 'ElectroPop Music', 'url': 'http://listen.radionomy.com/electropop-music.m3u', 'url_resolved': 'http://streaming.radionomy.com/JamendoLounge'

For radiobrowser the solution is more or less simple, they offer a built in m3u m3u8 parser service, to use it one only needs to change

/usr/local/compile/ycast/YCast/ycast# diff radiobrowser.py radiobrowser.py.orig
28c28
<         self.url = get_json_attr(station_json, 'url_resolved')
---
>         self.url = get_json_attr(station_json, 'url')

I have however found radio stations that have an m3u link even in the "url_resolved" field.

For the stations.yml file one has to either manually parse all m3u links and only put the streaming URIs into the yml file or add a parser function to my_stations.py that will be called when a link has the m3u/m3u8 extension and returns the real streaming URI.

regards Rupert