示例#1
0
 def GET(self, id):
     db = NovelDB()
     novel = db.get_novel_info(id)
     db.incr_view_count(id)
     return render_to_response("novel_info", {
         "novel": novel
     })
示例#2
0
    def POST(self):
        url = web.input(url="").url
        url = get_real_url(url)
        db = NovelDB()

        # baidu 有两种格式的url
        if url.startswith("http://tieba.baidu.com"):
            _id = re.search(r"\d+$", url).group()
            urls = [
                "http://tieba.baidu.com/p/%s" % _id,
                "http://tieba.baidu.com/f?kz=%s" % _id,
            ]
            _novel = max( db.get_novel_byurl(url) for url in urls )
        else:
            _novel = db.get_novel_byurl(url)

        if _novel:
            return simplejson.dumps({"status": "existed", "msg": "/novel/%s" % _novel.id})
        # 增加返回默认标签
        username, title, url, tag = get_thread_info(url)
        _novel = db.get_novel_byurl(url)
        if _novel:
            return simplejson.dumps({"status": "existed", "msg": "/novel/%s" % _novel.id})        
        if username and title:
            return simplejson.dumps({"status": "ok", "username": username, "title": title, "url": url, "tag": tag})
        return simplejson.dumps({"status": "error", "msg": "发生了错误,请检查地址的正确性"})
示例#3
0
    def GET(self, id):
        db = NovelDB()
        novel = db.get_novel_info(id, cache=False)
        if novel is None or novel.status in (0, 100):
            raise web.notfound()
        db.incr_view_count(id)
        # 获得推荐小说
        rd_recommends = db.get_random_recommend(id=id)

        page = web.input(page=1).page
        page_count = db.get_novel_pageinfo(id)
        pager = Paginator(page_count, 1, page)
        try:
            novel_html = open(get_novel_html_path(id, pager.page), "r")
        except:
            return "内容还没准备好,稍等一会哦:)"

        # 访问twisted更新
        temp_date = novel.last_update_time.replace(tzinfo=None)
        if not pager.has_next() and novel.status not in (
                1, 3) and (datetime.datetime.now() - temp_date).seconds > 3600:
            start_work(id)
            novel = db.get_novel_info(id, cache=False)
        novel.tag = db.get_tags_by_id(id)
        novel.view_count = db.get_view_count(id)

        return render_to_response(
            "show_novel", {
                "novel_id": id,
                "novel": novel,
                "novel_html": novel_html,
                "pager": pager,
                "rd_recommends": rd_recommends,
            })
示例#4
0
 def GET(self):
     args = web.input(type="view")
     db = NovelDB()
     if args.type == "view":
         return render_to_response("ajax/top_view", {"toshows": db.get_view_top()})
     elif args.type == "latest":
         return render_to_response("ajax/top_latest", {"toshows": db.get_latest_top()})
     return "ajax ready"
示例#5
0
    def GET(self):
        db = NovelDB()
        page = web.input(page=1).page

        pager, toshows = db.get_novels_by_page(page, self.PERPAGE, all=False)
        return render_to_response("checkall", {
            "pager": pager,
            "toshows": toshows
        })
示例#6
0
 def GET(self):
     db = NovelDB()
     page = web.input(page=1).page
     
     pager, toshows = db.get_novels_by_page(page, self.PERPAGE, all=False)
     return render_to_response("checkall", {
         "pager": pager,
         "toshows": toshows
     })        
示例#7
0
 def GET(self):
     args = web.input(type="view")
     db = NovelDB()
     if args.type == "view":
         return render_to_response("ajax/top_view",
                                   {"toshows": db.get_view_top()})
     elif args.type == "latest":
         return render_to_response("ajax/top_latest",
                                   {"toshows": db.get_latest_top()})
     return "ajax ready"
示例#8
0
 def POST(self):
     args = web.input()
     args.url = get_real_url(args.url)
     if not all((args.url, args.title, args.author)):
         return simplejson.dumps({"status": "error", "msg": "请填写必填项"})
     args.ip = self.ip
     db = NovelDB()
     if not db.add_recommend(args):
         return simplejson.dumps({"status": "error", "msg": "发生了错误,请检查您的输入"})
     return simplejson.dumps({"status": "ok"})
示例#9
0
    def GET(self, id):
        db = NovelDB()
        novel = db.get_novel_info(id, cache=False)
        if novel is None or novel.status in (0, 100):
            raise web.notfound()
        db.incr_view_count(id)
        # 获得推荐小说
        rd_recommends = db.get_random_recommend(id=id)
        
        page = web.input(page=1).page
        page_count = db.get_novel_pageinfo(id)
        pager = Paginator(page_count, 1, page)
        try:
            novel_html = open(get_novel_html_path(id, pager.page), "r")
        except:
            return "内容还没准备好,稍等一会哦:)"

        # 访问twisted更新
        temp_date = novel.last_update_time.replace(tzinfo=None)
        if not pager.has_next() and novel.status not in (1,3) and (datetime.datetime.now() - temp_date).seconds > 3600:
            start_work(id)
            novel = db.get_novel_info(id, cache=False)
        novel.tag = db.get_tags_by_id(id)
        novel.view_count = db.get_view_count(id)
        
        return render_to_response("show_novel", {
            "novel_id": id,
            "novel": novel,
            "novel_html": novel_html,
            "pager": pager,
            "rd_recommends": rd_recommends,
        })
