DisneyJr.. "No matching services found for..."

Greetings,

 

I'm trying to make a Disney Jr plugin. I'm not sure it is that hard, but I've never made a plugin before, and I don't really know python. (facepalm)

 

I first copied the Disney plugin and made the necessary name changes.

 

With some digging around, I found the JSON files to be: 

 

main -- http://disneyjunior.com/_grill/json

show info -- http://disneyjunior.com/_grill/json/mickey-mouse-clubhouse/video

specific video info -- http://disneyjunior.com/_grill/json/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd

 

I've gotten my code to the point such that I can load the channel and it actually shows the various shows. The problem comes when I click on the show.  At this point, the logfile shows:

2014-08-13 19:51:46,444 (109504000) : DEBUG (runtime:717) - Handling request GET /video/disneyjr
2014-08-13 19:51:46,446 (109504000) : DEBUG (runtime:814) - Found route matching /video/disneyjr
2014-08-13 19:51:46,447 (109504000) : DEBUG (base:125) - Checking if com.plexapp.plugins.disneyjr is broken
2014-08-13 19:51:46,449 (109504000) : DEBUG (networking:172) - Requesting 'http://127.0.0.1:32400/:/plugins/com.plexapp.system/messaging/function/X1N0b3JlU2VydmljZTpJc0NoYW5uZWxCcm9rZW4_/Y2VyZWFsMQoxCmxpc3QKMApyMAo_/Y2VyZWFsMQoxCmRpY3QKMQpzMjgKY29tLnBsZXhhcHAucGx1Z2lucy5kaXNuZXlqcnMxMAppZGVudGlmaWVycjAK'
2014-08-13 19:51:46,458 (109504000) : DEBUG (runtime:106) - Sending packed state data (109 bytes)
2014-08-13 19:51:46,458 (109504000) : DEBUG (runtime:918) - Response: [200] MediaContainer, 430 bytes
2014-08-13 19:51:46,484 (109504000) : DEBUG (runtime:717) - Handling request GET /video/disneyjr/videos?url=%2Fmickey-mouse-clubhouse%2Fvideo&thumb=http%3A%2F%2Fcdnvideo.dolimg.com%2Fcdn_assets%2F5ebf00516ff6cdfba3b3269500386b8e8d499b55.jpg&title=Watch+Mickey+Mouse+Clubhouse+Videos%21
2014-08-13 19:51:46,487 (109504000) : DEBUG (runtime:814) - Found route matching /video/disneyjr/videos
2014-08-13 19:51:46,487 (109504000) : DEBUG (networking:172) - Requesting 'http://disneyjunior.com/_grill/json//mickey-mouse-clubhouse/video'
2014-08-13 19:51:46,657 (109504000) : DEBUG (services:602) - No service found for URL 'http://disneyjunior.com/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd'
2014-08-13 19:51:46,657 (109504000) : DEBUG (services:617) - No matching services found for 'http://disneyjunior.com/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd'
2014-08-13 19:51:46,660 (109504000) : DEBUG (services:602) - No service found for URL 'http://disneyjunior.com/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd'
2014-08-13 19:51:46,660 (109504000) : CRITICAL (runtime:964) - Exception when constructing response (most recent call last):
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/components/runtime.py", line 945, in construct_response
el = result._to_xml()
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/objectkit.py", line 659, in _to_xml
el = Framework.modelling.objects.ModelInterfaceObjectContainer._to_xml(self)
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/modelling/objects.py", line 382, in _to_xml
root = Container._to_xml(self)
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/modelling/objects.py", line 139, in _to_xml
self._append_children(root, self._objects)
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/modelling/objects.py", line 145, in _append_children
el = obj._to_xml()
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/objectkit.py", line 572, in _to_xml
if self._core.services.function_in_service_is_deferred(Framework.components.services.MEDIA_OBJECTS_FUNCTION_NAME, service):
File "/Users/ob1/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/components/services.py", line 556, in function_in_service_is_deferred
service.sandbox.context.import_values(values)
AttributeError: 'NoneType' object has no attribute 'sandbox'

The main lines in the logfile that I'm wondering about in this long-winded question are these:

2014-08-13 19:51:46,657 (109504000) : DEBUG (services:602) - No service found for URL 'http://disneyjunior.com/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd'
2014-08-13 19:51:46,657 (109504000) : DEBUG (services:617) - No matching services found for 'http://disneyjunior.com/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd'
 

