<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.xmltv.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kingjohnjones</id>
		<title>XMLTV - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.xmltv.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kingjohnjones"/>
		<link rel="alternate" type="text/html" href="https://wiki.xmltv.org/index.php/Special:Contributions/Kingjohnjones"/>
		<updated>2026-10-10T08:37:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://wiki.xmltv.org/index.php?title=LineupProposal2&amp;diff=1864</id>
		<title>LineupProposal2</title>
		<link rel="alternate" type="text/html" href="https://wiki.xmltv.org/index.php?title=LineupProposal2&amp;diff=1864"/>
				<updated>2011-06-09T05:16:14Z</updated>
		
		<summary type="html">&lt;p&gt;Kingjohnjones: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a proposal by [http://www.bucksch.org Ben Bucksch] and used by a TV system created by him. This is an alternative to [[LineupProposal]].&lt;br /&gt;
&lt;br /&gt;
= Purpose =&lt;br /&gt;
&lt;br /&gt;
During setup of a TV (recording) system, it is not only necessary to find channels by a channel scan, but also to properly name and sort the channels, and to assign the [[RFC 2838]]-IDs, which associate the station to schedule information from XMLTV. This file format provides this information.&lt;br /&gt;
&lt;br /&gt;
It is separate from the scheduling (programme) information in the [[XMLTVFormat|XMLTV XML format]].&lt;br /&gt;
&lt;br /&gt;
= Source =&lt;br /&gt;
&lt;br /&gt;
This file shall be (if so decided by XMLTV project) provided [http://www.pacquiaomarquezfight.com pacquiao vs marquez] by the grabber, when called with a commandline flag &amp;lt;code&amp;gt;--list-channels&amp;lt;/code&amp;gt; (or similar). The grabber may compile the file from information from the grabber source, or via a static list, or (usually) a mix of both.&lt;br /&gt;
&lt;br /&gt;
The file may also be retrieved from other sources, e.g. web service which just lists satellite channels, or from a static location provided by the vendor of the TV system, or from the XMLTV web server (http://supplement.xmltv.org).&lt;br /&gt;
&lt;br /&gt;
The presets and long/short names are a matter of judgment, and to be decided on by the grabber author (assuming he's unbiased), XMLTV project or similar. The only consideration should be how users (TV watchers) would like to see/use it. If the grabber source or station networks happen to provide presets, but they are not ideal in the way users would want it, the commercial interests are to be ignored and manually managed preset lists should be used.&lt;br /&gt;
&lt;br /&gt;
= Structure =&lt;br /&gt;
&lt;br /&gt;
This format uses the term &amp;quot;channel&amp;quot; differently from the XMLTV DTD.&lt;br /&gt;
* A &amp;quot;station&amp;quot; is defined by the programmes, the content of the media. E.g. &amp;quot;BBC 1&amp;quot; is a station, and it airs the BBC news show at 8 PM. This is what you see in your TV guide and what the XMLTV file content describes.&lt;br /&gt;
* A &amp;quot;channel&amp;quot; is a technical means to transmit the station's broadcast. This is how you receive the actual video and audio.&lt;br /&gt;
E.g. The DVB-T channel in Cologne on frequency 129050000 Hz, with service ID 1802, is a channel, and the analog PAL channel E51 in Cologne is a different channel. But both may transmit the same station: ZDF.&lt;br /&gt;
&lt;br /&gt;
It is very common for one station to be transmitted on many different channels, sometimes even several of them received by the same TV/computer (e.g. one via DVB-T and one via DVB-C or DVB-S).&lt;br /&gt;
Similarly, there are stations which are transmitted as HDTV and as SD, with the same content (apart from technical quality) - these are also different channels for the same station.&lt;br /&gt;
&lt;br /&gt;
We separate the problem into two parts:&lt;br /&gt;
# Identify a channel (which we found during scan) as a certain station (by its [[RFC 2838]] ID).&lt;br /&gt;
# Get metadata about a station, like long and short display names, logo, and the default preset number.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;*-channel&amp;gt; elements do the first, the &amp;lt;station&amp;gt; elements do the latter.&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
[http://www.bucksch.org/1/projects/various/xmltv/lineup.de.xml Example file] (for Germany, DVB-S Astra 19.2°)&lt;br /&gt;
&lt;br /&gt;
= Definition =&lt;br /&gt;
&lt;br /&gt;
Unless mentioned otherwise, each element underneath &amp;lt;station&amp;gt; and &amp;lt;*-channel&amp;gt; may appear only once. Applications should ignore additional elements of the same tag name and use the first. Of course, &amp;lt;station&amp;gt; and &amp;lt;*-channel&amp;gt; may appear several times.&lt;br /&gt;
&lt;br /&gt;
== XML structure ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;lineup&amp;gt;&lt;br /&gt;
   &amp;lt;stations&amp;gt;&lt;br /&gt;
     &amp;lt;station rfc2838id=&amp;quot;zdf.de&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;long-name&amp;gt;ZDF&amp;lt;/long-name&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
     &amp;lt;/station&amp;gt;&lt;br /&gt;
     &amp;lt;station rfc2838id=&amp;quot;1.bbc.co.uk&amp;quot;&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
     &amp;lt;/station&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
   &amp;lt;/stations&amp;gt;&lt;br /&gt;
   &amp;lt;channels&amp;gt;&lt;br /&gt;
     &amp;lt;dvb-channel rfc2838id=&amp;quot;zdf.de&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;dvb-id service=&amp;quot;28006&amp;quot; transport=&amp;quot;1079&amp;quot; network=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
     &amp;lt;/dvb-channel&amp;gt;&lt;br /&gt;
     &amp;lt;dvb-channel rfc2838id=&amp;quot;1.bbc.co.uk&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;dvb-id service=&amp;quot;2&amp;quot; transport=&amp;quot;28&amp;quot; network=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
     &amp;lt;/dvb-channel&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     &amp;lt;analog-channel rfc2838id=&amp;quot;1.bbc.co.uk&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;cni tt-8-30-1=&amp;quot;0x447F&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/analog-channel&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
   &amp;lt;/channels&amp;gt;&lt;br /&gt;
 &amp;lt;/lineup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''TODO'' better word for &amp;quot;lineup&amp;quot;? At least define what the word &amp;quot;lineup&amp;quot; means.&lt;br /&gt;
&lt;br /&gt;
== Stations ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;station rfc2838id=&amp;quot;zdf.de&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;long-name&amp;gt;ZDF&amp;lt;/long-name&amp;gt;&lt;br /&gt;
   &amp;lt;short-name&amp;gt;ZDF&amp;lt;/short-name&amp;gt;&lt;br /&gt;
   &amp;lt;preset&amp;gt;2&amp;lt;/preset&amp;gt;&lt;br /&gt;
   &amp;lt;logo url=&amp;quot;http://example.com /zdf.gif&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;group&amp;gt;oeff-rechtl&amp;lt;/group&amp;gt;&lt;br /&gt;
   &amp;lt;commercial-free&amp;gt;true&amp;lt;/commercial-free&amp;gt;&lt;br /&gt;
 &amp;lt;/station&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''rfc2838id''' (mandatory)&lt;br /&gt;
&lt;br /&gt;
The globally unique ID of the station, per [[RFC 2838]]. It must follow the rules in the RFC, and the should match ID used by the XMLTV grabbers for the country of the station.&lt;br /&gt;
&lt;br /&gt;
This links the station to the XMLTV data, and also links the &amp;lt;station&amp;gt; to the &amp;lt;*-channel&amp;gt; elements within this document.&lt;br /&gt;
&lt;br /&gt;
Each rfc2838id must only appear in one &amp;lt;station&amp;gt; element in a document, i.e. there must not be two &amp;lt;station&amp;gt;s with the same rfc2838id. (There may be several &amp;lt;*-channel&amp;gt; elements with the same rfc2838id, though.)&lt;br /&gt;
&lt;br /&gt;
'''Long name''' (mandatory)&lt;br /&gt;
&lt;br /&gt;
The display name of the station, as shown to the user - long version.&lt;br /&gt;
This is not necessarily the official legal name of the station, but a name that people find nice in unambiguously identifying the station.&lt;br /&gt;
Should be used in places in the UI where display space is not short.&lt;br /&gt;
&lt;br /&gt;
It should be no longer than 30-50 characters. Spaces are allowed. May contain UTF characters.&lt;br /&gt;
&lt;br /&gt;
Examples: &amp;quot;National Geographic&amp;quot;, &amp;quot;BBC 1&amp;quot; (same as short name), &amp;quot;Sky Entertainment 1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Short name''' (mandatory)&lt;br /&gt;
&lt;br /&gt;
The display name of the station, as shown to the user - short version.&lt;br /&gt;
A name that people find nice in unambiguously identifying the station, but at the same time short.&lt;br /&gt;
To be used in places in the UI where display space is short.&lt;br /&gt;
&lt;br /&gt;
Must not be longer than 10 characters (hard limit). Spaces are allowed.&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally &amp;lt;= 5 characters. Ideally, only characters A-Z, 0-9 and space are used.&lt;br /&gt;
&lt;br /&gt;
Examples: &amp;quot;BBC 1&amp;quot;, &amp;quot;NatGeo&amp;quot;, &amp;quot;Sky Entert&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''preset''' (optional)&lt;br /&gt;
&lt;br /&gt;
The number that the user keys in on the remote control to change to this station.&lt;br /&gt;
Also used for sorting channels, where channels are listed. This allows&lt;br /&gt;
* to put the most important channels first&lt;br /&gt;
* to adhere to local conventions, e.g. BBC1 is expected on button 1 in the UK, while German users expect ARD on 1 and ZDF on 2.&lt;br /&gt;
* to create a logical order (e.g. news stations together, kids stations together, or a certain pay-TV bouquet together).&lt;br /&gt;
&lt;br /&gt;
This is also useful for satellite users (e.g. Astra in Europe) which receive &amp;gt;1000 channels, but 98% of them are essentially 'spam'. The &amp;quot;spam&amp;quot;-channels should have no preset.&lt;br /&gt;
&lt;br /&gt;
This element may be omitted, in which case the channel is to be put ''after'' the channels with a preset.&lt;br /&gt;
&lt;br /&gt;
This element only gives a default preset. A user should be able to easily change it at will (in a configuration/setup program), and the user's choice must be preserved over the choice here.&lt;br /&gt;
''TODO'' what to do when the presets here are re-arranged, and a new channel has the same preset that the user assigned to another channel? Find first free channel after the assigned one? Can get complicated, esp. on the next change after that.&lt;br /&gt;
&lt;br /&gt;
'''group''' (optional)&lt;br /&gt;
&lt;br /&gt;
This is another way to sort channels. You can assign a common string to a set of channels, to reflect that they are in some way related and could be displayed together.&lt;br /&gt;
&lt;br /&gt;
E.g. you may mark all Canal+ pay-TV stations as group &amp;quot;Canal+&amp;quot;, or all news stations as group &amp;quot;news&amp;quot; and all cartoon stations as group &amp;quot;kids&amp;quot;. There can (currently) only be one group per station, so if Canal+ broadcasts cartoon stations, decide for either &amp;quot;Canal+&amp;quot; or &amp;quot;kids&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The group name may or may not be displayed to the user, and may not have any effect at all.&lt;br /&gt;
&lt;br /&gt;
'''logo''' (optional)&lt;br /&gt;
&lt;br /&gt;
The attribute '''url''' (mandatory) contains the URL (http: or file:) to a PNG, JPEG or GIF image of the station's logo.&lt;br /&gt;
&lt;br /&gt;
The attribute '''res''' (optional) contains the size of the image in pixels, in form width &amp;quot;x&amp;quot; height, e.g. &amp;quot;64x48&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The element &amp;lt;logo&amp;gt; may be included several times, to include several logos of different sizes/resolutions.&lt;br /&gt;
&lt;br /&gt;
'''commercial-free''' (optional)&lt;br /&gt;
&lt;br /&gt;
boolean: &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;. Whether the station has advertisement in the content. Advertisements may be&lt;br /&gt;
* between programmes (e.g. only before and after movies, not during the movie)&lt;br /&gt;
* in the middle of the programmes (e.g. an interruption for 30 seconds every 10 minutes or for 5 minutes every 40 minutes)&lt;br /&gt;
* on top of the programme (e.g. while the movie is running, there is an overlay text or icon or sound, which advertises for a product, service or for another show on the same station).&lt;br /&gt;
* part of the programme (e.g. sponsoring, product placement etc.)&lt;br /&gt;
&lt;br /&gt;
It is up to the data source to make an (unbiased) judgment decision which stations are considered commercial-free. For example, you may label stations which have advertisements only between movies, and include the full teaser and end credits of the movie still as &amp;quot;commercial-free&amp;quot;. You may also not count the airing of a Hollywood movie as product placement, but a pure home shopping station as non-stop advertisement.&lt;br /&gt;
&lt;br /&gt;
== DVB Channels ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;dvb-channel rfc2838id=&amp;quot;zdf.de&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;dvb-name provider=&amp;quot;ZDFvision&amp;quot; service=&amp;quot;ZDF&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;dvb-id service=&amp;quot;28006&amp;quot; transport=&amp;quot;1079&amp;quot; network=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;encrypted&amp;gt;false&amp;lt;/encrypted&amp;gt;&lt;br /&gt;
 &amp;lt;/dvb-channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''rfc2838id''' (mandatory)&lt;br /&gt;
&lt;br /&gt;
The ID of the station, see &amp;lt;station&amp;gt;. Allows to link the channel to the &amp;lt;station&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Several &amp;lt;dvb-channel&amp;gt; or &amp;lt;*-channel&amp;gt; elements with the same rfc2838id are allowed and intended. In fact, that's why &amp;lt;station&amp;gt; and &amp;lt;*-channel&amp;gt; are separate.&lt;br /&gt;
&lt;br /&gt;
'''dvb-id''' (optional)&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;'''service''' ID&amp;quot;, &amp;quot;'''transport''' ID&amp;quot; (also called &amp;quot;transponder ID&amp;quot;) and &amp;quot;original '''network''' ID&amp;quot; (in decimal numbers), as transmitted on the DVB stream in the PAT, SDT and NIT.&lt;br /&gt;
&lt;br /&gt;
All of service, transport and network must be given, they are only valid as a triple. An application should not use only the serviceID, but the whole triple, to identify a channel, as the same service ID (e.g. 2) may be used for entirely different channels/stations on different transponders.&lt;br /&gt;
&lt;br /&gt;
This is the preferred way to identify a DVB channel. However, it may differ for each DVB-T and DVB-C region/broadcaster, so that's why dvb-name is provided as fallback way to identify the channel.&lt;br /&gt;
&lt;br /&gt;
'''dvb-name''' (optional)&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;'''service''' name&amp;quot; and &amp;quot;'''provider''' name&amp;quot; strings, as transmitted on the DVB stream in the SDT.&lt;br /&gt;
&lt;br /&gt;
It should be unique per station (modulo HD), i.e. should be the same on DVB-T, DVB-C and DVB-S (in the same country / station cover area). So, ideally, there should only be one DVB service name for the same station, no matter which DVB transport medium or location, making identification easy and our list short.&lt;br /&gt;
&lt;br /&gt;
However, in practice, some operators / cable head stations mess up and use e.g. &amp;quot;ZDFinfo&amp;quot; vs. &amp;quot;ZDF info&amp;quot; vs. &amp;quot;ZDFinfokanal&amp;quot; for the same station. In this case, include several &amp;lt;dvb-channel&amp;gt; elements, with all variations, all pointing to the same rfc2838id, but only one &amp;lt;station&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The provider name is optional, but should be included when known. An application may chose to ignore the provider name, depending on experiences.&lt;br /&gt;
&lt;br /&gt;
'''encrypted''' (optional)&lt;br /&gt;
&lt;br /&gt;
The channel is scrambled and can only be used if the user has a specific descrambler and appropriate smart card. This is used for&lt;br /&gt;
* Pay-TV&lt;br /&gt;
* some cable systems&lt;br /&gt;
* to limit the geographical coverage (e.g. to Austria, to block German viewers, to reduce movie license costs).&lt;br /&gt;
&lt;br /&gt;
If the channel is scrambled, this element is mandatory and must contain the text &amp;quot;true&amp;quot;, otherwise it can either be omitted or contain &amp;quot;false&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Analog channels ==&lt;br /&gt;
&lt;br /&gt;
=== Analog US ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;analog-channel rfc2838id=&amp;quot;1.bbc.co.uk&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;fcc-callsign&amp;gt;BBC1&amp;lt;/fcc-callsign&amp;gt;&lt;br /&gt;
   &amp;lt;frequency number=&amp;quot;E51&amp;quot; system=&amp;quot;NTSC-M&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/analog-channel&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''rfc2838id''' (mandatory)&lt;br /&gt;
&lt;br /&gt;
See &amp;lt;dvb-channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''fcc-callsign''' (optional)&lt;br /&gt;
&lt;br /&gt;
For the US, where the FCC assigns a unique identifier with up to 5 characters. It is transmitted on the air via [http://en.wikipedia.org/wiki/Extended_Data_Services XDS] [http://www.ce.org/Standards/browseByCommittee_2523.asp Standard].&lt;br /&gt;
&lt;br /&gt;
Other countries don't maintain official (not even unofficial) callsigns. Do not use this element for other identification schemes than the FCC-assigned US callsigns.&lt;br /&gt;
&lt;br /&gt;
'''frequency''' (optional)&lt;br /&gt;
&lt;br /&gt;
Mainly (but not exclusively) for the US, where Schedule Direct and other grabbers provide regional tuning data. For the user's (or application's) convenience. Only provide this information, if you know it is applicable (tunable) for this user, e.g. after having asked him about his physical location and/or reception method.&lt;br /&gt;
&lt;br /&gt;
The '''system''' (mandatory) is the television system, including the tuning tables, e.g. &amp;quot;NTSC-M&amp;quot; or &amp;quot;PAL-G&amp;quot;.&lt;br /&gt;
The '''number''' is the channel number in the tuning tables, e.g. &amp;quot;5&amp;quot; or &amp;quot;54&amp;quot;. It may contain letters, e.g. &amp;quot;E51&amp;quot; or &amp;quot;S05&amp;quot; for extended and special channels, which have been added later to the VHF or UHF spectrum. Length &amp;lt;= 5 characters.&lt;br /&gt;
&lt;br /&gt;
=== Analog EU ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;analog-channel rfc2838id=&amp;quot;1.bbc.co.uk&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;cni tt-8-30-1=&amp;quot;0x447F&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/analog-channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''cni tt-8-30-1''' (optional)&lt;br /&gt;
&lt;br /&gt;
For the EU, where a numerical CNI of the station is transmitted in Teletext packet 8/30 format 1. In hex, with preceding &amp;quot;0x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Compare [http://zapping.sourceforge.net/doc/libzvbi/structvbi__network.html#o5 Zapping API docs].&lt;br /&gt;
The list of station IDs is at [http://tech.ebu.ch/publications/PDC-VPS ETSI TS 101 231]&lt;br /&gt;
&lt;br /&gt;
Note that there's also a Teletext packet 8/30 format 2, which is also a station ID, but different numbers, therefore the complicated element name.&lt;br /&gt;
&lt;br /&gt;
== IPTV channels ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;iptv-channel rfc2838id=&amp;quot;1.bbc.co.uk&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;iptv-url&amp;gt;rtsp://....&amp;lt;/iptv-url&amp;gt;&lt;br /&gt;
 &amp;lt;/iptv-channel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''iptv-url''' (mandatory)&lt;br /&gt;
&lt;br /&gt;
Where to fetch the media stream.&lt;br /&gt;
&lt;br /&gt;
''TODO''&lt;/div&gt;</summary>
		<author><name>Kingjohnjones</name></author>	</entry>

	<entry>
		<id>https://wiki.xmltv.org/index.php?title=XmltvTestCodes&amp;diff=1863</id>
		<title>XmltvTestCodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.xmltv.org/index.php?title=XmltvTestCodes&amp;diff=1863"/>
				<updated>2011-06-09T05:16:06Z</updated>
		
		<summary type="html">&lt;p&gt;Kingjohnjones: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Test Codes==&lt;br /&gt;
&lt;br /&gt;
This page documents all errorcodes emitted by test_grabbers and tv_validate_grabber. The descriptions are taken from the documentation of {{manpage|ValidateGrabber|3pm}} and {{manpage|ValidateFile|3pm}}.&lt;br /&gt;
===noparamcheck===&lt;br /&gt;
&lt;br /&gt;
The grabber accepts any parameter without returning an error-code.&lt;br /&gt;
===noversion===&lt;br /&gt;
&lt;br /&gt;
The grabber returns an error when run with --version.&lt;br /&gt;
===nodescription===&lt;br /&gt;
&lt;br /&gt;
The grabber returns an error when run with --description.&lt;br /&gt;
===nocapabilities===&lt;br /&gt;
&lt;br /&gt;
The grabber returns an error when run with --capabilities.&lt;br /&gt;
===nobaseline===&lt;br /&gt;
&lt;br /&gt;
The grabber does not list 'baseline' as one of its supported capabilities.&lt;br /&gt;
===nomanualconfig===&lt;br /&gt;
&lt;br /&gt;
The grabber does not list 'manualconfig' as one of its supported capabilities.&lt;br /&gt;
===noconfigurationfile===&lt;br /&gt;
&lt;br /&gt;
The specified configuration-file does not exist.&lt;br /&gt;
===graberror===&lt;br /&gt;
&lt;br /&gt;
The grabber returned with an error-code when asked to grab data.&lt;br /&gt;
===notquiet===&lt;br /&gt;
&lt;br /&gt;
The grabber printed something to STDERR even though the --quiet option was used.&lt;br /&gt;
===outputdiffers===&lt;br /&gt;
&lt;br /&gt;
The grabber produced different output when called with different combinations of --output and --quiet.&lt;br /&gt;
===caterror===&lt;br /&gt;
&lt;br /&gt;
tv_cat returned an error-code when we asked it to process the output from the grabber.&lt;br /&gt;
===sorterror===&lt;br /&gt;
&lt;br /&gt;
tv_sort found errors in the data generated by the grabber. Probably overlapping programmes.&lt;br /&gt;
===notadditive===&lt;br /&gt;
&lt;br /&gt;
grabbing data for tomorrow first and then for the day [http://www.pacquiaomarquezfight.com pacquiao vs marquez] after tomorrow and concatenating them does not yield the same result as grabbing the data for tomorrow and the day after tomorrow at once.&lt;br /&gt;
===notwell===&lt;br /&gt;
&lt;br /&gt;
The file is not well-formed XML.&lt;br /&gt;
===notdtd===&lt;br /&gt;
&lt;br /&gt;
The file does not follow the XMLTV DTD.&lt;br /&gt;
===unknownid===&lt;br /&gt;
&lt;br /&gt;
No channel-entry found for a channelid that is used in a programme-entry.&lt;br /&gt;
===duplicatechannel===&lt;br /&gt;
&lt;br /&gt;
More than one channel-entry found for a channelid.&lt;br /&gt;
===noprogrammes===&lt;br /&gt;
&lt;br /&gt;
No programme entries were found in the file.&lt;br /&gt;
===channelnoprogramme===&lt;br /&gt;
&lt;br /&gt;
There are no programme entries for one of the channels listed with a channel-entry.&lt;br /&gt;
===invalidid===&lt;br /&gt;
&lt;br /&gt;
An xmltvid does not look like a proper id, i.e. it does not match /^[-a-zA-Z0-9]+(.[-a-zA-Z0-9]+)+$/.&lt;br /&gt;
===noid===&lt;br /&gt;
&lt;br /&gt;
A programme-entry without an id was found.&lt;br /&gt;
===emptytitle===&lt;br /&gt;
&lt;br /&gt;
A programme entry with an empty or missing title was found.&lt;br /&gt;
===badstart===&lt;br /&gt;
&lt;br /&gt;
A programme entry with an invalid start-time was found.&lt;br /&gt;
===badstop===&lt;br /&gt;
&lt;br /&gt;
A programme entry with an invalid stop-time was found.&lt;br /&gt;
===badepisode===&lt;br /&gt;
&lt;br /&gt;
An episode-num with system=&amp;quot;xmltv_ns&amp;quot; was found where the episode number did not follow the format described in the Xmltv dtd.&lt;br /&gt;
===badiso8859===&lt;br /&gt;
&lt;br /&gt;
The file contains characters that are unlikely to appear in correctly encoded files.&lt;br /&gt;
It can be characters that don't have any meaning or control characters that don't&lt;br /&gt;
appear in correct files often. (like non-breaking space)&lt;br /&gt;
Another cause is some characters in windows-1252 encoding slipped through into a&lt;br /&gt;
file encoded as iso-8859-1.&lt;/div&gt;</summary>
		<author><name>Kingjohnjones</name></author>	</entry>

	<entry>
		<id>https://wiki.xmltv.org/index.php?title=AutoEpg&amp;diff=1862</id>
		<title>AutoEpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.xmltv.org/index.php?title=AutoEpg&amp;diff=1862"/>
				<updated>2011-06-09T05:15:34Z</updated>
		
		<summary type="html">&lt;p&gt;Kingjohnjones: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{third-party tool}}&lt;br /&gt;
'''autoEPG''' is an application for easier configuration and automatic download of XMLTV data, also integrates other grabbers, TVxb, epgstream.net.. translation of the data from various languages, spain, french... to another language example, english, macedonian... and finally import to Windows Media Center (I've lost the source [http://www.pacquiaomarquezfight.com pacquiao vs marquez] code so now I'm starting all over, you can download the latest build from [https://sourceforge.net/projects/autoepg/files/ here].&lt;br /&gt;
&lt;br /&gt;
here is the first [https://sourceforge.net/projects/autoepg/files/Screenshots/autoEPG.png screenshot]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
'''24.02.2011'''&lt;br /&gt;
*THANKS for nor replaying and not donating   &lt;br /&gt;
&lt;br /&gt;
only ONE donation so the project will be discontinued (latest pro build sent to donor THANKS even at the fact that I still did not received the donation I appreciated  the good words thanks again   )&lt;br /&gt;
&lt;br /&gt;
no further development ( at least no public ) for now, maybe ever again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''14.02.2011'''&lt;br /&gt;
*from today you can follow us on [http://twitter.com/autoEPG twitter]&lt;br /&gt;
&lt;br /&gt;
'''10.02.2011'''&lt;br /&gt;
*Improvements in affinity&lt;br /&gt;
*new registration (the program registration is not changed for now, till next version), faster registration, but BE WARNED !!! only one registration request per mail !!!, if you send more requests you'll get an mail with warning, , Pro registration is changed, it's not the same as lite registration (the lite registration is only for our statistics), in the future lite registration will be server based (response within minutes) for Pro, you'll still have to wait up to 24 hours after donation is received&lt;br /&gt;
&lt;br /&gt;
*Thanks for the 2 donations (still not received but they'll be here  )&lt;br /&gt;
&lt;br /&gt;
'''07.02.2011'''&lt;br /&gt;
*performance selector - becouse XMLTV, BigScreen EPG and sometimes even autoEPG  eats A LOT OF resources, wich might couse gleaches in video (specially TV) playback We have added, app priority selector, and for PC's with more CPUs / Cores core selector on wich the apps to run leaving the main system free for video, games....&lt;br /&gt;
&lt;br /&gt;
'''06.02.2011'''&lt;br /&gt;
*new app icon&lt;br /&gt;
*no GUI mode (hidden mode)&lt;br /&gt;
*tray menu with basic commands and settings&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''02.02.2011'''&lt;br /&gt;
*New USB mode option - on Client machine (the one with the Media Center, where EPG will be imported) autoEPG runs in the background all the time and as soon as USB drive with the fresh XMLTV data is inserted into the PC, autoEPG detects it and starts importing the data&lt;br /&gt;
&lt;br /&gt;
'''07.12.2010'''&lt;br /&gt;
*portable/remote mode added&lt;br /&gt;
&lt;br /&gt;
downloads and processes the data ready for injecting and puts it in a folder on a USB memory / SD card... or uploads it to a FTP server so on the local pc (HTPC) it only downloads it and injects it to MC&lt;br /&gt;
&lt;br /&gt;
very useful if you have a lot of channels (like me more than 500) because every day the transfer of data is around 300MB and it takes several hours&lt;br /&gt;
so I run the portable mode on a PC in my office (usually the process takes place during the night) and at home autoEPG works only as injector and process is over in couple of minutes with only 20-25 MB transfer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12.10.2010'''&lt;br /&gt;
*progress in Channel Editor&lt;br /&gt;
*Listings - view downloaded listings (channel - program data)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06.10.2010'''&lt;br /&gt;
*new progress in channel editor&lt;br /&gt;
*YouTUBE video for registration and basic commands [http://www.youtube.com/watch?v=16r2qzNOBNI YouTUBE]&lt;br /&gt;
&lt;br /&gt;
'''05.10.2010'''&lt;br /&gt;
*new option in progress - edit each channel separately, category, video quality (HD logo), MCE chnnel Logo, Channel ID...&lt;br /&gt;
*timeShift added - if the XMLTV file shows are shifted + or - to the local time&lt;br /&gt;
*power option (poweroff/hibernate on finish)&lt;br /&gt;
*progress bar&lt;br /&gt;
*log&lt;br /&gt;
*problem with translation of &amp;quot;&amp;amp;&amp;quot; example &amp;quot;Tom &amp;amp; Jerry&amp;quot; was translated as &amp;quot;Tom&amp;quot;&lt;br /&gt;
*color-based categories in WMC (chose the shows to be marked ad movies, kids, family... and after that to be a color coded in WMC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06.09.2010''' 23:02&lt;br /&gt;
* since XMLTV tv_grab_fr is painfull slow more then 6 hours and going for a file of 1Mb !!!! added new fast grabber from [http://www.kazer.org/ www.kazer.org] !&lt;br /&gt;
&lt;br /&gt;
'''23.06.2010''' 11:35&lt;br /&gt;
* 3rd party injector TVxb now working, so no need of paid big screen EPG !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''21.06.2010''' 14:10&lt;br /&gt;
*added option for 3rd party injectors, for now only big screen EPG (with fix option)&lt;br /&gt;
*soon tvxb (free alternative for Big Screen EPG !!!)&lt;br /&gt;
*planed own injector (need some help on xmltv to mxf translation so if any ideas please help)&lt;br /&gt;
&lt;br /&gt;
'''06.04.2010''' 23:12&lt;br /&gt;
*urgent update, the installer has a flaw, it does not crate the folder &amp;quot;C:\autpEPG\RAW\&amp;quot; and it fails to start, please create this folder manualy!&lt;br /&gt;
*quick tips if using other than XMLTV.exe point to the exported XMLTV.xml file to a=the &amp;quot;RAW&amp;quot; folder and name them something like this XMLTVepgstream.xml or XMLTVde.xml, run &amp;quot;GRABB all&amp;quot; then select in settings which files you want to be translated (check them), click SAVE, than &amp;quot;Translate&amp;quot;, configure BIGscreen EPG (if you use it) point for the sources to the files in the &amp;quot;XMLTV&amp;quot; folder and compete the process in the BIGscreen EPG, after this initial setup it will run automatically only with starting autoEPG with &amp;quot;autoGRABB&amp;quot; and &amp;quot;autoINCECT&amp;quot; options checkes (ONLY the full version!!!)&lt;br /&gt;
*the updated setup will be available shortly ...&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''06.04.2010''' 01:43 0.9.9.1&lt;br /&gt;
*minor fixes&lt;br /&gt;
*uninstall previous version before installation&lt;br /&gt;
*[https://sourceforge.net/projects/autoepg/files/autoEPG%200.9.9.1%20lite%20setup.exe download autoEPG lite 0.9.9.1]&lt;br /&gt;
&lt;br /&gt;
'''21.03.2010''' 21:10 0.9.9&lt;br /&gt;
*setup lite available for [https://sourceforge.net/projects/autoepg/files/Relese/autoEPG%200.9.9%20lite%20setup.exe download], please send comments&lt;br /&gt;
&lt;br /&gt;
'''14.03.2010''' [23:21] 0.9.6.1&lt;br /&gt;
*minor translation errors fix (rt_text error)&lt;br /&gt;
*tvxb back to old edit method, new was not working (still I'll be looking for another method, the idea is to have base of channels and add / remove them from the actual tvbx configuration)&lt;br /&gt;
&lt;br /&gt;
'''11.03.2010''' [14:00] 0.9.6&lt;br /&gt;
*translation errors fix&lt;br /&gt;
 - I'm a bit busy at the moment so the lite version will be delayed for a couple of days&lt;br /&gt;
&lt;br /&gt;
'''08.03.2010''' [09:46] 0.9.5 RC [https://sourceforge.net/projects/autoepg/files/Relese/autoEPG_v0.9.5_08.03.2010.rar download]&lt;br /&gt;
*grabbing&lt;br /&gt;
*translation&lt;br /&gt;
*injection (Big screen EPG must be installed)&lt;br /&gt;
*auto grabb&lt;br /&gt;
*auto translate&lt;br /&gt;
*auto inject&lt;br /&gt;
*miniGUI mode&lt;br /&gt;
*fixed base issues (much faster translation about 10% is online translation after the first pass)&lt;br /&gt;
*only lite version is downloadable - next version will be with more features only some will be locked and there will be wait time for lite version (will be published before 10.03.2010)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''07.03.2010''' [01:45] build 0.9.0&lt;br /&gt;
*a loooooottttt of improvements&lt;br /&gt;
*almost finished&lt;br /&gt;
*due to a lot of time invested, and a lot more to be done (support, users wishes, EPG import, remote Media Center recording, managing of recordings - from a remote computer) the final version will be [http://en.wikipedia.org/wiki/Donationware donationware] (from 5$ up) please appriciate my time and if you like it please donate to enable me to continue with the development this great app... info about donations [mailto:procadworks@gmail.com proCADworks@gmail.com]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''03.03.2010''' [13:33] build 0.4.0 [http://downloads.sourceforge.net/project/autoepg/Beta/autoEPG_v0.4.0_04.03.2010.rar?use_mirror=sunet download]&lt;br /&gt;
*first BETA &lt;br /&gt;
*configuration XMLTV - working&lt;br /&gt;
*downloading from XMLTV's sources - working&lt;br /&gt;
*translation - working&lt;br /&gt;
*import into Media Center - not implemented ( this feature may not be implemented at all, or it will be in paid version (about 5$) in order to import into MC7 use Bigscreen EPG or win7 pre TVpack or older something like Blade runner...) &lt;br /&gt;
&lt;br /&gt;
'''03.03.2010''' [22:38] build 0.2.5&lt;br /&gt;
*just got awarded from [https://sourceforge.net/projects/autoepg/files/Screenshots/award.png SoftPedia]&lt;br /&gt;
&lt;br /&gt;
'''03.03.2010''' [22:38] build 0.2.5&lt;br /&gt;
*preliminary translation (only to English works, klik the ORB &amp;gt; Translate, but before in Settings tab select English !)&lt;br /&gt;
*settings page does not work, YET... &lt;br /&gt;
&lt;br /&gt;
'''01.03.2010''' [12:51] build 0.2.0 &lt;br /&gt;
*XMLTV reset working&lt;br /&gt;
*XMLTV configuration working&lt;br /&gt;
*XMLTV download working&lt;br /&gt;
*translation (just started on this)&lt;br /&gt;
*progress bar not working&lt;br /&gt;
* must download 0.0.4 and 0.2.0 in order to work for future only latest build will be needed&lt;br /&gt;
&lt;br /&gt;
'''19.02.2010''' [23:03] build 0.0.4 &lt;br /&gt;
*new beautiful Office 2007 style [https://sourceforge.net/projects/autoepg/files/Screenshots/autoEPG2.png GUI]&lt;br /&gt;
&lt;br /&gt;
'''18.02.2010''' [22:53] build 0.0.3 &lt;br /&gt;
*detects if [http://www.epgstream.net epgstream.net] is installed&lt;br /&gt;
*starts epgstream.net configuration&lt;br /&gt;
*detects if  [http://www.tvxb.com TVxb] is installed&lt;br /&gt;
*edit window for TVxb config file&lt;br /&gt;
*saves TVxb configuration&lt;br /&gt;
*if above grabbers are not detected (not installed) they will not be shown in the grabbers tree &lt;br /&gt;
&lt;br /&gt;
'''17.02.2010''' [23:05]&lt;br /&gt;
initial build 0.0.2 &lt;br /&gt;
*saving of configurations&lt;br /&gt;
*saving list of grabbers to be processed&lt;br /&gt;
*days to grab data&lt;br /&gt;
- you can now tray this, now it works&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''16.02.2010''' [21:51]&lt;br /&gt;
initial build 0.0.1&lt;br /&gt;
*editing of config XMLTV files (select channels to be downloaded)&lt;/div&gt;</summary>
		<author><name>Kingjohnjones</name></author>	</entry>

	<entry>
		<id>https://wiki.xmltv.org/index.php?title=Tv_check&amp;diff=1861</id>
		<title>Tv check</title>
		<link rel="alternate" type="text/html" href="https://wiki.xmltv.org/index.php?title=Tv_check&amp;diff=1861"/>
				<updated>2011-06-09T05:15:21Z</updated>
		
		<summary type="html">&lt;p&gt;Kingjohnjones: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''{{manpage|tv_check|1}}''' compares a listing of your favorite TV shows against an actual XMLTV broadcast schedule, and reports changes in your favorite shows as well as any extra episodes.&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
The TV-CHECK script has two modes, a configure [http://www.pacquiaomarquezfight.com pacquiao vs marquez] mode, which is used to build a show file and a scan mode to actually do the check.&lt;br /&gt;
&lt;br /&gt;
To use the script, first run a grabber (for example {{grabber|fi}}) to collect a schedule listing, then run TV-CHECK in configure mode to build a list of shows. Finally, run TV-CHECK in scan mode to produce your report. Once your show list is built, you typically just grab the listings and run the scan.&lt;br /&gt;
&lt;br /&gt;
==Configure Mode==&lt;br /&gt;
&lt;br /&gt;
 tv_check --configure ---shows=show_filename ---listing=listing_filename&lt;br /&gt;
&lt;br /&gt;
show_filename defaults to 'shows.xml'&lt;br /&gt;
&lt;br /&gt;
listing_filename defaults to 'tv.xml'&lt;br /&gt;
&lt;br /&gt;
Configure mode brings up a GUI used to create the show file.It uses actual schedule information to assist in choosing your shows.&lt;br /&gt;
&lt;br /&gt;
The application has two major frames. The upper frame contains the shows you want to check, the bottom frame is a selector used to add and modify rows in the upper frame.&lt;br /&gt;
&lt;br /&gt;
Clicking on a column label sorts the table by that column. Clicking again, reversed the sort order.&lt;br /&gt;
&lt;br /&gt;
Clicking on a row populates the selector frame with the contents of that row, to allow you to edit or delete that record.&lt;br /&gt;
&lt;br /&gt;
[[Image:Tv check doc.jpg]]&lt;br /&gt;
&lt;br /&gt;
The selector frame contains entry fields for each column. If you click on a value in a listbox, the associated entry field is automatically populated. If a day and/or channel is selected, the title listbox will contain only titles that match the selected day and/or channel. If you click on a value in a title listbox, all entry fields are populated with details for an episode of that show. There may be other episodes available, so if the one you wanted isn't chosen, correct the entry fields before adding the record.&lt;br /&gt;
&lt;br /&gt;
If the day field is left blank, only a title-scan is performed (see below)&lt;br /&gt;
&lt;br /&gt;
The following options are available (typically used to prevent false alarms due to syndication)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|TIMEONLY&lt;br /&gt;
|The title-scan only returns shows on the selected channel.&lt;br /&gt;
|-&lt;br /&gt;
|DAYONLY&lt;br /&gt;
|The title-scan only returns shows on the selected day.&lt;br /&gt;
|-&lt;br /&gt;
|TIMEONLY&lt;br /&gt;
|The title-scan only returns shows at the specific time.&lt;br /&gt;
|-&lt;br /&gt;
|NEARTIME&lt;br /&gt;
|The title-scan only returns shows within a few hours of the specified time.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The buttons to the left of the selection frames do the following:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|CLEAR SELECTION&lt;br /&gt;
|Blanks out all entry fields.&lt;br /&gt;
|-&lt;br /&gt;
|ADD SELECTION&lt;br /&gt;
|Takes all the entry fields and adds a record to the show table.&lt;br /&gt;
|-&lt;br /&gt;
|UPDATE SHOW&lt;br /&gt;
|Replaces the last selected row in the show table with the values in the selection fields.&lt;br /&gt;
|-&lt;br /&gt;
|DELETE SHOW&lt;br /&gt;
|Deletes the last selected row in the show table. (selection fields are not used)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The show file can be saved by an option under the File menu. The File menu also contains selections to open new listing and guide files, as well as exit the program.&lt;br /&gt;
==SCAN Mode==&lt;br /&gt;
&lt;br /&gt;
 tv_check --scan ---shows=show_filename ---listing=listing_filename --output=output_file --html --DDMM&lt;br /&gt;
&lt;br /&gt;
show_filename defaults to 'shows.xml'.&lt;br /&gt;
&lt;br /&gt;
listing_filename defaults to 'tv.xml'.&lt;br /&gt;
&lt;br /&gt;
output_file defaults to standard out.&lt;br /&gt;
&lt;br /&gt;
--html causes the output be in HTML (color). Default is text.&lt;br /&gt;
&lt;br /&gt;
--bluenew causes html output to highlight new episodes in blue (useful during repeat season)&lt;br /&gt;
&lt;br /&gt;
--DDMM causes Day/Month format in reports. Default is Month/Day (MMDD).&lt;br /&gt;
&lt;br /&gt;
--notruncate will prevent episodes more than 7 days away from being included in the extra-episode scan.&lt;br /&gt;
&lt;br /&gt;
This command does the actual scan. The scan uses three phases.&lt;br /&gt;
&lt;br /&gt;
In the first phase, if a specific day/time is provided for the show, that timeslot is checked to make sure it contains the expected show. If it does, the sub-title is given. If the timeslot doesn't contain the show, a warning is given and you're told what's in your shows place.&lt;br /&gt;
&lt;br /&gt;
After the timeslot is checked, a title-scan is performed that reports any other episodes matching your show's title. This title-scan can be limited using the options described above.&lt;br /&gt;
&lt;br /&gt;
Lastly, if the title contains an asterisk (*), a title wildcard scan is performed.  The * can match any character. A title of &amp;quot;*love*&amp;quot; will hit on any episodes in which &amp;quot;love&amp;quot; appears in the title, insensitive to case.&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
This script was created to deal with the TV networks moving everything around.&lt;br /&gt;
&lt;br /&gt;
If this script is helpful, why not drop the author or user email list a note of thanks!&lt;/div&gt;</summary>
		<author><name>Kingjohnjones</name></author>	</entry>

	<entry>
		<id>https://wiki.xmltv.org/index.php?title=HowtoWriteAGrabber&amp;diff=1860</id>
		<title>HowtoWriteAGrabber</title>
		<link rel="alternate" type="text/html" href="https://wiki.xmltv.org/index.php?title=HowtoWriteAGrabber&amp;diff=1860"/>
				<updated>2011-06-09T05:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Kingjohnjones: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to write a new grabber that works in the same way as the other grabbers.&lt;br /&gt;
&lt;br /&gt;
It describes the version of Xmltv version 0.5.43 and later.&lt;br /&gt;
==The Importance of Behaving Properly==&lt;br /&gt;
&lt;br /&gt;
For the Xmltv-grabbers to be useful to as many people as possible, it is very important that all grabbers work in the same way. It might be tempting to take a shortcut when implementing a grabber and only implement the features that you think that you need right now, or add a special mode of operation that suits your specific grabber. However, grabbers are typically used from lots of different applications and we cannot expect [http://www.diamondlinks.net link building service] all these applications to know about all different grabbers and their &amp;quot;quirks&amp;quot;. Therefore, the [[XmltvCapabilities]] page describes exactly what an application can expect from a grabber and [[HowtoUseGrabbers]] describes how grabbers shall be used. It is important that your grabber behaves as described on these pages. Otherwise, there is a risk that applications will not support your particular grabber unless someone adds specific support for your grabber to the application.&lt;br /&gt;
&lt;br /&gt;
This page describes [http://www.pacquiaomarquezfight.com pacquiao vs marquez] how to write a grabber that adheres to all these rules. I hope that by reading this page, you will see that it is actually fairly easy to write a compliant grabber.&lt;br /&gt;
==The XMLTV::Options module==&lt;br /&gt;
&lt;br /&gt;
The XMLTV::Options module is a new addition to the Xmltv framework and most older grabbers do currently not use it. It is used by tv_grab_se_swedb and tv_grab_cz, and my hope is that more and more grabbers will start to use it.&lt;br /&gt;
&lt;br /&gt;
The XMLTV::Options module provides a single method called [[ParseOptions]]. It implements almost all code needed for a grabber apart from the actual &amp;quot;grabbing&amp;quot;. It implements the --help, --version, --capabilities, --description options for the grabber and it handles the --configure and --configure-api options by calling callbacks supplied by the grabber. Furthermore, it handles the --output option by redirecting STDOUT to the correct file.&lt;br /&gt;
&lt;br /&gt;
A skeleton for a grabber can look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl -w&lt;br /&gt;
&lt;br /&gt;
=pod&lt;br /&gt;
&lt;br /&gt;
Your documentation here... Copy from tv_grab_cz for example.&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use XMLTV::Options qw/ParseOptions/;&lt;br /&gt;
&lt;br /&gt;
my( $opt, $conf ) = ParseOptions( { &lt;br /&gt;
     grabber_name =&amp;gt; &amp;quot;tv_grab_cz&amp;quot;,&lt;br /&gt;
     capabilities =&amp;gt; [qw/baseline manualconfig apiconfig/],&lt;br /&gt;
     stage_sub =&amp;gt; \&amp;amp;config_stage,&lt;br /&gt;
     listchannels_sub =&amp;gt; \&amp;amp;list_channels,&lt;br /&gt;
     version =&amp;gt; '$Id: HowtoWriteAGrabber.txt,v 1.9 2006/04/24 17:38:45 MattiasHolmlund Exp ed $',&lt;br /&gt;
     description =&amp;gt; &amp;quot;The Czech Republic (www.webstep.net)&amp;quot;,&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
# Get the actual data and print it to stdout.&lt;br /&gt;
&lt;br /&gt;
if( $is_success ) {&lt;br /&gt;
     exit 0;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
     exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub config_stage&lt;br /&gt;
{&lt;br /&gt;
     my( $stage, $conf ) = @_;&lt;br /&gt;
&lt;br /&gt;
     # Sample stage_sub that only needs a single stage.&lt;br /&gt;
&lt;br /&gt;
     die &amp;quot;Unknown stage $stage&amp;quot; if $stage ne &amp;quot;start&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
     my $result;&lt;br /&gt;
     my $writer = new XMLTV::Configure::Writer( OUTPUT =&amp;gt; \$result,&lt;br /&gt;
                                                              encoding =&amp;gt; 'iso-8859-1' );&lt;br /&gt;
     $writer-&amp;gt;start( { grabber =&amp;gt; 'tv_grab_se_swedb' } );&lt;br /&gt;
     $writer-&amp;gt;write_string( {&lt;br /&gt;
          id =&amp;gt; 'root-url', &lt;br /&gt;
          title =&amp;gt; [ [ 'Root URL for grabbing data', 'en' ] ],&lt;br /&gt;
          description =&amp;gt; [ &lt;br /&gt;
            [ 'The file at this URL describes which channels are available and ' .&lt;br /&gt;
              'where data can be found for them. ', 'en' ] ],&lt;br /&gt;
          default =&amp;gt; $default_root_url,&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
     $writer-&amp;gt;end( 'select-channels' );&lt;br /&gt;
&lt;br /&gt;
     return $result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub list_channels&lt;br /&gt;
{&lt;br /&gt;
     my( $conf, $opt ) = @_;&lt;br /&gt;
&lt;br /&gt;
     # Return a string containing an xml-document with &amp;lt;channel&amp;gt;-elements&lt;br /&gt;
     # for all available channels.&lt;br /&gt;
&lt;br /&gt;
     return $str;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To turn the above code into a working grabber, you need to fill in the list ''channels and config'' stage subroutines with actual code and add code that does the actual grabbing and prints xmltv-data to stdout. Everything else is handled by [[ParseOptions]].&lt;br /&gt;
===Writing a stage_sub===&lt;br /&gt;
&lt;br /&gt;
The stagesub shall return an xml-string that describes what information the grabber needs from the user in order to grab data. The xml-string shall be in the format described in the [[XmltvConfigurationDtd]]. The configstage sub is called during the configuration process. The configuration process can ask the user questions in several steps if it is necessary to know the answer to one question before it is possible to ask the next question. This is done by dividing the configuration into stages. The first stage is always called &amp;quot;start&amp;quot; and the final stage shall always be &amp;quot;select-channels&amp;quot;. The &amp;quot;select-channels&amp;quot; stage is handled by calling the listchannelssub instead of stagesub. For each stage, the user's answers on all previous stages are provided in the $conf parameter.&lt;br /&gt;
&lt;br /&gt;
This stage_sub asks first asks the user for a username and a password and then downloads a list of possible regions using the username and password.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub config_stage&lt;br /&gt;
{&lt;br /&gt;
     my( $stage, $conf ) = @_;&lt;br /&gt;
&lt;br /&gt;
     my $result;&lt;br /&gt;
&lt;br /&gt;
     my $writer = new XMLTV::Configure::Writer( OUTPUT =&amp;gt; \$result,&lt;br /&gt;
                                                              encoding =&amp;gt; 'iso-8859-1' );&lt;br /&gt;
     if( $stage eq 'start' ) {&lt;br /&gt;
          $writer-&amp;gt;start( { grabber =&amp;gt; 'tv_grab_se_swedb' } );&lt;br /&gt;
          $writer-&amp;gt;write_string( {&lt;br /&gt;
                id =&amp;gt; 'username', &lt;br /&gt;
                title =&amp;gt; [ [ 'Username', 'en' ] ],&lt;br /&gt;
                description =&amp;gt; [ &lt;br /&gt;
                 [ 'Your username at tvsite.com', 'en' ] ],&lt;br /&gt;
                default =&amp;gt; '',&lt;br /&gt;
            } );&lt;br /&gt;
          $writer-&amp;gt;write_secretstring( {&lt;br /&gt;
                id =&amp;gt; 'username', &lt;br /&gt;
                title =&amp;gt; [ [ 'Password', 'en' ] ],&lt;br /&gt;
                description =&amp;gt; [ &lt;br /&gt;
                 [ 'Your password at tvsite.com', 'en' ] ],&lt;br /&gt;
                default =&amp;gt; '',&lt;br /&gt;
            } );&lt;br /&gt;
          $writer-&amp;gt;end( 'select-region' );&lt;br /&gt;
     }&lt;br /&gt;
     elsif( $stage eq 'select-region' ) {&lt;br /&gt;
          my $username = $conf-&amp;gt;{'username'}-&amp;gt;[0];&lt;br /&gt;
          my $password = $conf-&amp;gt;{'password'}-&amp;gt;[0];&lt;br /&gt;
          my @regions = fetch_regions( $username, $password );&lt;br /&gt;
          $writer-&amp;gt;start_selectone( {&lt;br /&gt;
                id =&amp;gt; 'region', &lt;br /&gt;
                title =&amp;gt; [ [ 'Region', 'en' ], ],&lt;br /&gt;
                description =&amp;gt; [ [ 'The geographic region that you want to download data for.', 'en' ], ],&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          foreach my $reg (@regions) {&lt;br /&gt;
                $writer-&amp;gt;write_option( { &lt;br /&gt;
                     value=&amp;gt;$reg,&lt;br /&gt;
                     text=&amp;gt; =&amp;gt; [ [ $reg, 'en' ], ] &lt;br /&gt;
                } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          $writer-&amp;gt;end_selectone();&lt;br /&gt;
          $writer-&amp;gt;end( 'select-channels' );&lt;br /&gt;
     }&lt;br /&gt;
     else {&lt;br /&gt;
        die &amp;quot;Unknown stage $stage&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     return $result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Writing a listchannels_sub===&lt;br /&gt;
&lt;br /&gt;
The listchannels_sub shall return an xml-string listing all channels that the grabber can download data for given the current configuration. The channel listing shall be in the [[XMLTVFormat]] but without any programme-elements. The current configuration is supplied in the first parameter and all options passed on the command-line is in the second parameter.&lt;br /&gt;
===More Information===&lt;br /&gt;
&lt;br /&gt;
For more information, see the documentation for the modules XMLTV::Options, Xmltv::Configure::Writer and Xmltv::Configure as well as the source for tv_grab_se_swedb and tv_grab_cz.&lt;br /&gt;
&lt;br /&gt;
==Grabbing data==&lt;br /&gt;
&lt;br /&gt;
Most grabbers get their data by parsing webpages. There are many different perl-modules that you can do this with. Have a look at the existing grabbers and pick the method that you think is best.&lt;br /&gt;
&lt;br /&gt;
To do Describe some useful modules here.&lt;br /&gt;
==Validating a grabber==&lt;br /&gt;
&lt;br /&gt;
See [[XmltvValidation]].&lt;/div&gt;</summary>
		<author><name>Kingjohnjones</name></author>	</entry>

	</feed>