JSON-RPC (JSON Remote Procedure Call) interface protocol in development for XBMC

  Thread Rating:
  • 8 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
Mizaki Offline
Fan
Posts: 685
Joined: Apr 2011
Reputation: 13
Post: #1861
I see there are some PRs which look good. I didn't see anything about playlists. Is that still on your radar?

The other thing (which I'll make a feature request for if you think it's doable) is getting the library in small chunks (5, 10 etc. items). As I've mentioned before people with low(er) powered PCs with large libraries can take a long (I'm guessing 15 seconds +) time to retrieve. I guess the DB query is the thing that takes the time so the only way to grab small chunks would be without sorting. Without sorting though it does limit how useful it would be.

I'm wondering if you think it's even possible atm?

[Image: watched-clearlogo.jpg]
AWXi - Ajax web interface. Wiki
find quote
joethefox Offline
Team-XBMC Member
Posts: 1,175
Joined: Nov 2010
Reputation: 21
Post: #1862
Hi all,
there a remote procedure call to obtain what user has chosen for the "Ignore article when sorting"?

Settings>Appearance>File Lists>Ignore article when sorting (e.g. "the") : ON/OFF
find quote
grywnn Offline
Donor
Posts: 379
Joined: Mar 2010
Reputation: 0
Location: Germany
Post: #1863
Hi there,
is it by design that VideoLibrary.getEpisodes prepends season and episode number in the label?
For example, GoTs awesome first episode of season two is labeled "The North Remembers", but using JSON i get "label": "2x01. The North Remembers".
Which looks pretty odd in listings because my application does its own numbering.
I've check my databse: This isn't a scraper issue. Episode names in the database are clear.

Nearly forgot:
git20120402 PVR build
(This post was last modified: 2012-04-07 09:17 by grywnn.)
find quote
jmarshall Offline
Team-XBMC Developer
Posts: 25,688
Joined: Oct 2003
Reputation: 169
Post: #1864
Yes, that's by design. Use the title field if you don't want it. The label field is an aggregate field that XBMC sets to a sensible default.

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


[Image: badge.gif]
find quote
N3MIS15 Offline
Donor
Posts: 495
Joined: Jul 2010
Reputation: 13
Location: Melbourne, VIC
Post: #1865
Montellese, are you planning on including thumbnail/fanart params to your FooLibrary.Set pull request? If so, are you also planning on making the remote images stored in the database available thru jsonrpc?

Also, while on the subject. I have been unable to change a movie set. I can only append, is there a way to replace or remove? Its quite possible im just doing something wrong, im fairly new to coding.
(This post was last modified: 2012-04-08 08:40 by N3MIS15.)
find quote
doozer Offline
Junior Member
Posts: 32
Joined: Jun 2011
Reputation: 0
Post: #1866
Hi All,

I'm using Playlist.GetItems to pull down the currently queued songs. This is working fine. I just tried doing a similar thing to get a list of queued movies. This also works, but I don't seem to be able to include the "movieid" value in the list. Is there a way to obtain a list of queued movies and their corresponding Library id?

Thanks,
Matt.
find quote
joethefox Offline
Team-XBMC Member
Posts: 1,175
Joined: Nov 2010
Reputation: 21
Post: #1867
Hi,
As well as MusicLibrary.GetAlbums where you can filter by artistid or genreid, there is a way to filter by genreid or actorid (castid?) when calling VideoLibrary.GetMovies or VideoLibrary.GetTVShows? Thank you for any answer.
(This post was last modified: 2012-04-09 09:31 by joethefox.)
find quote
Mizaki Offline
Fan
Posts: 685
Joined: Apr 2011
Reputation: 13
Post: #1868
(2012-04-09 09:15)joethefox Wrote:  Hi,
As well as MusicLibrary.GetAlbums where you can filter by artistid or genreid, there is a way to filter by genreid or actorid (castid?) when calling VideoLibrary.GetMovies or VideoLibrary.GetTVShows? Thank you for any answer.

http://trac.xbmc.org/ticket/12147 for genreid. castid and castid

