For further information, please look at the v2 page, which outlines the plan of action of rebuilding videdot.
Further update: (18th April 2004) Panic over. I've restored the files from just a few hours before the last work was done. That's a good few months saved.
Update: (28th March 2004) Due to a couple of unfortunate, simultaneous hard drive failures when moving some kit around, I've lost a few months work on the project. I've still got the version out of CVS, but changes weren't being checked back in routinely (because of the tortuous route to move data over ssh2 from a vanilla R5 box). This won't happen in future as the primary development box now runs Zeta, so has ssh2 and can talk to the CVS server. I'll still be testing under R5 though.
Overall status
The system can be manually poked to fetch XMLTV listings given an HTTP or file location, it stores these in the local filesystem and the Scheduler prioritises what to record and controls a single slave recorder. The recorded files are annotated with all the meta-data known about the programme, which can be used locally through the videdot API or converted back to XMLTV as required.
Major components needing work are the file-sharing and interface plug-in APIs; together with sample implementations (in particular a TV-screen-happy unified interfaces suitable for armchair use).
As of July 2003, the separate components have deflated back down to a sensible size, linking against a common library. The new library also does a version check to ensure that everything is configured properly, and has a pleasant conversation if they aren't. This gives us a simple install process (just run it and it might ask you a few things).
The largest outstanding piece of work that needs completing is a sensible installer, so that a code release would make sense.
See also - the schedule for upcoming releases.
Component status
- Fetcher Application
- Working, successfully fetches listings in the XMLTV format from a given HTTP or local file URI, parses them and stores information about each programme in an attributed, indexed file in the filesystem.
- Also stores channel information, in a file typed
application/x-vnd.videdot.channel (see data formats)
- Accepts new URIs on the command line or as messages
- ToDo:
- fix problem with Xerces lib port for BeOS that causes it to barf if there is a declared system ID in the XML file that it cannot handle. (Will add support for network protocols to the port)
- Fire a periodic message to trigger getting. Get listings from suitable Web service which takes parameters of when last fetched, which channels/packages and so forth.
- Handle timezones and languages more sensitively.
- Still need to handle tuning information, which is presently absent from the XMLTV spec. Will propose an extension to Ed Avis, and offer a db-backed Web site to manage channel information.
ShowProg mini-app
- Simple app to view single programme listings. Turns Tracker into a passable listings interface (similar to using BeOS' built-in mail client). Once flagging of programmes to record is added a basic useful system is in place.
ShowProg is basically a container for the ProgView that the main application will use, and is complete & ready for basic use.
- For people using these early versions on a BeOS desktop machine, integrates sensibly with Tracker and Drag & Drop.
ShowChannel mini-app
- Another stepping stone towards the fully-fledged listings app, gives you one day's listing for a single channel, and incorporates the single programme view from
ShowProg. There are controls to jump to any day there are listings for on the given channel.
- videdot application
- Using much the same approach as v1, but rewriting large sections of code to make suitably fast and light.
- Started importing some code from last time, but deferring further development until the scheduler and simple recording functionality is in place (hence
ShowProg and ShowChannel above).
- Scheduler
- Built as a looper running as a separate app, but could run within the main application if desired. Either way, it has it's own thread, and accepts messages addressed to it in the usual BeOS fashion.
- No longer using the Scheduler from last time, but instead something a lot lighter and smaller, but supporting a few new features. Notably, it now constructs a single query that also supports rules as well as explicit flagging of programmes. Prioritises to produce the list of programmes to be recorded, and fires messages according to the new scheme for pluggable recorders.
- Scripting hooks for plugins to question the scheduled recordings and generic notifications now work. Includes sample apps which use the system to show the upcoming shows at a terminal, on the local machine or in a Web browser.
- ToDo:
- Handle absent stop times, which listings sources may omit (as per the XMLTV spec)
- Recording hooks
- Any recorder needs to respond to a suite of messages, start with simple plugin which only knows the names of a few scripts (start, stop, change channel) and work up from there. Thus, there is a clean way to plug in different recording applications. Each application will also declare how many concurrent recordings it can handle, and for which channels. Thus, we could have a local stub driving a recorder running somewhere else, communicating by whatever protocol the add-on author sees fit.
- Basic Recorder is done, and accepts the defined suite of messages, handing them off to some simple bash/hey scripts. So, alternative recorders - if they desire - may just change the scripts, rather than having to cope with the full bmessaging fun.
- Peer-to-peer (p2p) support
- An outline scheme for handling arbitrary p2p networks is complete, and will be put online soon.
- Skeletal code is written for the p2p-roster which underpins the system. Once functionally complete will be published with the description.
- Supporting Web services
- Suggestions service - using Fi-toolkit, backed by PHP and PostgreSQL, as delivered for v1.
- Listings management - use Ed's XML TV perl code running periodically, plus Fi-toolkit/php/postgres interface for a supporting Web app
No comments yet. Add one.