-
Notifications
You must be signed in to change notification settings - Fork 0
Modified clone of https://bitbucket.org/jfunk/python-xmltv
License
justinhorner/python-xmltv-alt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
python-xmltvalt ============ Introduction ------------ python-xmltvalt 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://wiki.xmltv.org. This is a fork of the original 'pythong-xmltv' project (https://pypi.org/project/python-xmltv/) and has some slight modifications to resolve issues I found when trying to implement solutions for another (forthcoming) open source project. Many thanks to the original author, and the individual who cloned the original code (https://github.com/mforkel/python-xmltv). Requirements ------------ There are no requirements for Python 3.12 and up. Usage ----- Usage of the module is generally straight-forward:: import xmltv_alt from pprint import pprint # If you need to change the locale: # xmltv_alt.locale = 'Latin-1' # If you need to change the date format used in the XMLTV file: # xmltv_alt.date_format = '%Y%m%d%H%M%S %Z' filename = '/path/to/xmltv/file' # Print info for XMLTV file (source, etc.) pprint(xmltv_alt.read_data(open(filename, 'r'))) # Print channels pprint(xmltv_alt.read_channels(open(filename, 'r'))) # Print programmes pprint(xmltv_alt.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 the github repo https://github.com/justinhorner/python-xmltv-alt
About
Modified clone of https://bitbucket.org/jfunk/python-xmltv
Topics
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published