qooxtunes is a webinterface addon for XBMC. It leverages the powerful qooxdoo
framework to present the user with a RIA interface that emulates some of the
best features of iTunes for library management.
License: GNU General Public License v3.0
Python 19.37%JavaScript 80.63%
qooxtunes's Introduction
-------------------------------------------------------------------------------
qooxtunes
-------------------------------------------------------------------------------
qooxtunes is a webinterface addon for XBMC. It leverages the powerful qooxdoo
framework to present the user with a RIA interface that emulates some of the
best features of iTunes for library management. It currently only supports
music, but it could be extended to handle video and photos.
-------------------------------------------------------------------------------
server software
-------------------------------------------------------------------------------
qooxtunes is a unique webinterface addon in that it starts up a python-based web
service that runs on a separate TCP/IP port from the standard XBMC
JSON-RPC API.
This secondary web service is designed to do a few things that the standard
API does not provide:
- downloading song files in a ZIP archive
- listing m3u playlists
- reading/creating/editing/deleting m3u playlists and playlist folders
- saving metadata changes to multiple songs at once
The web service is found in qooxtunes-ws.py, and it uses some additional
libraries:
- SimpleJSONRPCServer.py (part of the jsonrpclib project,
https://code.google.com/p/jsonrpclib/)
- zipstream2.py (a quick-and-dirty modification to SpiderOak's zipstream
module, https://github.com/gourneau/SpiderOak-zipstream)
This web service brings with it some limitations:
- the code only works with XBMC Frodo, since it makes direct database
access; the filenames and/or schemas could change between versions
- the code currently only works with sqlite databases
- because the web service runs on another port from the main web
application, it is considered "cross-origin". The web service uses
the appropriate CORS headers, but be advised that some browsers
will not support this mechanism.
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
Obviously, I would love to get everything directly from the built-in
JSON-RPC API, but until all these features are available in the API, this
secondary web service will be required.
-------------------------------------------------------------------------------
client software
-------------------------------------------------------------------------------
The client software uses the qooxdoo framework (qooxdoo.org).
To build it, you need to download a copy of the library and unpack it into
the client/qx directory (e.g. client/qx/qooxdoo-3.0.1-sdk).
Then from the client directory, type "./generate.py build". If you want to
do any debugging, I recommend doing "./generate.py source-hybrid". This will
compile the necessary qooxdoo classes into an optimized JS file, but will leave
your class files separate for easy debugging.
You can deploy the code by running tools/deploy.sh. Note that you will need
to edit the file to set the appropriate path to your addon. This script will
also deploy the server-side python code.
The deploy script deploys the code in such a way that the build code (the
compiled and optimized code) is in the default location. But it also puts
the debuggable source version into place.
Access the build version at
http://localhost:8080/
Access the source version at
http://localhost:8080/source/
Note about SmartTableModel:
I included a copy of the SmartTableModel code in the source tree. We are not
actually using that copy during the build; the qooxdoo config.json
is configured to pull the SmartTableModel code from the contrib repo.
I just felt better having the source here as a "just in case" sort of thing.