TiVo Multitasker
David.Blackledge.com > TiVo >
My Multitasker environment allows programmers to trivially add to their own application: music playing,
ticker tape, background images, brand display, configuration page, and more in the future. Each feature supports
plugins to provide the content (music sources, ticker text sources, image sources, brand updaters...) so programmers can
add to each other's programs that way. It also includes a bunch of features to simply the job of the programmer, including a Callback architecture to simply the "animation chaining" concept in HME.
Feel free to download these and use them for your own TiVos. Drop me a line to let me know you're using them or what could be different, or if you want other information
The above will get their own explanatory pages eventually.
Sample global default properties file, Sample LOLcats slideshow properties file - put them in your "home" directory... e.g. C:\Documents and Settings\Owner
Check out the JavaDoc.
WARNING: I have had program crashes and TiVo crashes with this software in the past...I try hard to prevent them, but some stuff hasn't gotten fixed. Use at your own risk - it's free...no warranties express or implied and all that jazz... I'm just sharing what I do for myself.
The main problem appears to be the Brand so I don't recommend turning that on.
My Lazy Instructions:
- Install Galleon to act as the host for this - or host it another way if you know how to do it...not taking time to give instructions here.
- Put jar files in Galleon's hme folder (C:\Program Files\Galleon\hme)
- Add lines to Galleon's launch file (C:\Program Files\Galleon\hme\launcher.txt):
- com.blackledge.david.tivo.multitasker.applications.SampleMultitaskerApp
- com.blackledge.david.tivo.multitasker.applications.SampleMultitaskerApp -uriAndTitle lolcats:LOLcats
- com.blackledge.david.tivo.multitasker.applications.WeatherMultitaskerApp
- Restart the Galleon Service
Includes SampleMultitaskerApplication - a minimal application that just invokes all the Multitasker features, and knows how to quit when you click "left". With different launch options and associated configuration files, can be used repeatedly to create many "applications." Currently I use it for a basic slideshow of my pictures/playing my music; a slideshow for each of icanhascheezburger.com, ihasahotdog.com, and failblog.com; a local weather/traffic information source with local news ticking across the bottom, a bunch of local channel websites' images for weather/forecast/traffic (and one source of a national weather map as an animaged gif!), and one local station even has mp3's of a summary of the day's local news and another of the weather report. Could easily be used for e.g. a music player that just displays album art, or any of a number of other things that can be provided via RSS or direct URL listings for images, audio, and ticker content.
Configuration is handled universally for all applications. Each uses a global settings file, an application-specific settings file to override that, and each application and each plugin may provide defaults and/or unsettable overrides for any setting. Note that each feature can have a class specified for what the provider/handler is, but each can also have mulitple classes specified and they will share the duty.
Controls are handled (depending on settings) for accessing the settings page ("slow"), pausing the background image OR audio OR ticker ("pause"), going to the next song OR image ("skip"), going to the next image ("ch/pg dn"), speeding up/slowing down the ticker ("ff"/"rw"), etc. Maybe more in the future. the settings page gives quick access to turning on/off some features temporarily plus access to the global and application-specific settings files.
Currently implemented feature plugins (maybe more than listed here):
- Audio plugins
- LocalAudio: play mp3 files from a folder on the host computer. Can be randomized.
- HourlyNewsAudio: combination of CNNHourlyNewsAudio (their url is based on the time), and several other news audio feeds that are updated hourly (NPR, NBC, etc)
- GenericAudio: plays audio from provided URLs. If url is an RSS feed or Shoutcast file, plays audio urls it contains. Can be randomized. WARNING: some audio sources are known to crash the internal TiVo MP3 player, requiring a reboot of the TiVo to get that piece working again.
- Background Image plugins
- LocalBackgroundImage: display image files from a folder on the host computer. Can be randomized
- LocalStreamedBackgroundImage: display image files from a folder on the host computer. Uses streaming and automatic resizing to improve response time and make too-large images work. Can be randomized
- AudioArtBackgroundImage: checks the current audio and assumes the containing folder is the album name and its containing folder is the artist name. Uses this information to query albumartexchange.com (?) for the album's art and optionally other art related to the artist.
- GenericBackgroundImage: displays images from provided URLs. If url is an RSS feed, displays image urls it contains. Optionally prevents duplicates (e.g. if you use icanhascheezburger.com, prevents the avatar images showing up over and over). Can be randomized.
- TickerTape plugins
- RSSTicker: displays RSS content including using the feed's main image as a ticker separator, optionally includes the story (if available).
- AudioCaptionTicker: (currently part of core Multitasker package) checks the current audio and displays the file name as ticker content with the 2 levels of containing folder (normally artist/album) as the group.
- BackgroundImageCaptionTicker: (currently part of core Multitasker package) checks the current image and displays the file name as ticker content with the containing folder (or host name for URLs) as the group.
- TivoTicker: queries the current Tivo using my HMOClient library for currently recording items, including suggestions, and uses the title (and episode title) as content, with the item's icon (recording) as the image (including the blue recording icon for downloads).
- Brand plugins
- ClockBrand: displays the current time
- GenericImageBrand: equivalent to GenericBackgroundImage but used for the brand - supply it a single image url for a constant brand logo.
- coming up... making TivoTicker, LocalStreamedBackgroundImage, and AudioArtBackgroundImage support the Brand interface as well so you can use them in either place (or both).
Slideshow that is nothing but the multitasker running all its features (before Brand was added):
Last modified: November, 2009