descriptionTV Listings framework
homepage URL
last changeWed, 22 Jun 2011 07:53:16 +0000 (22 09:53 +0200)
content tags
README for NonameTV


This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public
License along with this program.  If not, see


The system consists of three main parts: the Importers, the Database
and the Exporters.


Importers are used to import data from different sources into the database.
There is one importers for each data provider. All importers inherit
from the NonameTV::Importer class and thus provide a consistent interface.

Data is imported in batches. A batch is the smallest unit of data that
can be identified by the importer. Usually, a batch corresponds to
a file provided by the data provider.

All Importers that import data via HTTP inherit from one of
NonameTV::Importer::BaseOne, BaseDaily or BaseWeekly. These baseclasses
provide helper-functions that handle data provided in a single file per
channel, one file per day and channel or one file per week and channel.

There is an override-mechanism implemented in the importers that can be
used to override faulty data provided by the data-providers. Sometimes
the data is plain wrong and you need to edit it before feeding it to
the importers. See tools/nonametv-import-download for instructions.

The Importers are run via the command-line tool tools/nonametv-import:

perl -I lib tools/nonametv-import Infomedia --verbose


All data is stored in a MySQL-database in a consistent format. All
strings are encoded in utf-8 in the database and all times are stored
in UTC-timezone.  The channels and trans_cat tables are updated
manually (using the mysql frontend of your choice.) The programs and
batches tables are updated by the Importers and cannot be updated


The Exporters take the data in the database and export it in another format.
The only Exporter that exist today is the Xmltv exporter that exports data
in a format that tv_grab_se_swedb can utilize.


tv_grab_se_swedb utilizes http-caching to avoid downloading data that
hasn't changed since the last time tv_grab_se_swedb was run. This
saves a lot of bandwidth for the server if utilized correctly.

Additionally, some of the Importers take a lot of time to run and we want
to avoid Importing data if nothing has changed. There are a number of
mechanisms in place to avoid doing unnecessary work:

All Importers use HTTP-caching (if they fetch data via HTTP) and only
processes data if it has actually changed since it was last downloaded.
To force an update (for example if the Importer-code has been improved),
use the parameter --force-update:

perl -I lib tools/nonametv-import Infomedia --force-update

The Exporter only exports data for batches that have actually changed.
Furthermore, after exporting a file, the Exporter checks to see if the
exported file is different from the previous file for that period. If
the new file is identical to the old file, the old file is left untouched.

After the export-step, rsync is used to copy the data from the
xmltv_staging directory to the xmltv-directory. Once more, only files
that have actually changed (detected by checking file contents) are
copied. This can be useful during development, since you can do an
export, see that something went wrong (for example by using 
tools/nonametv-xmltv-compare-run and look at the changes). Then revert
your changes and run export again. Since the newly exported files are
then identical to the files in the xmltv/directory, the next run of
rsync will not copy any files even though the date on the files has been
2011-06-22 Karl DietzTVDB: better handling of first runmaster
2011-06-22 Karl DietzAugmenter: examples for matching differently depending...
2011-06-22 Karl DietzImporter: use warnings;
2011-06-22 Karl DietzAugmenter: fix matching undefined $otherfield
2011-06-22 Karl DietzTVDB: fixup raw vertical tab in input data (why do...
2011-06-22 Karl DietzArte*: handle attribute audio=bilingual
2011-06-21 Karl DietzTVDB::API: fix warning on initial update
2011-06-21 Karl DietzAugmenter: hook Augmenters into DataStore and enable...
2011-06-21 Karl DietzAugmenter: use warnings
2011-06-21 Karl DietzAugmenter: move processing from test program into module
2011-06-21 Karl DietzTvdb: handle yet another way to write the episode part...
2011-06-20 Karl DietzMerge pull request #1 from jnylen/master
2011-06-20 Joakim NylenNew importer, Nat. Geo. Wild.
2011-06-20 Joakim NylenSome cleanups and added ExtremeSports v2 Importer,...
2011-06-20 Joakim NylenAlot of new importers, bugfixes at Turner (other sort...
2011-06-20 Joakim working xml importer (missing 3 days at the end...
8 years ago master
9 years ago mob
Cached version (3654s old)
nonametv/tvzon.git Public nonametv clone. 8 years ago