улучшеный rss gate

Ответ на комментарий от 51t
# -*- coding: utf-8 -*-

import base64, hashlib, time, html2text, feedparser

RSSURL='http://51t.ru/rss/pipe.2032'
ECHO='pipe.2032'
ADDR='rssarea,2032'

def hsh(s):
    return base64.urlsafe_b64encode( hashlib.sha256(s).digest() ).replace('-','A').replace('_','z')[:20]

def ru(fn):
    try: return open(fn).read().decode('utf-8')
    except: return ''

def gts():
    return int(time.time())

def newmsg(ea,msgfrom,addr,msgto,subj,txt):
    s = 'ii/ok\n%s\n%s\n%s\n%s\n%s\n%s\n\n%s' % (ea,gts(),msgfrom,addr,msgto,subj,txt)
    h = hsh(s)
    if len(s) < 65536:
        open('msg/%s' % h,'wb').write(s)
        open('echo/%s' % ea,'ab').write(h + '\n')

def parse_news_msgs(rurl,ea):
    o = feedparser.parse(rurl)
    prev = ru('rssdb/%s' % ea).splitlines()
    for q in reversed(o.entries):
        if not q.guid in prev:
            h = html2text.HTML2Text()
            h.body_width=0; h.ignore_links = False; h.ignore_images = True
            txt = h.handle(q.description).encode('utf-8')
            newmsg(ea,q.author.encode('utf-8') or 'rss',ADDR,'All',q.title.encode('utf-8'),txt)
            open('rssdb/%s' % ea,'a').write('%s\n' % q.guid)

parse_news_msgs(RSSURL,ECHO)
Ответы на это сообщение: spline (2014-08-07 04:49:09) spline (2014-08-07 10:14:56)
51t (2014-08-07 03:30:52) [Ответить]
Предыдущее сообщение Следующее сообщение