[Image: watched-clearlogo.jpg]
AWXi - Ajax web interface. Wiki
(This post was last modified: 2012-04-09 15:19 by Mizaki.)
find quote
joethefox Offline
Team-XBMC Member
Posts: 1,175
Joined: Nov 2010
Reputation: 21
Post: #1869
thanks for the link, so we just have patience
(This post was last modified: 2012-04-09 17:38 by joethefox.)
find quote
Mizaki Offline
Fan
Posts: 685
Joined: Apr 2011
Reputation: 13
Post: #1870
Yep. I was going to try and do it manually for movies but I did other things instead Smile

[Image: watched-clearlogo.jpg]
AWXi - Ajax web interface. Wiki
find quote
joethefox Offline
Team-XBMC Member
Posts: 1,175
Joined: Nov 2010
Reputation: 21
Post: #1871
(2012-04-09 22:12)Mizaki Wrote:  Yep. I was going to try and do it manually for movies but I did other things instead Smile

like patching XBMC JSON API for VideoLibrary.GetMovies? Big Grin
(This post was last modified: 2012-04-10 12:29 by joethefox.)
find quote
Mizaki Offline
Fan
Posts: 685
Joined: Apr 2011
Reputation: 13
Post: #1872
I wish I could. I do JS badly at best Smile I was just going to take the genre from GetMovies and build the lists from that.

[Image: watched-clearlogo.jpg]
AWXi - Ajax web interface. Wiki
find quote
bradvido88 Offline
Donor
Posts: 781
Joined: Nov 2008
Reputation: 9
Location: MN
Post: #1873
In previous versions on XBMC (early Eden), when listing upnp:// directories (PlayOn is my upnp server in this example), xbmc would return the http:// path to the file in the "file" field.

Previously, i would get a http:// url:
Code:
http://127.0.0.1:63478/netflix-3fafe162-7ea8-4219-a789-c7367386b9d9/1-netflix-3fafe162-7ea8-4219-a789-c7367386b9d9.mpg

In Eden final, I get a upnp:// url
Code:
upnp://9306789e-2927-4a65-a08d-58a4c8337492/netflix%2d4620b511%2ded24%2d4921%2dae3a%2def450a4a07b3

