furious_tv

NAME
OVERVIEW
DESCRIPTION
SETTINGS
DEVICES
CHANNELS
PROGRAMS
AUTHOR
SEE ALSO
DONATIONS

NAME

furious_tv − PVR backend for UNIX systems

OVERVIEW

ftv_init(1) is used to initialize an SQLite database for furious_tv(7).

ftv_listings(1) parses XMLTV TV listings and inserts the data into a furious_tv database.

ftv_record(1), which should be executed every minute in a cron job, checks for programs that are flagged to be recorded and starts the necessary command to record. The command is customizable (described below in SETTINGS).

ftv_uptab(1) is a simple bridge to the Shuriken Uptime Scheduler. ftv_uptab(1) syncs an uptab(5) file with a furious_tv database for autmatic power-on/off.

ftv_divx4rec(1) and ftv_ffmpeg(1) are simple wrapper scripts for v4lctl and either NVrec’s divx4rec(1) or FFmpeg’s ffmpeg(1). You are advised to write your own scripts based on these examples for use in furious_tv(7)’s record command.

If you do not have a frontend for furious_tv(7) (as of this writing there are none), you can browse shows and flag them for taping using sqlite(1) if installed. See the PROGRAMS section below for information on the provided columns. Just set the "record" column using SQL syntax to 1 to record it. For example, to tape all airings of "Family Guy" use the following command:

UPDATE program SET record=1 WHERE name="Family Guy";

DESCRIPTION

furious_tv(7) is a UNIX-based backend for setting up a personal video recorder (PVR). furious_tv(7) reads in XMLTV TV listings into a database and can automatically issue commands to record TV shows off of a video capture device. Note that furious_tv(7) is not a capture tool! Under linux, take a look at FFmpeg and nvrec.

SETTINGS

In the furious_tv database is a table called "settings". The columns are "key" and "val". Here are descriptions of the settings: min_before

Number of minutes before a program is set to start to begin recording, if possible.

min_after

Number of minutes after a program is set to end to cease recording, if possible.

record_command

The command to call to record a program. Two example scripts are provided to demonstrate how to use fuious_tv(7) with Linux video capture programs. The scripts wrap v4lctl(1), divx4rec(1), and ffmpeg(1). You are advised to write your own recording wrapper based on one of these, since they do not use many useful options (e.g. video format, codecs).

A number of substitutions are performed before the command is passed to the system (all of which are quoted so that you do not need to surround them in quotes in record_command): #DEVICE#

Name of the device as given in the device table (e.g. "/dev/video").

#CHANNEL#

Number of the channel the show is on.

#SECONDS#

Number of seconds that should be recorded.

#TITLE#

Title of the program (e.g. "Family Guy").

#SUBTITLE#

The specific episode of the program or the starting date/time if no subtitle is known.

#START#

Starting date/time for the program in ISO 8601 W3C form.

DEVICES

furious_tv(7) has been developed to support multiple capture devices. As such, there is a table in the database called "device".

Each device has an id, a name ("dev" column) and a lock column ("lock_end"). If "lock_end" is null, the device is not locked, otherwise, it is the date/time that the device will become unlocked (after running ftv_record(1)).

The device’s name does not need to be helpful, but since it can be substituted into the record command, it is suggested that "dev" correspond to the video capture device (e.g. "/dev/video").

CHANNELS

The "station" table holds a list of channel from the XMLTV listings. Since the XMLTV format does not explicitly identify channel numbers, they are guessed from the XMLTV listings data. "sid" is the channel number.

PROGRAMS

The "program" table is probably the table in the database that is most interesting to application developers and users alike. Here are what the columns correspond to: pid

Program’s furious_tv(7) internal ID. This may change when listings are updated.

name

Title of the program

sid

Channel the program is on

start

Starting date/time in ISO 8601 W3C form.

stop

Ending date/time in ISO 8601 W3C form.

record

Recording flag for the program. 0 means the program will not be recorded.

subtitle

Subtitle/episode name for the program (often not available).

description

Program description (often not available).

category

Program category (often not available).

rating

Program’s rating (0.0 to 1.0). It can be based on a stars rating or some other form (often not available).

date

When the program was originally made (often not available).

mpaa

MPAA’s rating if the program is a movie. NULL otherwise. You can view all movies scheduled to play on a channel using a command similar to:

SELECT * FROM program WHERE mpaa NOTNULL;

AUTHOR

Jared Krinke <deraj@users.sourceforge.net>

SEE ALSO

ftv_init(1), ftv_listings(1), ftv_record(1), ftv_uptab(1), shuriken(7), sqlite(1), ftv_divx4rec(1), ftv_ffmpeg(1)

DONATIONS

If you value the furious_tv, have a PayPal account, and are feeling generous, please make a donation to furiousj@u.washington.edu to support the author. Suggested donation: $0.25.