@
fivebanger
I can't miss the opportunity...
Just installed your addon and I have a question, which is similar to my post a bit higher, but larger:
How to start playing radiostation remotely - which means 'from commandline from another device' ?
- Is there json-rpc interface to start playing?
- or can I play it from python script with imported xbmc module (this script may be called by another, remote one, via ssh with keys)
- or I maybe its possible to play station from another custom addon?
I need only few functions: play particular station from "My Stations" (it's ok to hardcode the chosen one as far as I can create multiple links/scripts/whatever), change to another one (which probably means the same, because playing new station cancels the current one) and stop playing (which is, as far as I understand, player related, not addon itself?) So I understand that I'm asking for one thing only.
(2024-05-25, 23:10)fivebanger Wrote: [ -> ].......
You can add a custom station by tweaking the "stations.jsn", providing a data set with a blank "id". An example is shown at https://github.com/fivebanger/kodi_addons/issues/2:
{"data": {"id": "", "name": "my custom station", "icon_url": "http://my_custom_station.url/icon.jpg", "stream_url": "http://my_custom_station.url/stream.mp3"}, "mode": "play_stream"}
......
Thanks a lot for the good work and quick answers, everything working perfectly fine now!
...my bad, I was just putting one space/blank as "id" instead of empty field
@
andrkac
Pls. follow up this issue:
https://github.com/fivebanger/kodi_addons/issues/3
I'll add the possibility to call the radio.de add-on by just providing the "id" which makes the json-rpc call more easy with the next version.
To get the string to use for json-rpc "file" parameter in the current version, pls. enable "logging" and play a station. Have a look at Kodi's log file and search for "plugin://plugin.audio.radiode/?mode=play_stream" to get the complete html quoted string which needs to get provided for "file".
Probably I have lack of basic knowledge...
I've found all (I hope) data I need, created script on kodi device with samples as you wrote in github:
I have built string like this:
{"jsonrpc":"2.0","method":"Player.Open","params": { "item": { "file": "plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C"} }, "id": 1}
...and - how to use it properly?
It does not work in browser
http://IPADDR:8080/jsonrpc?request={%22j...id%22:%201}
Response: {"error":{"code":-32700,"message":"Parse error."},"id":null,"jsonrpc":"2.0"}
In log I can see
JSONRPC: Failed to parse '{"jsonrpc":"2.0","method":"Player.Open","params": { "item": { "file": "plugin://plugin.audio.radiode/?mode=play_stream'
So, '&' is not correctly decoded - I've changed it to &, but result is the same.
Same from python scripts when I can easily use for example: {"jsonrpc":"2.0","method":"Application.SetVolume","params":{"volume":"increment"},"id":1 } to increment volume
It causes as below.
What to do?
Quote:2024-05-26 15:49:42.494 T:659454 debug <CWebserver[8080]>: request received for /jsonrpc
2024-05-26 15:49:42.494 T:659454 debug <general>: JSONRPC: Incoming request: {"jsonrpc":"2.0","method":"Player.Open","params": { "item": { "file": "plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C"} }, "id": 1}
2024-05-26 15:49:42.530 T:1718 debug <general>: CScriptRunner: running add-on script Radio.de('plugin://plugin.audio.radiode/', '58', '?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C')
2024-05-26 15:49:42.530 T:659455 debug <general>: Thread LanguageInvoker start, auto delete: false
2024-05-26 15:49:42.530 T:659455 debug <general>: initializing python engine.
2024-05-26 15:49:42.530 T:659455 debug <general>: CPythonInvoker(339, /storage/.kodi/addons/plugin.audio.radiode/addon.py): start processing
2024-05-26 15:49:42.551 T:659456 debug <general>: Thread ScriptObs start, auto delete: false
2024-05-26 15:49:42.573 T:659455 debug <general>: -->Python Interpreter Initialized<--
2024-05-26 15:49:42.573 T:659455 debug <general>:
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339, /storage/.kodi/addons/plugin.audio.radiode/addon.py): the source file to load is "/storage/.kodi/addons/plugin.audio.radiode/addon.py"
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): full python path:
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): custom python path:
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /storage/.kodi/addons/plugin.audio.radiode
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /storage/.kodi/addons/script.module.certifi/lib
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /storage/.kodi/addons/script.module.chardet/lib
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /storage/.kodi/addons/script.module.idna/lib
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /storage/.kodi/addons/script.module.requests/lib
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /storage/.kodi/addons/script.module.urllib3/lib
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): default python path:
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /usr/lib/python311.zip
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /usr/lib/python3.11
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /usr/lib/python3.11/lib-dynload
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): /usr/lib/python3.11/site-packages
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): adding args:
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): plugin://plugin.audio.radiode/
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): 58
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): ?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339): resume:false
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339, /storage/.kodi/addons/plugin.audio.radiode/addon.py): entering source directory /storage/.kodi/addons/plugin.audio.radiode
2024-05-26 15:49:42.573 T:659455 debug <general>: CPythonInvoker(339, /storage/.kodi/addons/plugin.audio.radiode/addon.py): instantiating addon using automatically obtained id of "plugin.audio.radiode" dependent on version 3.0.0 of the xbmc.python api
2024-05-26 15:49:42.751 T:1718 debug <general>: ------ Window Init (DialogBusy.xml) ------
2024-05-26 15:49:42.778 T:659455 debug <CAddonSettings[0@plugin.audio.radiode]>: trying to load setting definitions from old format...
2024-05-26 15:49:42.781 T:659455 info <general>: Skipped 1 duplicate messages..
2024-05-26 15:49:42.781 T:659455 debug <general>: [Radio.de]: Dispatcher AddOn args: {'mode': 'play_stream', 'data': '{"id": "dalmacija",'}
2024-05-26 15:49:42.783 T:659455 error <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'json.decoder.JSONDecodeError'>
Error Contents: Expecting property name enclosed in double quotes: line 1 column 20 (char 19)
Traceback (most recent call last):
File "/storage/.kodi/addons/plugin.audio.radiode/addon.py", line 15, in <module>
dispatcher.route()
File "/storage/.kodi/addons/plugin.audio.radiode/addon_utils.py", line 127, in route
data = json.loads(data)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/__init__.py", line 346, in loads
File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
File "/usr/lib/python3.11/json/decoder.py", line 353, in raw_decode
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 20 (char 19)
-->End of Python script error report<--
2024-05-26 15:49:42.784 T:659455 debug <general>: onExecutionDone(339, /storage/.kodi/addons/plugin.audio.radiode/addon.py)
2024-05-26 15:49:42.784 T:1718 debug <general>: ------ Window Init (DialogNotification.xml) ------
2024-05-26 15:49:42.801 T:659455 debug <general>: .
2024-05-26 15:49:42.850 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync check blocking
2024-05-26 15:49:42.860 T:659455 debug <general>: Python interpreter stopped
2024-05-26 15:49:42.860 T:659455 debug <general>: Thread LanguageInvoker 140225347040960 terminating
2024-05-26 15:49:42.863 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync sleep: 12497
2024-05-26 15:49:42.872 T:659456 debug <general>: Thread ScriptObs 140224382121664 terminating
2024-05-26 15:49:42.879 T:1718 debug <general>: ------ Window Deinit (DialogBusy.xml) ------
2024-05-26 15:49:52.497 T:1718 debug <general>: ------ Window Deinit (DialogNotification.xml) ------
@
andrkac Your JSON-rpc call will not work for at least two reasons:
1.:
As mentioned in the issue, calling the radio.de add-on with just the "id" is not supported yet (will add to next version).
2.:
The JSON-rpc "file" data you provide is erroneous:
from your log
{"jsonrpc": "2.0", "id": 1, "method": "Player.Open", "params": {"item": {"file": "plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C"}}}
vs.
{"jsonrpc": "2.0", "id": 1, "method": "Player.Open", "params": {"item": {"file": "plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%7D"}}}
Pls. note "%2C" vs. "%7D" at the end, which will result in "," vs. "}".
An example string for JSON-rpc "file" for the current version of the add-on would look like:
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22rockantenne%22%2C+%22name%22%3A+%22ROCK+ANTENNE%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2F31%2F87%2F9112%2F1%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fstream.rockantenne.de%2Frockantenne%2Fstream%2Fmp3%3Faw_0_1st.playerid%3Dradio.de%22%7D
I've recaught data and tried once again.
And now, it works for me for part of stations I need:
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22eskarockkk%22%2C+%22name%22%3A+%22Eska+ROCK%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fa1%2Fce%2F185227%2F1%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fwaw.ic.smcdn.pl%2F5380-1.mp3%22%7D
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22antywawa%22%2C+%22name%22%3A+%22Antyradio%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fce%2F18%2F13139%2F1%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fan03.cdn.eurozet.pl%2Fant-web.mp3%22%7D
...but still not for others:
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C+%22name%22%3A+%22Radio+Dalmacija%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fee%2Ff1%2F12665%2F1%2Fc300.png%22%2C+%22stream_url%22%3A+%22http%3A%2F%2Fshoutcast.pondi.hr%3A8000%2Fstream%2F1%2F%22%7D
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22meloradio%22%2C+%22name%22%3A+%22Meloradio%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fc4%2F1a%2F106362%2F4%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fplayerservices.streamtheworld.com%2Fapi%2Flivestream-redirect%2FMELORADIOAAC.aac%22%7D
I see difference between them: the working ones are streamed as ".mp3", same as your example
The not working are ".aac".
Maybe this is the issue?
Started from GUI works as needed.
(2024-05-26, 21:07)andrkac Wrote: [ -> ]...but still not for others:
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22dalmacija%22%2C+%22name%22%3A+%22Radio+Dalmacija%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fee%2Ff1%2F12665%2F1%2Fc300.png%22%2C+%22stream_url%22%3A+%22http%3A%2F%2Fshoutcast.pondi.hr%3A8000%2Fstream%2F1%2F%22%7D
plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22meloradio%22%2C+%22name%22%3A+%22Meloradio%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fc4%2F1a%2F106362%2F4%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fplayerservices.streamtheworld.com%2Fapi%2Flivestream-redirect%2FMELORADIOAAC.aac%22%7D
I see difference between them: the working ones are streamed as ".mp3", same as your example
The not working are ".aac".
Maybe this is the issue?
Started from GUI works as needed.
Without a log-file it's all just guessing.... Both calls from your post (the ones not working for you) works on my side when providing them as JSON-rpc "file" parameter.
I guess it's something here, here's the difference to working ones:
Quote:2024-05-26 22:48:56.585 T:660162 debug <general>: Python interpreter stopped
2024-05-26 22:48:56.585 T:660162 debug <general>: Thread LanguageInvoker 140225347040960 terminating
2024-05-26 22:48:56.686 T:1718 debug <general>: CCurlFile::GetMimeType - <https://25223.live.streamtheworld.com:443/MELORADIOAAC.aac> -> audio/aacp
2024-05-26 22:48:56.686 T:1718 warning <general>: Play: ListItem type must be audio or video type. The type can be specified by using ListItem::getVideoInfoTag or ListItem::getMusicInfoTag, in the case of playlist entries by adding #KODIPROP mimetype value.
2024-05-26 22:48:56.789 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync check blocking
2024-05-26 22:48:56.802 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync sleep: 12018
In case of working one there is no line like the one started with "Play: ListItem type must be audio or video type(...)"
Looks that aac is not recognized as audio/video (but why it works from GUI?)
I don't see proper codec addon or tream addon on my system...
Entire log below:
Quote:2024-05-26 22:48:54.515 T:660161 debug <CWebserver[8080]>: request received for /jsonrpc
2024-05-26 22:48:54.515 T:660161 debug <general>: JSONRPC: Incoming request: {"jsonrpc":"2.0","method":"Player.Open","params": { "item": { "file": "plugin://plugin.audio.radiode/?mode=play_stream&data=%7B%22id%22%3A+%22meloradio%22%2C+%22name%22%3A+%22Meloradio%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fc4%2F1a%2F106362%2F4%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fplayerservices.streamtheworld.com%2Fapi%2Flivestream-redirect%2FMELORADIOAAC.aac%22%7D"} }, "id": 1}
2024-05-26 22:48:54.553 T:1718 debug <general>: CScriptRunner: running add-on script Radio.de('plugin://plugin.audio.radiode/', '83', '?mode=play_stream&data=%7B%22id%22%3A+%22meloradio%22%2C+%22name%22%3A+%22Meloradio%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fc4%2F1a%2F106362%2F4%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fplayerservices.streamtheworld.com%2Fapi%2Flivestream-redirect%2FMELORADIOAAC.aac%22%7D')
2024-05-26 22:48:54.553 T:660162 debug <general>: Thread LanguageInvoker start, auto delete: false
2024-05-26 22:48:54.553 T:660162 debug <general>: initializing python engine.
2024-05-26 22:48:54.554 T:660162 debug <general>: CPythonInvoker(378, /storage/.kodi/addons/plugin.audio.radiode/addon.py): start processing
2024-05-26 22:48:54.574 T:660163 debug <general>: Thread ScriptObs start, auto delete: false
2024-05-26 22:48:54.589 T:660162 debug <general>: -->Python Interpreter Initialized<--
2024-05-26 22:48:54.589 T:660162 debug <general>:
2024-05-26 22:48:54.589 T:660162 debug <general>: CPythonInvoker(378, /storage/.kodi/addons/plugin.audio.radiode/addon.py): the source file to load is "/storage/.kodi/addons/plugin.audio.radiode/addon.py"
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): full python path:
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): custom python path:
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /storage/.kodi/addons/plugin.audio.radiode
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /storage/.kodi/addons/script.module.certifi/lib
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /storage/.kodi/addons/script.module.chardet/lib
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /storage/.kodi/addons/script.module.idna/lib
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /storage/.kodi/addons/script.module.requests/lib
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /storage/.kodi/addons/script.module.urllib3/lib
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): default python path:
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /usr/lib/python311.zip
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /usr/lib/python3.11
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /usr/lib/python3.11/lib-dynload
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): /usr/lib/python3.11/site-packages
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): adding args:
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): plugin://plugin.audio.radiode/
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): 83
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): ?mode=play_stream&data=%7B%22id%22%3A+%22meloradio%22%2C+%22name%22%3A+%22Meloradio%22%2C+%22icon_url%22%3A+%22https%3A%2F%2Fd3kle7qwymxpcy.cloudfront.net%2Fimages%2Fbroadcasts%2Fc4%2F1a%2F106362%2F4%2Fc300.png%22%2C+%22stream_url%22%3A+%22https%3A%2F%2Fplayerservices.streamtheworld.com%2Fapi%2Flivestream-redirect%2FMELORADIOAAC.aac%22%7D
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378): resume:false
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378, /storage/.kodi/addons/plugin.audio.radiode/addon.py): entering source directory /storage/.kodi/addons/plugin.audio.radiode
2024-05-26 22:48:54.590 T:660162 debug <general>: CPythonInvoker(378, /storage/.kodi/addons/plugin.audio.radiode/addon.py): instantiating addon using automatically obtained id of "plugin.audio.radiode" dependent on version 3.0.0 of the xbmc.python api
2024-05-26 22:48:54.774 T:1718 debug <general>: ------ Window Init (DialogBusy.xml) ------
2024-05-26 22:48:54.787 T:660162 debug <CAddonSettings[0@plugin.audio.radiode]>: trying to load setting definitions from old format...
2024-05-26 22:48:54.790 T:660162 info <general>: Skipped 1 duplicate messages..
2024-05-26 22:48:54.790 T:660162 debug <general>: [Radio.de]: Dispatcher AddOn args: {'mode': 'play_stream', 'data': '{"id": "meloradio", "name": "Meloradio", "icon_url": "https://d3kle7qwymxpcy.cloudfront.net/images/broadcasts/c4/1a/106362/4/c300.png", "stream_url": "https://playerservices.streamtheworld.com/api/livestream-redirect/MELORADIOAAC.aac"}'}
2024-05-26 22:48:54.873 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync check blocking
2024-05-26 22:48:54.886 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync sleep: 13001
2024-05-26 22:48:56.492 T:660162 info <general>: [Radio.de] play stream Meloradio, url: https://25223.live.streamtheworld.com:44...DIOAAC.aac
2024-05-26 22:48:56.503 T:660162 warning <general>: Setting most music properties through ListItem.setInfo() is deprecated and might be removed in future Kodi versions. Please use the respective setter in InfoTagMusic.
2024-05-26 22:48:56.520 T:660162 debug <general>: CPythonInvoker(378, /storage/.kodi/addons/plugin.audio.radiode/addon.py): script successfully run
2024-05-26 22:48:56.520 T:660162 debug <general>: onExecutionDone(378, /storage/.kodi/addons/plugin.audio.radiode/addon.py)
2024-05-26 22:48:56.535 T:1718 debug <general>: ------ Window Deinit (DialogBusy.xml) ------
2024-05-26 22:48:56.535 T:660163 debug <general>: Thread ScriptObs 140224405427904 terminating
2024-05-26 22:48:56.536 T:1718 debug <general>: easy_acquire - Created session to https://25223.live.streamtheworld.com
2024-05-26 22:48:56.537 T:660162 debug <general>: .
2024-05-26 22:48:56.585 T:660162 debug <general>: Python interpreter stopped
2024-05-26 22:48:56.585 T:660162 debug <general>: Thread LanguageInvoker 140225347040960 terminating
2024-05-26 22:48:56.686 T:1718 debug <general>: CCurlFile::GetMimeType - <https://25223.live.streamtheworld.com:443/MELORADIOAAC.aac> -> audio/aacp
2024-05-26 22:48:56.686 T:1718 warning <general>: Play: ListItem type must be audio or video type. The type can be specified by using ListItem::getVideoInfoTag or ListItem::getMusicInfoTag, in the case of playlist entries by adding #KODIPROP mimetype value.
2024-05-26 22:48:56.789 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync check blocking
2024-05-26 22:48:56.802 T:1718 debug <general>: CGLContextEGL::SwapBuffers: sync sleep: 12018
The issue seems not to be related to the JSON-rpc call. As you can see the add-on is called in a proper way and in the same way it would get called when clicking to the station in Kodi's gui:
2024-05-26 22:48:54.790 T:660162 debug <general>: [Radio.de]: Dispatcher AddOn args: {'mode': 'play_stream', 'data': '{"id": "meloradio", "name": "Meloradio", "icon_url": "https://d3kle7qwymxpcy.cloudfront.net/images/broadcasts/c4/1a/106362/4/c300.png", "stream_url": "https://playerservices.streamtheworld.com/api/livestream-redirect/MELORADIOAAC.aac"}'}
It seems that Kodi does not know how to handle this stream, even though the mime-type was detected as audio/aacp according to the trace. Best guess regarding JSON-rpc call vs. direct call: When calling the item directly, a list was build before where the item (i.e. the station) was added as a item-type "music" which is missing when calling the function via JSON-rpc. No idea why only some stations are affected from that issue, but maybe this is related to aac streams indeed. Even more suspicious, some of the stations causing problems running without an issue when calling via JSON-rpc on a Windows system (Kodi v20.2). I have to check if I can find a solution to fix that issue inside the add-on's source code.
I'm not that familiar with JSON-rpc but I have seen some solutions where you first add the item you want to play to the music playlist and then start the player pointing to the playlist. I don't know if this would work as a workaround (or if this would be the best practice approach at all).
@
andrkac for longer log snippets (and indeed full logs) can you please use the paste site (paste.kodi.tv - copy/paste the log text there, press the save icon and then give the url that will open here so people can refer to the text)?
Quoting a few lines is fine, but bigger chunks of log text add unneccessary bloat to the forum database, which we prefer to avoid where possible.
@
fivebanger
Maybe Windows has some mimetype service which is used by Kodi and Librelec (used by me) relays only on internal libreelec things. Just guessing.
However, if you need a tester, fell free to ping me.
@
DarrenHill
Of course, I will do it next time. Sorry for that.
EDIT: OMG - Sorry also for multiposting. I can join two posts, but I don't know how to remove one.
@
fivebanger
Is there any possibility that your version might get added to the official Kodi repo at some point?
I'd certainly start giving it a try if it did.
I run Kodi on an Nvidia Shield and trying to install stuff from zip files or a third party repo is really rather fiddly using a remote and/or smartphone interface.
Hi. I've tried the few forks mentioned in this thread (and a sincere thank you to the contributors for the effort). It's correct but not perfect for my needs. Then I came across the RadioChomik addon. Hallelujah. All my favorite stations are working again. Especially the addon is powered via an API (
www.radio-browser.info) and not via scraping, so it's seems more reliable. Voilà. My 2 cents.
(2024-05-28, 12:18)bizounage Wrote: [ -> ]...
Especially the addon is powered via an API (www.radio-browser.info) and not via scraping, so it's seems more reliable.
...
Errr.... No. Neither the original radio add-on (the "old" one from the OP), nor one of the successors discussed here recently are based on scraping. They are using/have used the API from radio.de or radio.net rep. which is returning a clear JSON data set in a similar manner than the radio-browser API. Just to not confuse others. Whether they are more or less reliable compared to others is another question.