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, })
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 })
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"
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 })
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"})
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]"
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": "发生了错误,请稍候再试"})
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": "发生了错误,请检查地址的正确性"})
def db(self): if not hasattr(self, "_cache_db"): self._cache_db = NovelDB() return self._cache_db
def __init__(self): self.ctx = web.ctx self.ip = web.ctx['env'].get("HTTP_X_FORWARDED_FOR", "127.0.0.1") self.db = NovelDB()
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})