예제 #1
0
def pages(thread):
    centipede=Centipede.get_by_key_name(thread['url'])
    d={}
    urls=[]
    logging.info(thread['url'])
    centipede_url_components=urlparse.urlparse(thread['url'])
    centipede_url_netloc_path=centipede_url_components.netloc + centipede_url_components.path
    for page in scrapemark.scrape("""
        <div class="pages" id="pageDivTop">
        {*
        <a href="{{ [pages] }}"></a>
        *}
        <span></span>
        </div>
        """, url=thread['url'])['pages'][:-1]:
        d[page]=1
    if centipede is None:
        centipede=Centipede(key_name=thread['url'], species=db.Category(u'天涯经济'), author=thread['author'], title=thread['title'], comments=thread['comments'], views=thread['views'], pedes=[])
        urls=[db.Link(thread['url'])]
        urls.extend([db.Link(key) for key in d.keys()[:-2]])
        qr_key=centipede_url_components.netloc + '.'.join([centipede_url_components.path.split('.')[0],'png'])
        img=urlfetch.fetch('http://chart.apis.google.com/chart?cht=qr&chs=200x200&chl='+urllib2.quote(host_url+centipede_url_netloc_path))
        qr_content=StaticContent(key_name=qr_key, body=img.content, content_type='image/png')
        qr_content.put()
    else:
        urls=[db.Link(centipede.next)]
        urls.extend([db.Link(url) for url in d.keys()[:-2] if url not in centipede.pedes])
    logging.info(urls)
    centipede.pedes.extend(urls)
    centipede.next=db.Link(d.keys()[-2])
    for url in urls:
        yield url
    centipede.put()
    content=StaticContent.get_by_key_name(centipede_url_netloc_path)
    stanzas=[stanza for stanza in new_stanzas(thread, centipede)]
    if content is None:
        content=StaticContent(key_name=centipede_url_netloc_path, template=db.Text(template('centipede.html', centipede=centipede, stanzas=stanzas, template_next=True)), content_type='text/html')
    else:
        content.template=db.Text(template(content.template, centipede=centipede, stanzas=stanzas, template_next=True))
#    db.put(stanzas)
    content.put()
    memcache.delete(content.key().name())
예제 #2
0
파일: main.py 프로젝트: motord/coconut
def get_content(path):
    if path=='':
        path='index.html'
#    memcache.delete(path)
    content=memcache.get(path)
    if content is None:
        content=StaticContent.get_by_key_name(path)
        if path=='index.html':
            centipedes=Centipede.gql("ORDER BY modified DESC LIMIT 25")
            content=StaticContent(key_name=path, body=db.Text(template('index.html', centipedes=centipedes)).encode('utf8'), content_type='text/html')
            content.put()
        else:
            if content is None:
                return HTTPError(404, "Page not found")
            else:
                if content.template:
                    content.template=db.Text(template(content.template, template_next=False, stanzas=[]))
                    content.body= content.template.encode('utf8')

#        memcache.set(path, content, 10800)

    return _output(content)