Wubot::Plugin::TiVo - monitor a tivo for new recordings


version 0.2_002



  delay: 8h
  key: 0123456789


This monitor uses Net::TiVo to fetch the 'Now Playing' list from your tivo. For each new item that shows up in the list, a message is sent containing the following fields:

  subject: {name}: {episode}
  name: show name
  episode: episode name
  episode_num: episode number
  recorded: capture date
  format: file format
  hd: {high-def flag}
  size: recording size
  channel: recorded channel
  duration: length
  description: program description
  program_id: tivo program id
  series_id: tivo series id
  link: link to download program from tivo

For more information on these fields, see Net::TiVo.


If you want to store your TiVo programs in a SQLite database, you can do so with the following reaction:

  - name: tivo
    condition: key matches ^TiVo
      - name: tivo sqlite
        plugin: SQLite
          file: /usr/home/wu/wubot/sqlite/tivo.sql
          tablename: recorded

The 'recorded' schema should be copied from the wubot tarball in the config/schema/ directory into your ~/wubot/schemas.


TiVo programs can be downloaded from the link specified in the message. It is possible to use wubot to fully automate this process, although that is not yet documented.

You can download a program manually by using a curl command such as:

  curl --digest -k -u tivo:{media_key} -c cookies.txt -o {some_filename}.tivo {url}

Note that some programs (e.g. those that are downloaded from the web) may be protected, and can not be downloaded.


You absolutely must specify your media key in the 'key' field of the config or you won't be able to get any information from your TiVo.


The certificate on your TiVo is self-signed, so if you try to fetch the content, it will give you a certificate error. Adding this certificate to the list of accepted certificates on your system is beyond the scope of this document.

If you are unable to authorize the certificate on your operating system, you can retrieve the cert by doing something like this:

  openssl s_client -connect |tee ~/tmp/logfile

Capture the lines containing BEGIN CERTIFICATE through END CERTIFICATE and put them in a file such as:


Then when starting wubot-monitor, set the environment variable HTTPS_CA_FILE to point at your ca-bundle:

  HTTPS_CA_FILE=~/wubot/ca-bundle wubot-monitor -v


This monitor uses the global cache mechanism, so each time the check runs, it will update a file such as:


The monitor caches all shows in the feed in this file. When a new (previously unseen) program shows up on the feed, the message will be sent, and the cache will be updated. Removing the cache file will cause all matching items to be sent again.