示例#10
0
 def GET(self):
     args = web.input(keyword="", page=1)
     args.keyword = args.keyword.strip()
     if not args.keyword.strip():
         raise web.seeother(self.env.get("HTTP_REFERER", "/"))
     db = NovelDB()
     pager, toshows = db.search(args.keyword, args.page, self.PERPAGE)
     return render_to_response("search", {
         "keyword": args.keyword,
         "toshows": toshows,
         "pager": pager
     })
示例#11
0
 def GET(self):
     args = web.input(keyword="", page=1)
     args.keyword = args.keyword.strip()
     if not args.keyword.strip():
         raise web.seeother(self.env.get("HTTP_REFERER", "/"))
     db = NovelDB()
     pager, toshows = db.search(args.keyword, args.page, self.PERPAGE)
     return render_to_response("search", {
         "keyword": args.keyword,
         "toshows": toshows,
         "pager": pager
     })
示例#12
0
 def GET(self, id):
     db = NovelDB()
     novel = db.get_novel_info(id)        
     file = get_txt_file(str(id), web.utf8(novel.title))
     
     if file:
         web.replace_header("Content-Type", "text/plaintext")
         web.replace_header("Content-Disposition", "attachment; filename=%s.txt" % id)
         web.header("X-Accel-Redirect", "/download_txt/%s" % file)
         return "ok"
     else:
         return "出错了,请联系[email protected]"
示例#13
0
 def POST(self):
     args = web.input()
     args.url = get_real_url(args.url)
     if not all((args.url, args.title, args.author)):
         return simplejson.dumps({"status": "error", "msg": "请填写必填项"})
     args.ip = self.ip
     db = NovelDB()
     if not db.add_recommend(args):
         return simplejson.dumps({
             "status": "error",
             "msg": "发生了错误,请检查您的输入"
         })
     return simplejson.dumps({"status": "ok"})
示例#14
0
    def GET(self, id):
        db = NovelDB()
        novel = db.get_novel_info(id)
        file = get_txt_file(str(id), web.utf8(novel.title))

        if file:
            web.replace_header("Content-Type", "text/plaintext")
            web.replace_header("Content-Disposition",
                               "attachment; filename=%s.txt" % id)
            web.header("X-Accel-Redirect", "/download_txt/%s" % file)
            return "ok"
        else:
            return "出错了,请联系[email protected]"
示例#15
0
 def POST(self):
     args = web.input()
     args.url = get_real_url(args.url)
     args.type = get_type_by_url(args.url)
     #        args.email = args.email or "*****@*****.**"
     args.email = ""
     args.ip = self.ip
     db = NovelDB()
     ret = db.add_novel(args)
     if ret[0] is True:
         id = ret[1]
         start_work(id)
         return simplejson.dumps({"status": "ok", "id": id})
     else:
         return simplejson.dumps({"status": "error", "msg": "发生了错误,请稍候再试"})
示例#16
0
    def POST(self):
        args = web.input()
        args.url = get_real_url(args.url)      
        args.type = get_type_by_url(args.url)
#        args.email = args.email or "*****@*****.**"
        args.email = ""
        args.ip = self.ip
        db = NovelDB()
        ret = db.add_novel(args)
        if ret[0] is True:
            id = ret[1]
            start_work(id)
            return simplejson.dumps({"status": "ok", "id": id})
        else:
            return simplejson.dumps({"status": "error", "msg": "发生了错误,请稍候再试"})
示例#17
0
    def POST(self):
        url = web.input(url="").url
        url = get_real_url(url)
        db = NovelDB()

        # baidu 有两种格式的url
        if url.startswith("http://tieba.baidu.com"):
            _id = re.search(r"\d+$", url).group()
            urls = [
                "http://tieba.baidu.com/p/%s" % _id,
                "http://tieba.baidu.com/f?kz=%s" % _id,
            ]
            _novel = max(db.get_novel_byurl(url) for url in urls)
        else:
            _novel = db.get_novel_byurl(url)

        if _novel:
            return simplejson.dumps({
                "status": "existed",
                "msg": "/novel/%s" % _novel.id
            })
        # 增加返回默认标签
        username, title, url, tag = get_thread_info(url)
        _novel = db.get_novel_byurl(url)
        if _novel:
            return simplejson.dumps({
                "status": "existed",
                "msg": "/novel/%s" % _novel.id
            })
        if username and title:
            return simplejson.dumps({
                "status": "ok",
                "username": username,
                "title": title,
                "url": url,
                "tag": tag
            })
        return simplejson.dumps({"status": "error", "msg": "发生了错误,请检查地址的正确性"})
示例#18
0
 def db(self):
     if not hasattr(self, "_cache_db"):
         self._cache_db = NovelDB()
     return self._cache_db
示例#19
0
 def __init__(self):
     self.ctx = web.ctx
     self.ip = web.ctx['env'].get("HTTP_X_FORWARDED_FOR", "127.0.0.1")
     self.db = NovelDB()
示例#20
0
 def GET(self, id):
     db = NovelDB()
     novel = db.get_novel_info(id)
     db.incr_view_count(id)
     return render_to_response("novel_info", {"novel": novel})