JSON-RPC (JSON Remote Procedure Call) interface protocol in development for XBMC - Printable Version +- Kodi Community Forum (https://forum.kodi.tv) +-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32) +--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93) +---- Forum: JSON-RPC (https://forum.kodi.tv/forumdisplay.php?fid=174) +---- Thread: JSON-RPC (JSON Remote Procedure Call) interface protocol in development for XBMC (/showthread.php?tid=68263) Pages:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
- Nuka1195 - 2010-03-24 this may be fixed as i'm still pre merge. PHP Code: postdata = '{"jsonrpc": "2.0", "method": "Files.GetDirectory", "params": {"type": "video", "directory": "g:/media/trailers"}, "id": "1"}' the type parameter does not take affect. the list returns all files including .mov, .tbn, .nfo http://pastebin.com/cyL1yD6i - jez500 - 2010-03-25 will something like "VideoLibrary.GetActors" be available? - Clou42 - 2010-03-26 I'd still really like to see the UpdateLibrary(type, [path]) calls from the WebUI ported. - skeeter007 - 2010-03-27 I've spent 2 days trying to debug what's wrong with my app, but I've had no success. I'm using the Android device emulator to make an http post to http://10.0.2.2/jsonrpc with the json string: Code: {"method":"VideoLibrary.GetTVShows","params":{"fields":["title"]},"id":1,"jsonrpc":"2.0"} but the post is not going through. xbmc.log shows: Code: NOTICE: WebServer: POST | /jsonrpc and the json returned is a parse error, so clearly the post isn't getting through. I've modified the exact same Android code to post to another web server I have running on a different port, and I can see the post and the json string come through. Is there anything on the xbmc client side that would specifically prevent the Android emulator from posting data to the web server? Also frustrating is that I'm able to easily post to the server using python. - topfs2 - 2010-03-27 Which version are you running, there was a bug with multiple posts not getting through before but it should be fixed. Also if you could send me an example apk that would be great (have android here aswell). Cheers, Tobias - topfs2 - 2010-03-27 Nuka1195 Wrote:this may be fixed as i'm still pre merge. Seems like I have that problem aswell, will fix. Cheers, Tobias - skeeter007 - 2010-03-27 topfs2 Wrote:Which version are you running, there was a bug with multiple posts not getting through before but it should be fixed. I'm running the latest build from here: http://mirrors.xbmc.org/nightlies/win32/ The unsigned apk is here: http://cid-28cada7590855901.skydrive.live.com/self.aspx/Public/tv^_list.apk And here's where I make the post call: Code: public void onCreate(Bundle savedInstanceState) { Thanks for any help you can provide. This is driving me nuts! - skeeter007 - 2010-03-28 Whoops...completely my fault. I didn't have the latest build installed on my desktop. I've got 4 systems in the house and it's tough to keep track of xbmc across all of them! - skeeter007 - 2010-03-30 The new json methods are awesome- so much more lightweight than the previous xml stuff. Easier to parse, too. I'm also curious about the tcp socket implementation. Is that documented anywhere? Will the server support websockets or something similar for push notifications? - topfs2 - 2010-03-30 not sure what you mean by websockets but the tcp server can announce stuff like the old httpapi could, i.e. playback stopped and such. I've also added so a client can announce stuff aswell, so 2 clients can in theory communicate through this, however the communication is easily eavesdropped by a third client I mostly added it so a script could listen to events and report stuff, a reasonable usage scenario is the social aspect were a script could report love status and such, and since scripts can announce a backend script could easily announce "download finished" and so on. If there exist interest I'll add a real messaging system which can't be eavesdropped (well with wireshark it could, I doubt I'll add encryption, seems abit more like the clients doing but could be pursuaded to do add though). P.S Glad to see you got it working. Cheers, Tobias - narcan - 2010-03-31 Hey, Great to see an overhaul being made of the Web API. I'm a little late to the party it seems, but the progress made on the JSON interface looks nice and clean! I spent about 30 minutes with it on the iPhone remote, just starting down the path of implementing a few basic calls and in that time came across some things I found / had thoughts on: URL - Found the URL has to be /jsonrpc rather than /jsonrpc/ . Though when accessing either from the web browser as a GET it gives a 'File not found' error. Be nice we could access from either both paths or /jsonrpc gave an error to suggest it's the correct one to hit but requires POST data to submit. Just took me a couple of mins to figure out why I was getting no response, System.GetInfo - Is this intended to be synonymous with the HTTP API GetSystemInfo ? - Wondering if there is any way to get the info we used to be able to get from the GetSystemInfo command (maybe with a seperate command), such as the XBMC version and shuffle state (though see next point). Playlist.XXX - Can we get some methods to get the playlist state ? Such as Shuffle and Repeat status. MusicLibrary.GetGenres - Can this be implemented ? MusicLibrary.GetArtists - Crashing when passing genreid (if assuming I'm doing the correct thing) Code: {"jsonrpc":"2.0","params":{"genreid":"6"},"id":"1","method":"MusicLibrary.GetArtists"} Code: Thread 5 Crashed: Cheers, Dave Fumberger. - topfs2 - 2010-03-31 narcan Wrote:Hey, Thanks for the compliments. narcan Wrote:I spent about 30 minutes with it on the iPhone remote, just starting down the path of implementing a few basic calls and in that time came across some things I found / had thoughts on: Well tbh I don't think there is any convention to what url to post, Problems with allowing both is more that it could get confusing Anyways on the topic of GET, I doubt its in specification to handle it but I like the idea very much, I'll make it so on a GET of the correct URL will return an introspect or something usefull atleast. narcan Wrote:System.GetInfo Well the system is really against system underneath xbmc, i.e. osx and such. its abit confusing and perhaps the whole namespace should get revamped, however adding version and such I'll for sure do in XBMC.Foo narcan Wrote:Playlist.XXX Sure, I'm planning on doing a big revamp on the playlist handling soon so consider it subject to change (mostly thinking of splitting out active and nonactive playlists to seperate namespaces, i.e. VideoPlaylist.Shuffle and then have Playlist.GetItems(id ="/foo/bar.m3u") ) narcan Wrote:MusicLibrary.GetGenres I really want it in, there is some problems with xbmc core regarding genre IDs I need to overcome, will look at it asap! narcan Wrote:MusicLibrary.GetArtists Well tbh the whole genre stuff in jsonrpc is just there as a placeholder, I really should remove or fix so it works genreid needs to be an int but IIRC it doesn't even work if you specify the correct ID. Thank you for the valuable ideas. Cheers, Tobias - topfs2 - 2010-04-06 Ok, I've had a serious redo of many of the jsonrpc calls in r29062 -> r29085. Here are a number of the highlights. MusicPlayer -> AudioPlayer. NowPlaying playlist are now managed in AudioPlaylist and VideoPlaylist, essentially just switch Playlist(id = "video") to VideoPlaylist and it will work the same. Playlist can now handle playlists from disk and virtual ones (this is still in the works so the api is subject to change big time). Python can access jsonrpc with xbmc.executeJSONRPC. Players and playlists will have add and such that can take more than just a file, for instance webinterface now uses AudioPlaylist.Play("albumid" = X) to add and autoplay an album from musiclibrary (It might get moved to AudioPlayer.Play instead, not decided but the idea will exist somewere). Also you can use this in AudioPlaylist.Add and it will be possible to use in Playlists and such aswell. So AudioPlaylist.Add("playlist-virtual" = "foo") works. [Music|Video]Library.ScanForContent is added. I've made so you can get the /jsonrpc in http to check if json is available (if its compiled in). Cheers, Tobias - Clou42 - 2010-04-08 Hi, I just did a little addition to your ScanForContent method to allow an optional "path" parameter. I have four hard-drives in my HTPC and a normal Update will spin up all drives so I always use the version when adding something to the library. As it is a quite trivial patch I didn't know if opening a trac ticket is appropiate, so I pasted the diff here. I'd be glad if you could include it in the next version. Maybe for the Audio-Library as well. Keep up the great work Demian - sWORDs - 2010-04-09 edit running 29135 solved my problems. |