A Python Module for Reading and Writing XMLTV Files
Project description
python-xmltv
============
Introduction
------------
python-xmltv is a Python module that provides access to XMLTV data. XMLTV is
an XML format for storing TV listings.
More information on XMLTV can be found at http://membled.com/work/apps/xmltv/
Requirements
------------
There are no requirements for Python 2.5 and up. For older versions,
ElementTree is required, which can be found at
http://effbot.org/zone/element-index.htm
Usage
-----
Usage of the module is generally straight-forward::
import xmltv
from pprint import pprint
# If you need to change the locale:
# xmltv.locale = 'Latin-1'
# If you need to change the date format used in the XMLTV file:
# xmltv.date_format = '%Y%m%d%H%M%S %Z'
filename = '/path/to/xmltv/file'
# Print info for XMLTV file (source, etc.)
pprint(xmltv.read_data(open(filename, 'r')))
# Print channels
pprint(xmltv.read_channels(open(filename, 'r')))
# Print programmes
pprint(xmltv.read_programmes(open(filename, 'r')))
There are currently three functions for reading that should be used:
**read_data** ``(file_object) -> dict``
Get the source and other info from an XMLTV file.
Returns a dictionary of <tv> attributes, eg::
{'date': u'20030702230041 -0300',
'generator-info-name': u'tv_grab_na V3.20030629',
'generator-info-url': u'http://sourceforge.net/projects/xmltv',
'source-info-name': u'Zap2It',
'source-info-url': u'http://www.zap2it.com'}
**read_channels** ``(file_object) -> list``
Get all of the channels.
Returns a list of hashes, each representing a channel, eg::
[{'display-name': [(u'Channel 10 ELTV', u'')],
'id': u'C10eltv.zap2it.com'},
{'display-name': [(u'Channel 11 CBHT', u'')],
'icon': [{'desc': '','src': u'http://tvlistings2.zap2it.com/tms_network_logos/cbc.gif'}],
'id': u'C11cbht.zap2it.com'}]
**read_programmes** ``(file_object) -> list``
Get all of the programmes.
Returns a list of hashes, each representing a programme, eg::
[{'audio': [{'stereo': [u'stereo']}],
'category': [(u'Biz', u''), (u'Fin', u'')],
'channel': u'C23robtv.zap2it.com',
'start': u'20030702000000 ADT',
'stop': u'20030702003000 ADT',
'title': [(u'This Week in Business', u'')]},
{'audio': [{'stereo': [u'stereo']}],
'channel': u'C36wuhf.zap2it.com',
'desc': [(u'In an effort to grow up, George proposes marriage to former girlfriend Susan.',
u'')],
'rating': [{'system': u'VCHIP', 'value': u'PG'}],
'start': u'20030702000000 ADT',
'stop': u'20030702003000 ADT',
'sub-title': [(u'The Engagement', u'')],
'subtitles': [{'type': u'teletext'}],
'title': [(u'Seinfeld', u'')]}]
There is also a Writer class. It should always write proper XMLTV data. All
strings, except for dictionary keys, should be in Unicode.
It contains the following methods:
**__init__** ``(fp, encoding="iso-8859-1", date=None, source_info_url=None, source_info_name=None, generator_info_url=None, generator_info_name=None)`` -> ``Writer``
Returns a Writer object.
Arguments:
``fp``
A File object to write XMLTV data to
``encoding``
The text encoding that will be used. *Defaults to
``iso-8859-1``*
``date``
The date this data was generated. *Optional*
``source_info_url``
A URL for information about the source of the data. *Optional*
``source_info_name``
A human readable description of ``source_info_url``.
*Optional*
``generator_info_url``
A URL for information about the program that is generating the
XMLTV document. *Optional*
``generator_info_name``
A human readable description of ``generator_info_url``.
*Optional*
**write_channel** ``(channel)``
Write a channel dictionary
Here's an example channel dictionary::
{'display-name': [(u'Channel 11 CBHT', u'en')],
'icon': [{'src': u'http://tvlistings2.zap2it.com/tms_network_logos/cbc.gif'}],
'id': u'C11cbht.zap2it.com',
'url': u:'http://www.cbc.com'}
**write_programme** ``(programme)``
Write a programme dictionary
Here's an example programme dictionary::
{'audio': [{'stereo': u'stereo'}],
'category': [(u'Comedy', u'')],
'channel': u'C36wuhf.zap2it.com',
'country': [(u'USA', u'')],
'credits': [{'producer': [u'Larry David'], 'actor': [u'Jerry Seinfeld']}],
'date': [u'1995'],
'desc': [(u'In an effort to grow up, George proposes marriage to former girlfriend Susan.',
u'')],
'episode-num': [(u'7 . 1 . 1/1', u'xmltv_ns')],
'language': [(u'English', u'')],
'last-chance': [(u'Hah!', u'')],
'length': [{'units': u'minutes', 'length': 22}],
'new': [1],
'orig-language': [(u'English', u'')],
'premiere': [(u'Not really. Just testing', u'en')],
'previously-shown': [{'channel': u'C12whdh.zap2it.com',
'start': u'19950921103000 ADT'}],
'rating': [{'icon': [{'height': u'64',
'src': u'http://some.ratings/PGicon.png',
'width': u'64'}],
'system': u'VCHIP',
'value': u'PG'}],
'star-rating': [{'icon': [{'height': u'32',
'src': u'http://some.star/icon.png',
'width': u'32'}],
'value': u'4/5'}],
'start': u'20030702000000 ADT',
'stop': u'20030702003000 ADT',
'sub-title': [(u'The Engagement', u'')],
'subtitles': [{'type': u'teletext', 'language': (u'English', u'')}],
'title': [(u'Seinfeld', u'')],
'video': [{'colour': 1, 'aspect': u'4:3', 'present': 1}]}
**end** ``()``
Write end tag
Call this before closing a file.
Reporting Bugs
--------------
Please send all bugs, comments, and questions to James Oakley
<jfunk@funktronics.ca>
Changelog
=========
Version 1.4.3
* Add pretty_print option to Writer.write()
Version 1.4.2
-------------
* Text encoding fixes. (Patch from Jan Sušnik)
Version 1.4.1
-------------
* Updated MANIFEST.in to include all doc files
Version 1.4
-----------
* Updated to reflect current XMLTV DTD (patch from Igor Sobolev)
* Clean up for pypi release
============
Introduction
------------
python-xmltv is a Python module that provides access to XMLTV data. XMLTV is
an XML format for storing TV listings.
More information on XMLTV can be found at http://membled.com/work/apps/xmltv/
Requirements
------------
There are no requirements for Python 2.5 and up. For older versions,
ElementTree is required, which can be found at
http://effbot.org/zone/element-index.htm
Usage
-----
Usage of the module is generally straight-forward::
import xmltv
from pprint import pprint
# If you need to change the locale:
# xmltv.locale = 'Latin-1'
# If you need to change the date format used in the XMLTV file:
# xmltv.date_format = '%Y%m%d%H%M%S %Z'
filename = '/path/to/xmltv/file'
# Print info for XMLTV file (source, etc.)
pprint(xmltv.read_data(open(filename, 'r')))
# Print channels
pprint(xmltv.read_channels(open(filename, 'r')))
# Print programmes
pprint(xmltv.read_programmes(open(filename, 'r')))
There are currently three functions for reading that should be used:
**read_data** ``(file_object) -> dict``
Get the source and other info from an XMLTV file.
Returns a dictionary of <tv> attributes, eg::
{'date': u'20030702230041 -0300',
'generator-info-name': u'tv_grab_na V3.20030629',
'generator-info-url': u'http://sourceforge.net/projects/xmltv',
'source-info-name': u'Zap2It',
'source-info-url': u'http://www.zap2it.com'}
**read_channels** ``(file_object) -> list``
Get all of the channels.
Returns a list of hashes, each representing a channel, eg::
[{'display-name': [(u'Channel 10 ELTV', u'')],
'id': u'C10eltv.zap2it.com'},
{'display-name': [(u'Channel 11 CBHT', u'')],
'icon': [{'desc': '','src': u'http://tvlistings2.zap2it.com/tms_network_logos/cbc.gif'}],
'id': u'C11cbht.zap2it.com'}]
**read_programmes** ``(file_object) -> list``
Get all of the programmes.
Returns a list of hashes, each representing a programme, eg::
[{'audio': [{'stereo': [u'stereo']}],
'category': [(u'Biz', u''), (u'Fin', u'')],
'channel': u'C23robtv.zap2it.com',
'start': u'20030702000000 ADT',
'stop': u'20030702003000 ADT',
'title': [(u'This Week in Business', u'')]},
{'audio': [{'stereo': [u'stereo']}],
'channel': u'C36wuhf.zap2it.com',
'desc': [(u'In an effort to grow up, George proposes marriage to former girlfriend Susan.',
u'')],
'rating': [{'system': u'VCHIP', 'value': u'PG'}],
'start': u'20030702000000 ADT',
'stop': u'20030702003000 ADT',
'sub-title': [(u'The Engagement', u'')],
'subtitles': [{'type': u'teletext'}],
'title': [(u'Seinfeld', u'')]}]
There is also a Writer class. It should always write proper XMLTV data. All
strings, except for dictionary keys, should be in Unicode.
It contains the following methods:
**__init__** ``(fp, encoding="iso-8859-1", date=None, source_info_url=None, source_info_name=None, generator_info_url=None, generator_info_name=None)`` -> ``Writer``
Returns a Writer object.
Arguments:
``fp``
A File object to write XMLTV data to
``encoding``
The text encoding that will be used. *Defaults to
``iso-8859-1``*
``date``
The date this data was generated. *Optional*
``source_info_url``
A URL for information about the source of the data. *Optional*
``source_info_name``
A human readable description of ``source_info_url``.
*Optional*
``generator_info_url``
A URL for information about the program that is generating the
XMLTV document. *Optional*
``generator_info_name``
A human readable description of ``generator_info_url``.
*Optional*
**write_channel** ``(channel)``
Write a channel dictionary
Here's an example channel dictionary::
{'display-name': [(u'Channel 11 CBHT', u'en')],
'icon': [{'src': u'http://tvlistings2.zap2it.com/tms_network_logos/cbc.gif'}],
'id': u'C11cbht.zap2it.com',
'url': u:'http://www.cbc.com'}
**write_programme** ``(programme)``
Write a programme dictionary
Here's an example programme dictionary::
{'audio': [{'stereo': u'stereo'}],
'category': [(u'Comedy', u'')],
'channel': u'C36wuhf.zap2it.com',
'country': [(u'USA', u'')],
'credits': [{'producer': [u'Larry David'], 'actor': [u'Jerry Seinfeld']}],
'date': [u'1995'],
'desc': [(u'In an effort to grow up, George proposes marriage to former girlfriend Susan.',
u'')],
'episode-num': [(u'7 . 1 . 1/1', u'xmltv_ns')],
'language': [(u'English', u'')],
'last-chance': [(u'Hah!', u'')],
'length': [{'units': u'minutes', 'length': 22}],
'new': [1],
'orig-language': [(u'English', u'')],
'premiere': [(u'Not really. Just testing', u'en')],
'previously-shown': [{'channel': u'C12whdh.zap2it.com',
'start': u'19950921103000 ADT'}],
'rating': [{'icon': [{'height': u'64',
'src': u'http://some.ratings/PGicon.png',
'width': u'64'}],
'system': u'VCHIP',
'value': u'PG'}],
'star-rating': [{'icon': [{'height': u'32',
'src': u'http://some.star/icon.png',
'width': u'32'}],
'value': u'4/5'}],
'start': u'20030702000000 ADT',
'stop': u'20030702003000 ADT',
'sub-title': [(u'The Engagement', u'')],
'subtitles': [{'type': u'teletext', 'language': (u'English', u'')}],
'title': [(u'Seinfeld', u'')],
'video': [{'colour': 1, 'aspect': u'4:3', 'present': 1}]}
**end** ``()``
Write end tag
Call this before closing a file.
Reporting Bugs
--------------
Please send all bugs, comments, and questions to James Oakley
<jfunk@funktronics.ca>
Changelog
=========
Version 1.4.3
* Add pretty_print option to Writer.write()
Version 1.4.2
-------------
* Text encoding fixes. (Patch from Jan Sušnik)
Version 1.4.1
-------------
* Updated MANIFEST.in to include all doc files
Version 1.4
-----------
* Updated to reflect current XMLTV DTD (patch from Igor Sobolev)
* Clean up for pypi release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
python-xmltv-1.4.3.tar.gz
(21.9 kB
view details)
File details
Details for the file python-xmltv-1.4.3.tar.gz
.
File metadata
- Download URL: python-xmltv-1.4.3.tar.gz
- Upload date:
- Size: 21.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e99d961a9009d8df098f0b56273cbdf732fb8000bed96def5cf2cea7fc73bed5 |
|
MD5 | 0e0e0606c60669d15565e237d7db78b5 |
|
BLAKE2b-256 | 8918e51df49b864a31f4a5b08a50b7cf4a2ef7e2192ef355152a02943082f083 |