ttwtxt support. - zs - Zeitungsschau rss to email converter
 (HTM) git clone git://r-36.net/zs
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 19899f9da5895c6493f499e00cd0feec00732f1f
 (DIR) parent 96b774b6b2233be6b3959e9ceceacdcc91463105
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Fri,  8 Sep 2017 13:21:59 +0200
       
       ttwtxt support.
       
       Diffstat:
         zeitungsschau/feed.py               |      43 ++++++++++++++++++++++++++++++
       
       1 file changed, 43 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/zeitungsschau/feed.py b/zeitungsschau/feed.py
       t@@ -40,6 +40,45 @@ def parsexml(astr):
                # Throw XML parsing errors so we can blame the feed authors.
                return xml
        
       +def parsetwtxtfeed(astr, uri):
       +        feed = {}
       +        articles = []
       +        now = datetime.now(pytz.utc)
       +        now = now.replace(hour=20, minute=20, second=20, microsecond=20)
       +
       +        feed["title"] = uri
       +        feed["link"] = uri
       +        feed["updated"] = now
       +
       +        lines = astr.split("\n");
       +        for line in lines:
       +                # People already reinterpret the standard. :(
       +                if len(line) == 0:
       +                        continue
       +                if line[0] == "#":
       +                        continue
       +
       +                createdtxt, ltext = line.split("\t", 1)
       +                created = parseiso(createdtxt, now)
       +
       +                article = {}
       +                article["id"] = createdtxt
       +                article["title"] = ltext
       +                article["text"] = ltext
       +                article["uuid"] = createdtxt
       +                article["updated"] = created
       +
       +                if article["updated"] == now:
       +                        article["uuid"] = ""
       +                else:
       +                        article["uuid"] = "%s" % (article["updated"])
       +
       +                articles.append(article)
       +
       +        feed["articles"] = articles
       +
       +        return feed
       +
        def parsejsonfeed(astr):
                js = json.loads(astr)
        
       t@@ -370,9 +409,13 @@ def fetch(uri):
                        if len(suri) > 1:
                                if suri[-1] == "json":
                                        ftype = "json"
       +                        elif suri[-1] == "txt":
       +                                ftype = "twtxt"
        
                if ftype == "xml":
                        return (rcode, parseatomfeed(fval))
       +        elif ftype == "twtxt":
       +                return (rcode, parsetwtxtfeed(fval.decode("utf-8"), uri))
                else:
                        return (rcode, parsejsonfeed(fval.decode("utf-8")))