The reason this is perplexing, is that if I go to the url in question (http://disneyjunior.com/watch/donald-hatches-an-egg-4c40daff9e9f0d388e6e47bd) and click on the "Plex It!" button, it works which tells me that  somewhere there IS a service that can match that URL.

 

Any thoughts on how I can just use that service? Or am I waaay off base?

 

Thanks

I suspect that the Fallback URL Service is what matches those videos when using the PlexIt! button. Have you tried playing the videos from the PlexIt! queue? Based on the errors in your log, I would expect that even though the videos seem to get picked up, they won't play. You'll likely need to create an URL Service for the DisneyJunior website.

The videos play fine from the PlexIt! queue (on my Mac Mini running plex) but don't even show up on the iOS app. Is there a way to use the Fallback URL Service with channels? I'd be super fine with just doing that, as I've already exceeded the amount of time I have to work on this channel. I'd just like to be able to easily play Mickey Mouse Clubhouse on my TV for my daughter!

Very strange that it works via PlexIt but not via the channel. It appears to be encountering an error in the fallback service when doing the lookup on your local machine. Try forcing an update of the Services.bundle by stopping PMS, deleting the Services.bundle from the Plug-ins directory, then restarting PMS. It will automatically download the latest version and hopefully, that will fix the issue. If not, can you upload (or link) the code for your DisneyJr channel to help with the debugging?

Updating Services.bundle didn't change anything.

I did try one other thing that I figured I'd share:

[ob1@cine :: ~]$ curl "http://127.0.0.1:32400/system/services/url/lookup?url=http%3A%2F%2Fdisneyjunior.com%2Fwatch%2Fdonald-hatches-an-egg-4c40daff9e9f0d388e6e47bd"
<?xml version='1.0' encoding='utf-8'?>

  
    
      
        
        
      
    
  

Which is the same output if I look at the PlexIt! xml.

Here is my (crappy) code:

Info.plist

<?xml version="1.0" encoding="UTF-8"?>



	CFBundleIdentifier
	com.plexapp.plugins.disneyjr
	PlexClientPlatforms
	*
	PlexFrameworkVersion
	2
	PlexPluginRegions
	
		CA
		US
	


__init__.py --> http://pastebin.com/raw.php?i=7aYPsm2d

Thanks again.

Very strange indeed. Thanks for posting the code. I'll try to find some time to dig into it and see what's going on.

Alternatively, is there an easier way to just preferably use the Fallback Service alone with a plugin? Maybe I could give that a go.

This and this update make the existing Disney URL Service accept URLs for disneyjunior.com too. I've also updated the service, because there aren't any MP4 files available any longer, the HTTP Live Stream version is the next best thing.

That works great now! Thanks. 

Well, sorta. So now the Channel works on my iPhone after the above modifications, however, playing from either my OS X laptop (via PlexWeb) or from my Mac Mini (Plex Home Theatre) causes an error: Cannot load M3U8: crossdomain access denied

Any thoughts on the cause of this? And/or, is anyone willing to pick up where I am going to have to leave off for lack of time & skill?

The last thing: (I assume) since I copied Disney.bundle into my DisneyJR.bundle and then did the editing, it seems like they cannot co-exist in the Plug-ins folder. I assume it's because something is colliding but really don't have a clue, and I've made the edits I can think of to fix it without success. 

Here is what I've done so far with the .bundle -- http://copy.com/qCPKEoWZRqPv/Shared/DisneyJR.bundle.zip

That works great now! Thanks. 

Well, sorta. So now the Channel works on my iPhone after the above modifications, however, playing from either my OS X laptop (via PlexWeb) or from my Mac Mini (Plex Home Theatre) causes an error: Cannot load M3U8: crossdomain access denied

Any thoughts on the cause of this? And/or, is anyone willing to pick up where I am going to have to leave off for lack of time & skill?

The last thing: (I assume) since I copied Disney.bundle into my DisneyJR.bundle and then did the editing, it seems like they cannot co-exist in the Plug-ins folder. I assume it's because something is colliding but really don't have a clue, and I've made the edits I can think of to fix it without success. 

Here is what I've done so far with the .bundle -- http://copy.com/qCPKEoWZRqPv/Shared/DisneyJR.bundle.zip

Hey - the link you posed no longer exists. Any way at all you'd be willing to share your bundle? My kids would be most grateful :-)

https://dl.dropboxusercontent.com/u/23091/DisneyJR.bundle.zip

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.