Browse Source

for douban top250

Tongyanqun 1 year ago
parent
commit
7c623f9c12
4 changed files with 294 additions and 4 deletions
  1. 2 0
      webserver/constants.py
  2. 31 1
      webserver/handlers/meta.py
  3. 7 2
      webserver/loader.py
  4. 254 1
      webserver/tags.yaml

+ 2 - 0
webserver/constants.py

@@ -11,4 +11,6 @@ CHROME_HEADERS = {
 
 BOOK_NAV = {}
 
+TOP_250 = []
+
 ESCAPED_TAGS = ["c", "C", "性"]

+ 31 - 1
webserver/handlers/meta.py

@@ -1,5 +1,6 @@
 #!/usr/bin/env python3
 # -*- coding: UTF-8 -*-
+import logging
 import math
 import sys
 from functools import cmp_to_key
@@ -78,8 +79,37 @@ class MetaBooks(ListHandler):
         except:
             size = 60
         delta = min(max(size, 60), 100)
+        title = titles.get(meta, _(u"未知")) % vars()
+
+        from webserver import constants
+        if meta == "tag" and name == "豆瓣Top250" and len(constants.TOP_250) > 0:
+            book_names = constants.TOP_250[start:start + delta]
+            ids = []
+            for book_name in book_names:
+                ids_tmp = self.cache.search("title:%s" % book_name)
+                if len(ids_tmp) > 0:
+                    ids.append(list(ids_tmp)[0])
+                else:
+                    logging.info("%s not found in the lib", book_name)
+
+            # 按照id顺序进行排序。
+            books = self.get_books(ids=ids)
+            hbs = {}
+            hb_list = []
+            for b in books:
+                hbs[b["id"]] = b
+            for idx in ids:
+                if idx in hbs:
+                    hb_list.append(hbs[idx])
+            books = hb_list
+
+            return {
+                "err": "ok",
+                "title": title,
+                "total": 250,
+                "books": [self.fmt(b) for b in books],
+            }
 
-        title = titles.get(meta, _(u"未知")) % vars()  # noqa: F841
         category = meta + "s" if meta in ["tag", "author"] else meta
         if meta in ["rating"]:
             try:

+ 7 - 2
webserver/loader.py

@@ -57,8 +57,13 @@ class SettingsLoader(dict):
             import yaml
             d = self.set_store_path()
             tag_file = os.path.join(d, "tags.yaml")
-            tag_conf = open(tag_file, 'r', encoding="utf-8")
-            constants.BOOK_NAV = yaml.safe_load(tag_conf)['tags'].items()
+            tag_conf_file = open(tag_file, 'r', encoding="utf-8")
+            tag_conf = yaml.safe_load(tag_conf_file)
+            if "tags" in tag_conf:
+                constants.BOOK_NAV = tag_conf['tags'].items()
+            if "douban_top_250" in tag_conf:
+                constants.TOP_250 = tag_conf["douban_top_250"]
+
         except Exception as err:
             logging.error("some json parsed err %s", err)
 

+ 254 - 1
webserver/tags.yaml

@@ -192,4 +192,257 @@ tags:
     - "广告"
     - "股票"
     - "策划"
-    - "企业史"
+    - "企业史"
+
+douban_top_250:
+  - "红楼梦"
+  - "活着"
+  - "1984"
+  - "三体全集"
+  - "百年孤独"
+  - "哈利·波特"
+  - "飘"
+  - "三国演义"
+  - "房思琪的初恋乐园"
+  - "动物农场"
+  - "福尔摩斯探案全集"
+  - "白夜行"
+  - "小王子"
+  - "安徒生童话故事集"
+  - "天龙八部"
+  - "撒哈拉的故事"
+  - "呐喊"
+  - "杀死一只知更鸟"
+  - "明朝那些事儿"
+  - "失踪的孩子"
+  - "悉达多"
+  - "沉默的大多数"
+  - "新名字的故事"
+  - "邓小平时代"
+  - "中国历代政治得失"
+  - "局外人"
+  - "野草"
+  - "人类简史"
+  - "平凡的世界"
+  - "乡土中国"
+  - "围城"
+  - "笑傲江湖"
+  - "白鹿原"
+  - "肖申克的救赎"
+  - "东方快车谋杀案"
+  - "霍乱时期的爱情"
+  - "基督山伯爵"
+  - "彷徨"
+  - "江城"
+  - "献给阿尔吉侬的花束"
+  - "我与地坛"
+  - "罗杰疑案"
+  - "城南旧事"
+  - "月亮和六便士"
+  - "万历十五年"
+  - "许三观卖血记"
+  - "艺术的故事"
+  - "卡拉马佐夫兄弟"
+  - "故事新编"
+  - "射雕英雄传"
+  - "朝花夕拾"
+  - "追风筝的人"
+  - "刀锋"
+  - "寻路中国"
+  - "厌女"
+  - "无人生还"
+  - "格林童话全集"
+  - "树上的男爵"
+  - "嫌疑人x的献身"
+  - "中国少年儿童百科全书"
+  - "鼠疫"
+  - "黄金时代"
+  - "置身事内"
+  - "傲慢与偏见"
+  - "史记(全十册)"
+  - "秋园"
+  - "悲惨世界"
+  - "西游记(全二册)"
+  - "永恒的终结"
+  - "台北人"
+  - "诗经"
+  - "神雕侠侣"
+  - "上帝掷骰子吗"
+  - "历史深处的忧虑"
+  - "孽子"
+  - "文学回忆录"
+  - "一个叫欧维的男人决定去死"
+  - "哭泣的骆驼"
+  - "唐诗三百首"
+  - "最好的告别"
+  - "灿烂千阳"
+  - "始于极限"
+  - "美的历程"
+  - "人间词话"
+  - "窗边的小豆豆"
+  - "美丽新世界"
+  - "刘擎西方现代思想讲义"
+  - "呼兰河传"
+  - "道德经"
+  - "看见"
+  - "浪潮之巅"
+  - "四世同堂"
+  - "可能性的艺术"
+  - "冬牧场"
+  - "爱你就像爱生命"
+  - "罪与罚"
+  - "离开的,留下的"
+  - "我们仨"
+  - "巨人的陨落"
+  - "看不见的城市"
+  - "叫魂"
+  - "教父"
+  - "海子的诗"
+  - "失明症漫记"
+  - "人生的枷锁"
+  - "绝叫"
+  - "棋王·树王·孩子王"
+  - "飞鸟集"
+  - "人生的智慧"
+  - "也许你该找个人聊聊"
+  - "鹿鼎记"
+  - "斯通纳"
+  - "毛泽东选集 第一卷"
+  - "陆犯焉识"
+  - "桶川跟踪狂杀人事件"
+  - "受戒"
+  - "梦里花落知多少"
+  - "边城"
+  - "这些人,那些事"
+  - "王尔德童话"
+  - "克莱因壶"
+  - "时间简史"
+  - "金色梦乡"
+  - "十万个为什么"
+  - "小径分岔的花园"
+  - "茶馆"
+  - "昨日的世界"
+  - "人间草木"
+  - "你当像鸟飞往你的山"
+  - "少年凯歌"
+  - "故事"
+  - "绿毛水怪"
+  - "面纱"
+  - "海的女儿"
+  - "國史大綱(上下)"
+  - "一个陌生女人的来信"
+  - "遥远的向日葵地"
+  - "经济学原理(上下)"
+  - "13 67"
+  - "长日将尽"
+  - "全球通史"
+  - "阿勒泰的角落"
+  - "我的天才女友"
+  - "德米安"
+  - "史蒂夫·乔布斯传"
+  - "万水千山走遍"
+  - "苏菲的世界"
+  - "温柔的夜"
+  - "鹿川有许多粪"
+  - "一句顶一万句"
+  - "霸王别姬"
+  - "爱的艺术"
+  - "亮剑"
+  - "球状闪电"
+  - "不能承受的生命之轻"
+  - "我不知道该说什么,关于死亡还是爱情"
+  - "强风吹拂"
+  - "古文观止"
+  - "2001:太空漫游"
+  - "安娜·卡列尼娜"
+  - "社会心理学"
+  - "草房子"
+  - "我也有一个梦想"
+  - "我的阿勒泰"
+  - "激荡三十年"
+  - "倾城之恋"
+  - "海风中失落的血色馈赠"
+  - "恶意"
+  - "麦琪的礼物"
+  - "天朝的崩溃"
+  - "冰与火之歌"
+  - "九州·缥缈录"
+  - "孩子你慢慢来"
+  - "浮生六记"
+  - "万物有灵且美"
+  - "额尔古纳河右岸"
+  - "情书"
+  - "送你一颗子弹"
+  - "半生缘"
+  - "一桩事先张扬的凶杀案"
+  - "一间只属于自己的房间"
+  - "罗生门"
+  - "理想国"
+  - "尼罗河上的惨案"
+  - "雨季不再来"
+  - "倚天屠龙记"
+  - "野火集"
+  - "银河系漫游指南"
+  - "渴望生活"
+  - "荒原狼"
+  - "天生有罪"
+  - "一千零一夜"
+  - "孙子兵法"
+  - "雷雨"
+  - "最好的我们"
+  - "地下室手记"
+  - "平面国"
+  - "西线无战事"
+  - "当呼吸化为空气"
+  - "水浒传(全二册)"
+  - "雕刻时光"
+  - "你好,旧时光"
+  - "论语"
+  - "从零开始的女性主义"
+  - "枪炮、病菌与钢铁"
+  - "银河帝国:基地七部曲"
+  - "顾城的诗"
+  - "你一生的故事"
+  - "现代艺术150年"
+  - "认识电影"
+  - "象棋的故事"
+  - "解忧杂货店"
+  - "目送"
+  - "火星救援"
+  - "庄子"
+  - "亲密关系(第6版)"
+  - "上学记"
+  - "众病之王"
+  - "亲爱的安德烈"
+  - "总统是靠不住的"
+  - "二手时间"
+  - "毛姆短篇小说精选集"
+  - "骆驼祥子"
+  - "檀香刑"
+  - "规训与惩罚"
+  - "东晋门阀政治"
+  - "荆棘鸟"
+  - "金锁记"
+  - "从一到无穷大"
+  - "会饮篇"
+  - "不存在的骑士"
+  - "了不起的盖茨比"
+  - "青铜时代"
+  - "中国哲学简史"
+  - "香水"
+  - "时间的秩序"
+  - "步履不停"
+  - "哈姆莱特"
+  - "显微镜下的大明"
+  - "黑箱"
+  - "正见"
+  - "夏洛的网"
+  - "李光耀观天下"
+  - "繁花"
+  - "在细雨中呼喊"
+  - "分成两半的子爵"
+  - "此生未完成"
+  - "如彗星划过夜空"
+  - "跨越边界的社区"
+  - "如父如子"
+