Kodi Community Forum

Full Version: GSoC Proposal: XBMC Media Databases for handling metadata across multiple systems
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi guys,
I am a final year engineering student at BITS-Pilani, K.K. Birla Goa Campus, India. And I would like to present my proposal for GSoC 2013.


  1. XBMC Media Databases(XBMC MDB) and Improved handling of media info and metadata:
    All XBMC users that have multiple devices have this issue of maintaining their libraries as when the next device is booted the mismatch of path-names due change in the operating system causes the library to rescan everything and download all the media-info and a metadata that is linked to each. A concept called XBMC MDB can be maintained which keeps a track of the user's media library and by linking the Metadata to the Media rather than the file itself. This will improve the media handling capability of XBMC to avoid unnecessary redundant downloading of metadata, by improving cross system maintenance of the Media Library using XBMC MDB. XBMC MDB will help solve the issue by creating user's and system id's to identify each system. XBMC MDB can initially be done for local systems using simple databases and then later on expand it with cloud support for more users to interact with each other.

  2. XBMC Social Media Player: We can introduce the concept of watching media with friends and family without actually them being present in the same room as you. Embedded chat into the media. File syncing across devices and authenticating that the media files are similar to avoid any kind of mismatch while watching the media file.

How will I achieve this
  • XBMC's File and Library managers are very good. The existing mangers have this issue of breaking the user's library due to mismatch in the file indexing of sources and which causes XBMC to clean up the library by rescanning the entire library. And all the metadata related to the media is lost because of that. By keeping a record of all the Media that the User has accepted into his library. This way all the media info that the user has approved will exist and watermark over the info mentioning whether the media exists on disk or not. User's can create system ids and storage device ids so that the path is not restricted to the path name given by the OS. This initially can be only for local systems so that the database of the Library is portable. The security keys required for authenticating the user and his devices will need to exist on an external service like a cloud. Later on if the idea catches on we can use a social network to implement it or setup a semi-social networking service where the XBMC MDB can grow into a interaction forum for the users, a sort-of imdb.com but for XBMC.

  • XBMC Social Media Player can start as an add-on with a simple embedded XMPP chat. The main task of this is to compare the two files and to sync the media so that media plays in a synchronous manner. The support will only work with two users. To support more users we need to compare them based on the video and audio using a recognition engine written into XBMC as an addon. We can give support so that XBMC Social Player running on the system can recognize whether the media is from the same source like NetFlix, Itunes, etc. The Social Player can use the Python api's to write the comparison, syncing engine. We can also give support for media streaming, so that synching will not be an issue.

Goals and Benefits
The goal is to start off a XBMC Databases concept which will setup a social-networking base for XBMC users completely exclusive of actual social networking sites. The users will have a better handle of their media and can manage their media across systems. With the introduction of Social Media Player the users have a good movie theater/family TV experience for users that aren't in the same room.

What does it touch in XBMC
XBMC MDB metadata handling will touch upon the Scrappers in XBMC and the file and library managers. This won't affect the managers directly, all the XBMC MDB based metadata handling will be on a optional basis. The effect of this will happen only when toggled within the managers. The UI will remain the same but the list will have more categories that collect info from the storage devices.By setting up a local database for the handling of local systems the media info is available to all the systems having the same user id but different system ids.
XBMC Social Media Player will be completely based on python APIs and can be setup as an addon. This way the syncing engine can be written in easy. The media player UI will have a slight addition or a completely different UI to implement this. Keeping the default player undistrubed.

This will require C/C++ and the Python and the API for the front-end changes.
For the back-end we need SQL based databases and if/when requiredwe can setup cloud support for the XBMC MDB
Access to cloud services can aid to simplify the XBMC MDB support. We can use existing

Thank you for considering my proposal,
Name: Edwin Abraham
E-mail: [email protected]

P.S. I am a big Fan of XBMC. You guys rock!!
How are you planning to link the metadata to a "source device id" and how do you resolve, for a particular client ("device id"?) where the file is for playback?
As far as I understand about how the Media Library is populated by checking the File-names with the Scrapper info and then path-name is linked to the metadata.

Here we add one more layer of Indexing, that once a device is scanned the file manager will have indexed the files in the source. This is then checked with Scrapper to get the get the correct metadata. At this time instead of linking the metadata to the file-names, link them to a list of media library entries approved by the user in a local database. Now in the database there will be table for each Storage Device as to which files in the media library exists in the device. This table is updated each time after the media library scanned. The media library table will contain rows of media entry and the Storage IDs where they where found. When XBMC is opened it should run a simple check with local database for the media library and then the file index of the source linked to the storage device. This will give a list of media available in the storage device and hides the rest from view. The Storage IDs will be obtained while adding the source. This way when there is any change within the storage device the Media Library is undisturbed. We can provide a UI for the user to add/remove entries in the library.

This is the idea of how the lists might look like https://docs.google.com/file/d/0BzQfAxVh...sp=sharing
Also, you might want to change the name of your proposal =)

There's quite a following of people who are adamantly against any sort of Social Media integration (the Facebook/Twitter kind). I came in expecting to see that in your proposal so others might ignore it all together and it won't get the attention it deserves.
Bstrdsmkr thank you for your input.
I will start a new thread.
Thank you for your input.
I will rename it to XBMC Media DB and Social Media Player
(2013-04-17, 13:03)eddu1123 Wrote: [ -> ]Bstrdsmkr thank you for your input.
I will start a new thread.
Thank you for your input.
I will rename it to XBMC Media DB and Social Media Player

No need to rename.
Just open your OP and edit the name
(2013-04-17, 13:14)Martijn Wrote: [ -> ]
(2013-04-17, 13:03)eddu1123 Wrote: [ -> ]Bstrdsmkr thank you for your input.
I will start a new thread.
Thank you for your input.
I will rename it to XBMC Media DB and Social Media Player

No need to rename.
Just open your OP and edit the name

I am trying to change the topic name. But I can't seem to find where to change it in Control Panel.
Any suggestions as to where it is?
first post -> edit -> full edit -> see thread name
Thanx for your help.
(2013-04-17, 13:44)Martijn Wrote: [ -> ]first post -> edit -> full edit -> see thread name

Thank You for your help
I'd be careful about taking too much on.

Keep the project centred on one target or feature.
(2013-04-17, 14:54)zag Wrote: [ -> ]I'd be careful about taking too much on.

Keep the project centred on one target or feature.

Thanx for the advice
I will be focusing on the metadata handling across multiple systems. It's something I have been thinking of doing for a while.
At the end of the GSoC I will atleast start the Social Media Player development by creating a addon for a simple integrated chat.