예제 #1
0
def addurl(ids=''):
    db = RSS_Resource_db()
    if ids:
        rids = map(parse_rid, ids.split(','))
    else:
        rids = []

    url = request.form['url']
    if not url:
        raise NotFound()

    while url != None:
        resource = RSS_Resource(url, db, generate_id)
        url, seq = resource.redirect_info(db)

    if resource.id() not in rids:
        rids.append(resource.id())

    ridlist = map(format_rid, rids)
    raise RequestRedirect(url_for('page', ids=','.join(ridlist)))
예제 #2
0
파일: __init__.py 프로젝트: Tallefer/jabrss
def addurl(ids=''):
    db = RSS_Resource_db()
    if ids:
        rids = map(parse_rid, ids.split(','))
    else:
        rids = []

    url = request.form['url']
    if not url:
        raise NotFound()

    while url != None:
        resource = RSS_Resource(url, db, generate_id)
        url, seq = resource.redirect_info(db)

    if resource.id() not in rids:
        rids.append(resource.id())

    ridlist = map(format_rid, rids)
    raise RequestRedirect(url_for('page', ids=','.join(ridlist)))
예제 #3
0
def opml(ids=''):
    db = RSS_Resource_db()
    if ids:
        rids = map(parse_rid, ids.split(','))
    else:
        rids = []
    items = []

    for rid in rids:
        try:
            url = RSS_Resource_id2url(rid, db.cursor())
            while url != None:
                resource = RSS_Resource(url, db, generate_id=generate_id)
                url, seq = resource.redirect_info(db)

            items.append(resource)
        except KeyError:
            pass

    response = current_app.response_class(render_template('subscriptions.xml', items=items), mimetype='application/xml')
    return response
예제 #4
0
파일: __init__.py 프로젝트: Tallefer/jabrss
def opml(ids=''):
    db = RSS_Resource_db()
    if ids:
        rids = map(parse_rid, ids.split(','))
    else:
        rids = []
    items = []

    for rid in rids:
        try:
            url = RSS_Resource_id2url(rid, db.cursor())
            while url != None:
                resource = RSS_Resource(url, db, generate_id=generate_id)
                url, seq = resource.redirect_info(db)

            items.append(resource)
        except KeyError:
            pass

    response = current_app.response_class(render_template('subscriptions.xml', items=items), mimetype='application/xml')
    return response
예제 #5
0
def feed(url, db=None, templ=app.jinja_env.get_template('feed.html')):
    now = int(time.time())
    if db == None:
        db = RSS_Resource_db()

    while url != None:
        resource = RSS_Resource(url, db, generate_id=generate_id)
        url, seq = resource.redirect_info(db)

    next_update = resource.next_update(False)

    if next_update <= now:
        new_items, next_item_id, redirect_resource, redirect_seq, redirects = resource.update()

        if redirect_resource != None:
            resource = redirect_resource

    channel_info = resource.channel_info()
    channel_title = channel_info.title
    if not channel_title.strip():
        channel_title = channel_info.link
    if not channel_title.strip():
        channel_title = resource.url()

    last_updated, last_modified, invalid_since = resource.times()
    last_updated = time.asctime(time.gmtime(last_updated))
    if last_modified:
        last_modified = time.asctime(time.gmtime(last_modified))

    if invalid_since:
        error_info = resource.error_info()
    else:
        error_info = ''

    items, last_id = resource.get_headlines(None)
    items = items[-15:]
    items.reverse()

    for item in items:
        item.published = format_timestamp(item.published)

    return (resource.id(), templ.render(rid=format_rid(resource.id()),
                                        url=resource.url(),
                                        link=channel_info.link,
                                        title=channel_title,
                                        penalty=100*resource.penalty() / 1024,
                                        updated=last_modified,
                                        polled=last_updated,
                                        error_info=error_info,
                                        items=items))
예제 #6
0
init_parserss()
db = RSS_Resource_db()
now = int(time.time())
rewriter = UrlRewriter(rewrite_db)

epub = ZipFile(epubname, 'w', ZIP_DEFLATED)
epub.writestr('mimetype', 'application/epub+zip', ZIP_STORED)
epub.writestr('META-INF/container.xml', CONTAINER_XML)

sess = get_http_session()
rss_titles, pageinfo, visited, resources = [], [], {}, {}

for rss in args:
    while rss != None:
        resource = RSS_Resource(rss, db)
        rss, seqnr = resource.redirect_info(db)

    resource.update(db)
    channel_info = resource.channel_info()
    items, nextid = resource.get_headlines(None, None, db)

    rss_titles.append(channel_info.title)

    for item in items:
        if item.published and item.published < now - age * 60 * 60:
            continue

        url = rewriter.rewrite(item.link)

        if visited.get(url):
예제 #7
0
파일: __init__.py 프로젝트: Tallefer/jabrss
def feed(url, rewriter, db=None, templ=app.jinja_env.get_template('feed.html')):
    now = int(time.time())
    if db == None:
        db = RSS_Resource_db()

    while url != None:
        resource = RSS_Resource(url, db, generate_id=generate_id)
        url, seq = resource.redirect_info(db)

    next_update = resource.next_update(False)

    if next_update <= now:
        new_items, next_item_id, redirect_resource, redirect_seq, redirects = resource.update()

        if redirect_resource != None:
            resource = redirect_resource

    channel_info = resource.channel_info()
    channel_title = channel_info.title
    if not channel_title.strip():
        channel_title = channel_info.link
    if not channel_title.strip():
        channel_title = resource.url()

    last_updated, last_modified, invalid_since = resource.times()
    last_updated = time.asctime(time.gmtime(last_updated))
    if last_modified:
        last_modified = time.asctime(time.gmtime(last_modified))

    if invalid_since:
        error_info = resource.error_info()
    else:
        error_info = ''

    items, last_id = resource.get_headlines(None)
    items = items[-15:]
    items.reverse()

    for item in items:
        item.published = format_timestamp(item.published)
        item.link = rewriter.rewrite(item.link)

    return (resource.id(), templ.render(rid=format_rid(resource.id()),
                                        url=resource.url(),
                                        link=channel_info.link,
                                        title=channel_title,
                                        penalty=100*resource.penalty() / 1024,
                                        updated=last_modified,
                                        polled=last_updated,
                                        error_info=error_info,
                                        items=items))