Long Term - Improved Library and Database in XBMC?
#1
Lightbulb 
First, I know that no developer is going to want to take this on, since it's so deeply embedded into a lot of the current code, but perhaps it will inspire someone in some way.

I think a complete reworking of the library system would help XBMC a lot. I've used a lot of different HTPC applications and found that Meedio's library system worked extremely well, although there were a few problems with it. My ideas are based on Meedio, but will make note of the main deficiencies of it.

The library system in Meedio allowed users to create any type of library they wanted, with any number of definable fields (called keys). There were a few default keys, like id, filepath, etc, but I'd prefer that a unique id field be the only predefined key for a library. In reality, each library was just a SQLite table and the keys were the fields, which makes the most sense.

Each library could also have any number of importers that could work on it. These should be able to be applied in a specific order so file imports can be done before metadata lookups. For XBMC, each library could have any number of python script importers that would work on the data. An example: for a movie library, the first importer could simply copy all of the movie file data into the database based on the file/dir name. It could also pull in the path to folder.jpg or folder.tbn if it exists. The second importer could be an IMDB.com importer, which would first create all of the possible fields it can fill, and then loop through every record and do an IMDB lookup using the movie name. The third importer could use that data to hunt down a trailer for the movie and fill the trailer path accordingly.

The benefits are already clear: each importer only needs to do what it was specifically designed for and may be applied only to a specific library. This opens up the ability to have a library that holds any information we want: photos with exif info, apple movie trailers, sports scores, emulator games, phone book, etc. It makes it so the importers and library can handle all of the backend stuff while allowing the frontend to simply worry about displaying the information properly.

The final part of Meedio's library system that I liked was its ability to define views. This is similar to the movie library where you can select "By genre", "By actor", etc. Each of these would be a view with any number of steps in them. For example: the genre view would have steps of genre, title. An emulator view could have steps of consolesystem, genre, year, title, etc. These could be defined in advancedsettings to override the defaults for that specific library.

Like I said, it would be a lot of work switching everything over, but I think the benefits of having any information we want in a database table would be really cool. I only bring this up now because the switch to linux could actually make some of this possible since there's no memory restrictions at that point. I don't know if each additional database table takes additional ram on the xbox, but that would be one possible limitation.

The main drawback to this system in Meedio is that it was relatively complicated for users to set up their libraries and apply the proper importers for each, with the proper settings for each of those. If it could be automated to some extent by having the python importers automatically create the library, fields, and default views, then I don't think that would be as big of a deal.

Ok... time for me to duck while spiff, jm, and others throw stuff at me. Smile
Reply
#2
Question 
szsori Wrote:I've used a lot of different HTPC applications and found that Meedio's library system worked extremely well, although there were a few problems with it. My ideas are based on Meedio, but will make note of the main deficiencies of it.
Are you refering to MeediOS which is open source, or Meedio which is closed source (and abandoned)? Though if you are only refering to the database part then those two are just two branches/forks of the same code.

I guess szsori already know this but others may not know that Meedio used to be an open source project but then Yahoo went and purchased the intellectual property (IP) of Meedio in 2006, (though they did not purchase the product). It didn't go so well for Yahoo's Meedio version and that software was abandoned (and that original source is still closed).

However, the original authors of Meedio recently started a new free open source HTPC project called MeediOS, continuing the plugin development, cloned the Meedio Add-In Directory (MAID), and the Meedio database.

More on the database:
http://www.meedios.com/wiki/index.php?ti...management
Reply
#3
It isn't going to happen unless a decent database developer stumps up with how to do it and is prepared to put it into action. Even then I suspect that much of the Meedio interface is way over the top. Users do NOT want to have to know all about "views" and so on to use their media center. User interface design is all about making the decision for the user. Any decision the user has to make must not get in the way of the user's experience. With that said, I'm prepared to entertain the thoughts (and actions) of any person with real database development experience.

Cheers,
Jonathan
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
Reply

Logout Mark Read Team Forum Stats Members Help
Long Term - Improved Library and Database in XBMC?0