Introducing calliope
Ever since I started playing with digital TV on my computer(s) 5-6 years ago, I’ve been intermittently messing around with the idea of writing a video recorder. Until now, I’ve mostly been using a set of perl scripts I hacked together in the early days. They Worked For Me, but there were several things they didn’t do well:
- No automatic allocation/resolution of recordings to specific tuners
- Only runs on one machine (i.e. won't handle several machines each with tuners in)
- Hard to change recording details once set
- No series link, or tracking of programmes when they move their weekly timeslot
- Poorly-structured metadata
(Before anyone asks, I’ve looked at MythTV, and it just doesn’t seem to work the way I want stuff to work. It’s a complete vertical application that includes a whole load of things I don’t need, and it doesn’t play at all well with my existing workflow. Besides, it’s fun to build things.)
I’d [several times] designed and partly-written a system (called calliope, for various reasons) to replace this. Each time I did it, I’d replace one of the hard bits from the previous design with some suitable off-the-shelf component (e.g. custom network API -> SOAP -> REST), and get a little further. Finally, it’s all come together after a rewrite from the original C++ to using python, and I have a working system.
So far, there’s a very basic web-based UI for setting and cancelling recordings; a central store for recordings; an allocation algorithm to work out what tuners to use for overlapping recordings; and a component to manage tuners. At the moment, it only solves points 1 and 2 on the list above, but the others will come with time.