opml.py - zs - Zeitungsschau rss to email converter
 (HTM) git clone git://r-36.net/zs
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       opml.py (1295B)
       ---
            1 #
            2 # See LICENSE for licensing details.
            3 #
            4 # Copy me if you can.
            5 # by 20h
            6 #
            7 
            8 from lxml import etree
            9 from datetime import datetime
           10 
           11 def read(ostr):
           12         parser = etree.XMLParser(recover=True, encoding='utf-8')
           13         xml = etree.fromstring(ostr, parser)
           14 
           15         rssfeeds = []
           16 
           17         feeds = xml.xpath("//outline")
           18         for feed in feeds:
           19                 if "xmlUrl" in feed.attrib:
           20                         rssfeeds.append(feed.attrib["xmlUrl"])
           21                 elif "text" in feed.attrib:
           22                         rssfeeds.append(feed.attrib["text"])
           23         
           24         return rssfeeds
           25 
           26 def write(rssfeeds):
           27         opmle = etree.Element("opml")
           28 
           29         heade = etree.SubElement(opmle, "head")
           30         titlee = etree.SubElement(heade, "title")
           31 
           32         daten = datetime.now().strftime("%Y-%m-%dT%H:%M:%S%Z")
           33         datece = etree.SubElement(heade, "dateCreated")
           34         datece.text = daten
           35         dateme = etree.SubElement(heade, "dateModified")
           36         dateme.text = daten
           37         ownerne = etree.SubElement(heade, "ownerName")
           38         ownerne.text = "Me"
           39         docse = etree.SubElement(heade, "docs")
           40         docse.text = "http://dev.opml.org/spec2.html"
           41 
           42         bodye = etree.SubElement(opmle, "body")
           43 
           44         for rss in rssfeeds:
           45                 outlinee = etree.SubElement(bodye, "outline")
           46                 outlinee.attrib["type"] = "rss"
           47                 outlinee.attrib["text"] = rss
           48                 outlinee.attrib["xmlUrl"] = rss
           49         
           50         return etree.tostring(opmle, encoding="utf-8", \
           51                         pretty_print=True, \
           52                         xml_declaration=True).decode("utf-8")
           53