Skip to main content

Chrome Extension: iPlayer to XMBC

There's a Chrome extension called Play To XBMC which adds a little button that will send a YouTube, Vimeo, or CollegeHumor video to XBMC - provided you have the YouTube plugin installed. This is a lot more convenient that using XBMC to search directly, if you don't have a keyboard plugged into the XBMC box.

The XBMC iPlayer plugin suffers from the same problem that browsing/searching aren't easy without a keyboard, so I wondered if I could make a chrome extension that would do the same for iPlayer.

Chrome extensions are packages of javascript, html, and image files that get unpacked by Chrome when they're installed. You make a Manifest file (which is a JSON file) that tells Chrome what icons to include, what sort of package it is, etc. The Play To XBMC extension is a browser one - the button is always there. I made mine page specific - it only appears on valid iPlayer episode pages. You do this by putting in a javascript page that runs in the background every time a tab is refreshed. My one identifies the url by looking for "/iplayer/episode/".

Then I stole the innards from the other extension. It uses LocalStorage to hold the password, etc., and a jQuery ajax request to send the JSON-RPC commands to xbmc. To add an iPlayer episode you add to the playlist the url: "plugin://plugin.video.iplayer/?pid=<8 character program id>", then cause the player to open and start the playlist.


Problem: The first AJAX command in a group would go off, the others never.
Solution: I was triggering the functions from onclick eventlisteners on links, but it seems to be incredibly difficult to consume the event completely so that the link doesn't trigger - which it was doing, causing the page to refresh and the javascript to stop running. I replaced the links with spans - I'll just make them look like links with CSS, I guess.


Problem: The site is always returning 401, even when you log in with the correct password.
Solution: You need to explicitly ask for permission to access sites using the manifest.json (adding "http://*/" to the permissions array). This is what signals Chrome to allow posting and sending basic authentication information to a site that isn't the site of origin (which an extension doesn't have, since it's running in the browser).

Problem: XBMC plays the first second or two of the playlist, then exits. It appears that moving a video onto the playlist works well. You can manually start it from the playlist and everything works fine. But starting it from the JSON-RPC command doesn't work - it just exits after a second or two, leaving the file on the playlist. The Play to XBMC extension doesn't seem to have this problem, and I can't work out what's different.
Solution: None yet.

Comments

Popular posts from this blog

4Store with Snorql on Raspberry Pi

Problem I need to access triple-store data for a work thing, but the data I have to test with isn't in their (sesame) triple store yet. There are RDF files, though. Solution Install 4Store on a pi (I had one with a default Raspbian running because it's the mumble server). sudo apt-get install 4store ...then I set up the 4store with instructions from here : sudo 4s-backend-setup saws sudo 4s-backend saws 4s-httpd saws then import the RDF files with a convoluted command: curl --verbose --header 'Content-type: application/rdf+xml' --upload-file MSH_Thales_Trans.rdf --url 'http://localhost:8080/data/http%3A%2F%2Fwww.purl.org%2Fsaws%2Fontology%23' (for each file - the url is the saws url encoded, the .rdf bit was done for each file). Then fix the RDF, because rapper rejects it all. To validate the RDF I used this: http://www.rdfabout.com/demo/validator/ Okay, now I can see things on the pi: http:// <pi ip address...

Mumble and Murmur on Raspberry Pi

Problem:  Skype kind of sucks for games night things. Potential Solution: People have suggested ventrilo, etc., but murmur (the mumble server) will run on a raspberry pi. As I have a few of them, I reimaged an SD card with the newest raspbian, then followed the instructions here: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=36&t=8615 If I put it in the DMZ, hopefully people from outside Nerdvana should be able to connect to it. It supports positional audio for games - I wonder if I could make a plugin that would just allow you to set your position, so that we could be around a virtual table with positional audio? ...Looks like there is: Mumble comes with a plugin for manually positioning audio. http://mumble.sourceforge.net/Games#Manual_Positional_Audio_Plugin