DVD Metabase Code
Status: Alpha
Brought to you by:
jeff_cobb
For Installation instruction please read the INSTALL FILE. Hi, This is Jeff Cobb, author of the code in DVD Metabase. Welcome to the quick start guide; for the advanced user this should get you up and going with a minimum amount of effort so you can see what you can do with this. Use case: We have a simple yet robust video on demand system here at my house. It is essentially 4 TB of online storage shared over a pair of NFS shares feeding 1-n media display stations. Each station is a simple machine running either Debian or Ubuntu Linux. In either case each machine has Lirc (remote control software) coupled with Streamzap remotes and Oxine (portable onscreen display or OSD). Through the use of XML configuration files Oxine converts the directory structure of the online storage to a menu system. This simple setup gives us a lot of power and thanks to the simplicity a lot of configurability as well. However this does have a major missing bit of functionality which is how to get content into the system in a reliable and simple manner. Enter EZRip. EZRip started life as a collection of scripts to help automate the DVD->Digital format conversion. As over-achiever couch pototatoes we had a pretty decent DVD collection but even with a 5-disc changer it was just not working. Thus I hatched the idea for the video on demand system where your *entire* collection can be stored and played back on demand. I had to do it w/free software and COTS equipment, the cheaper the better. As a self-respecting geek house-hold, scrap hardware was not the issue; having never done it before, reliably transferring our collection to hard drive seemed like a huge step. Lots of experimentation lead to lots of scripts which lead to EZRip. In the beginning all I wanted it to do was to reliably find the movie track or just the episodes; when found the tracks would rip to a variety of formats. Once this became solid it became obvious that if it knew that a track was a movie (or episode, or extra feature or...) it could then apply special rip modes (like ripping feature films differently than say animation). Then more intelligence was added to help filter out garbage like repeated or "ghost" tracks on some RW media on home recorders. We record a lot of different things on TV and then use this tool to rip them to AVI file for further editing such as fast and easy commericial filtering. But the thing that kept kicking us in the rear was the fact that for all it did, I still wound up with TRACK_O1.AVI. Yeah hand-editing the file can be and was done but what about things like shows or worse, special feature discs? Enter DVD Metabase. I was playing around with some tools in libdvdread when I discovered the disc_id tool would generate a seemingly unique disc hash from a DVD. I have tried it with nearly a 1000 discs so far if not more and not a single collision. Anyhow, I figured if that worked, I could create a database of commerical disc metadata (initially just disc id, title, individual track names and types) that the ripper could consult and use so now where I was getting TRACK_01.AVI I now get alien_vs_predator.avi. In the case of television shows, it is in the format of disc name, XX_YYYYYY.avi where XX is the season episode number, 0-backfilled and YYY is a textual name. The fourth episode some show would look like 04_some_episode_title.avi. No, there is no magic here; the only data in the database is stuff from our personal collection. To make it easier I write a mini-server in Python to provide DVD metadata lookup services via XML-RPC at jbcobb.net:8000. EZRip now uses that to do the lookup; if the hash isn't in the database back here (or local if you like; you can run your own metabase server) you get the hold track01.avi thing. If you rip Indiana Jones and the Temple of Doom, it will create a temple_of_doom folder, rip the feature into it (indiana_jones_and_the_temple_of_doom.avi), then if there are extra features on the DVD, a "features" folder is created and all known extra features are ripped into that with proper names (gag_reel.avi, trailer.avi, etc). In other words, this tool helps semi-populate your video-on-demand system. The database on the back-end is SQLite3 and has more fields/tables for things like URLs to things (thinking links to trailers, maybe IMDB or other reference/cast info), reviews and specialized HandBrake settings. In ezrconfig.py, deffilters.ini there are a lot of ways to tweak how this tool interacts with HandBrake. The defaults are sane and "gets the job done" but the tweakers will want to check out the presets section for doing things like iPod conversion and so on.