Here is a sample from the xbmc log where i play a upnp:// path and it resolved it to http://
Code:
09:00:32 T:12672   DEBUG: CApplication::OnKey: return (f00d) pressed, action is Select
09:00:32 T:12672   DEBUG: CGUIWindowVideoBase::OnPlayMedia upnp://9306789e-2927-4a65-a08d-58a4c8337492/abc%2d1939a4d1%2d1a83%2d471e%2db529%2d90a690324a02
09:00:32 T:12672   DEBUG: CUPnPDirectory::GetResource - resource protocol info 'http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=257000​00000000000000000000000000'
09:00:32 T:12672   DEBUG: CPlayerCoreFactory::GetPlayers(http://127.0.0.1:63478/abc-1939a4d1-1a83-471e-b529-90a690324a02/1-abc-1939a4d1-1a83-471e-b529-90a690324a02.mpg)
09:00:32 T:12672  NOTICE: DVDPlayer: Opening: http://127.0.0.1:63478/abc-1939a4d1-1a83-471e-b529-90a690324a02/1-abc-1939a4d1-1a83-471e-b529-90a690324a02.mpg
The http:// is much more useful to me. Is there any way to resolve the upnp:// path into the http:// path that it references (using JSON-RPC)?
When I play the upnp:// file in XBMC, I can see from XBMC's log that it resolved the upnp:// path to a http:// path, then plays the http:// file.

XBMC.MyLibrary (add anything to the library)
ForTheLibrary (Argus TV & XBMC Library PVR Integration)
SageTV & XBMC PVR Integration
(This post was last modified: 2012-04-11 16:04 by bradvido88.)
find quote
topfs2 Offline
Team-XBMC Developer
Posts: 3,962
Joined: Dec 2007
Reputation: 9
Post: #1874
(2012-04-11 15:51)bradvido88 Wrote:  In previous versions on XBMC (early Eden), when listing upnp:// directories (PlayOn is my upnp server in this example), xbmc would return the http:// path to the file in the "file" field.

Previously, i would get a http:// url:
Code:
http://127.0.0.1:63478/netflix-3fafe162-7ea8-4219-a789-c7367386b9d9/1-netflix-3fafe162-7ea8-4219-a789-c7367386b9d9.mpg

In Eden final, I get a upnp:// url
Code:
upnp://9306789e-2927-4a65-a08d-58a4c8337492/netflix%2d4620b511%2ded24%2d4921%2dae3a%2def450a4a07b3

Here is a sample from the xbmc log where i play a upnp:// path and it resolved it to http://
Code:
09:00:32 T:12672   DEBUG: CApplication::OnKey: return (f00d) pressed, action is Select
09:00:32 T:12672   DEBUG: CGUIWindowVideoBase::OnPlayMedia upnp://9306789e-2927-4a65-a08d-58a4c8337492/abc%2d1939a4d1%2d1a83%2d471e%2db529%2d90a690324a02
09:00:32 T:12672   DEBUG: CUPnPDirectory::GetResource - resource protocol info 'http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=257000​00000000000000000000000000'
09:00:32 T:12672   DEBUG: CPlayerCoreFactory::GetPlayers(http://127.0.0.1:63478/abc-1939a4d1-1a83-471e-b529-90a690324a02/1-abc-1939a4d1-1a83-471e-b529-90a690324a02.mpg)
09:00:32 T:12672  NOTICE: DVDPlayer: Opening: http://127.0.0.1:63478/abc-1939a4d1-1a83-471e-b529-90a690324a02/1-abc-1939a4d1-1a83-471e-b529-90a690324a02.mpg
The http:// is much more useful to me. Is there any way to resolve the upnp:// path into the http:// path that it references (using JSON-RPC)?
When I play the upnp:// file in XBMC, I can see from XBMC's log that it resolved the upnp:// path to a http:// path, then plays the http:// file.

Problem with returning http in the file object is due to the fact that in accordance with upnp that path could change so its loosy for a client to cache, the upnp path is much nicer as that forces xbmc to do the lookup and decide what protocol to use (a upnp path could end up in several transport options and we can choose which is best, http, rtsp, samba etc and with several transcoding options). I haven't followed xbmc code closely with upnp but I'm guessing this was an internal url change to allow for scanning upnp stuff into the database (as that had the problem before that the http changed).

I'm guessing you want to resolve the upnp url to a http one so you could stream it in your client without going through xbmc? One way to do that would be to actually ask the upnp device about the transports, i.e. you ask it what we ask it. The downside being that you need to be on the same network (which you had to be before too) and that you need to talk upnp (which is actually just xml and http), the biggest problem is that you need to resolve the uuid into an IP, for that you'd need to do an ssdp lookup which requires more than http IIRC.

As for letting xbmc doing this resolve I'm not sure if it would be good, one could append different alternative file paths but knowing that they aren't garantued, kindof how upnp does with the transport. Or have a method you can call to xbmc to do that resolve (might be nicer to just do it in the initial file object fetch.)

EDIT: I guess I'm saying that you'd need to request that our internal filesystem directory calls provides alternative filepaths to the object, much as how upnp does. That way the jsonrpc could report those also. Not sure if we want to add that to our filesystem or not but could be worth a feature request. Might be nice for addon creators to be able to provide alternatives (as with stream details as quality etc.)

If you have problems please read this before posting

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


[Image: badge.gif]

"Well Im gonna download the code and look at it a bit but I'm certainly not a really good C/C++ programer but I'd help as much as I can, I mostly write in C#."
(This post was last modified: 2012-04-11 16:31 by topfs2.)
find quote
bradvido88 Offline
Donor
Posts: 781
Joined: Nov 2008
Reputation: 9
Location: MN
Post: #1875
(2012-04-11 16:26)topfs2 Wrote:  As for letting xbmc doing this resolve I'm not sure if it would be good, one could append different alternative file paths but knowing that they aren't garantued, kindof how upnp does with the transport. Or have a method you can call to xbmc to do that resolve (might be nicer to just do it in the initial file object fetch.)

Yes, I agree with what you said about how the http:// urls can change, but I'm trying to track if a particular upnp file has been watched, and XBMC stores watched status based on the http:// file path of the video, not the upnp:// path.
So, maybe that it a problem in and of itself for the way XBMC tracks upnp files in its database.

Still, it would be very useful to have a resolve method that will use XBMC's internal methods to change the upnp:// path to a tangible video file path (or just do this in the initial file object fetch).

XBMC.MyLibrary (add anything to the library)
ForTheLibrary (Argus TV & XBMC Library PVR Integration)
SageTV & XBMC PVR Integration
find quote
Post Reply