furious_tv − PVR backend for UNIX systems |
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"; |
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. |
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. |
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"). |
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. |
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; |
Jared Krinke <deraj@users.sourceforge.net> |
ftv_init(1), ftv_listings(1), ftv_record(1), ftv_uptab(1), shuriken(7), sqlite(1), ftv_divx4rec(1), ftv_ffmpeg(1) |
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. |