Metadata-Version: 1.0 Name: pynzb Version: 0.1.0 Summary: pynzb is a unified API for parsing NZB files, with several concrete implementations included Home-page: http://github.com/ericflo/pynzb/tree/master Author: Eric Florenzano Author-email: floguy@gmail.com License: BSD Description: Introduction ------------ NZB is an XML-based file format for retrieving posts from NNTP (Usenet) servers. Since NZB is XML-based, it's relatively easy to build one-off parsers to parse NZB files. This project is an attempt to consolidate those many one-off NZB parsers into one simple interface. This package includes three implementations: one based on expat, another based on ElementTree, and a final implementation based on lxml. The order in which they were listed is in order of compatibility. The expat version should work on all versions of Python > 2.0, the lxml one will work on all versions > 2.5, and lxml will only work if you have lxml installed. A Note on Installing lxml ------------------------- While lxml is not a requirement, I have had a hard time installing lxml in the past. I have found this set of commands to work perfectly: .. sourcecode:: bash STATIC_DEPS=true easy_install 'lxml>=2.2beta4' STATIC_DEPS=true sudo easy_install 'lxml>=2.2beta4' API Documentation ----------------- Accessing the Default Parser ============================ Simply import nzb_parser from the pynzb package. It's an instantiated version of the fastest available parser that your system can support. Other Parser Locations ====================== ``ExpatNZBParser``: Available in the ``pynzb.expat_nzb`` namespace. ``ETreeNZBParser``: Available in the ``pynzb.etree_nzb`` namespace. ``LXMLNZBParser``: Available in the ``pynzb.lxml_nzb`` namespace. Using the NZB Parser ==================== If you're using a specific parser, like the ``ETreeNZBParser``, you will first have to instantiate it: .. sourcecode:: python nzb_parser = ETreeNZBParser() Otherwise, you can just import the default parser for your system: .. sourcecode:: python from pynzb import nzb_parser Then, simply call the ``parse`` method, giving it the xml string as the only argument: .. sourcecode:: python files = nzb_parser.parse('') This will return a list of ``NZBFiles`` for you to use. NZBFile Objects =============== All of the parsers return ``NZBFile`` objects, which are objects with the following properties: ``poster``: The name of the user who posted the file to the newsgroup. ``date``: A ``datetime.date`` representation of when the server first saw the file. ``subject``: The subject used when the user posted the file to the newsgroup. ``groups``: A list of strings representing the newsgroups in which this file may be found. ``segments``: A list of ``NZBSegment`` objects talking about where to get the contents of this file. NZBSegment Objects ================== Each ``NZBFile`` has a list of ``NZBSegment`` objects, which include information on how to retrieve a part of a file. Here's what you can find on an ``NZBSegment`` object: ``number``: The number of the segment in the list of files. ``bytes``: The size of the segment, in bytes. ``message_id``: The Message-ID of the segment (useful for retrieving the full contents) Example -------- In this example, we will grab an Ubuntu NZB and parse the file, printing out some information about each file and its segments. .. sourcecode:: python from pynzb import nzb_parser from urllib2 import urlopen # Grab a sample Ubuntu NZB ubuntu_nzb = urlopen('http://media.eflorenzano.com/misc/sample-ubuntu-nzb.nzb').read() # Parse the NZB into files files = nzb_parser.parse(ubuntu_nzb) # Print out each file's subject and the first two segment message ids for nzb_file in files: print nzb_file.subject for segment in nzb_file.segments[:2]: print ' ' + segment.message_id if len(nzb_file.segments) > 2: print ' ...' Keywords: nzb,parser,xml Platform: UNKNOWN Classifier: Programming Language :: Python Classifier: Topic :: Software Development :: Libraries :: Python Modules