折腾豆瓣书影音

• 11 分钟阅读 • web · docker

大约半年前开始对豆瓣书影音有了兴趣,注册并开始使用,把看过的电影都记录下来,并且用idouban把书影音引入到hexo,几天前idouban出问题了,书影音不能正常显示,就开始研究了一下。

idouban

项目地址:mythsman/idouban
引用方式:

<body>
  <div id="douban"></div>
</body>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/idouban/dist/index.css"
/>
<script
  src="https://cdn.jsdelivr.net/npm/idouban/dist/index.js"
  onload="idouban.init({
      selector:'#douban',
      lang: 'zh',
      douban_id: '162448367',
      type: 'book',
      quote: 'This is my books',
      actions: ['do','wish','collect'],
      page_size: 10,
      max_line: 4
          })"
></script>

原理:
插件内部会请求一个豆瓣数据缓存服务 mouban,获取响应后直接直接以列表的形式渲染出来。类似功能的插件还有 hexo-douban。
首次访问时会触发 mouban 的初始化收录。这个过程可能比较久,没有排队的情况下需要等待的时间至少为 条目数/15*5秒 。如果一不小心排队了,则可能需要等待半天。
首次初始化好之后,后续会随着页面的不断访问定时进行增量更新,期间均可正常使用。

出问题的是豆瓣数据缓存服务 mouban,服务器无法连接。

mouban

项目地址:mythsman/mouban
作为 idouban 项目的后台数据获取服务,用于根据用户的豆瓣ID,获取用户在豆瓣的书、影、音、游中的标注信息,方便用户快速提取。

简要的处理流程如下:
用户输入个人豆瓣ID。
访问读书首页获取用户头像、域名等信息。
访问个人 rss 页面获得用户最新更新时间用于去重。
访问用户书、影、音、游的首页获取总数等信息。
滚动访问用户书、影、音、游的评论页获取评论信息、条目概览。
访问条目详情页获取详细信息,并自动发现其他推荐的用户和条目。
每天定时更新书、影、音、游的首页,获取最新条目。

作者提供了docker镜像以自部署服务。
docker-compose.yml

services:
 mouban:
     image: mythsman/mouban
     container_name: mouban
     restart: always
#      ports:
#        - "8080:8080"
     network_mode: host
     environment:
       - GIN_MODE=release
       - agent__enable=true
       - agent__flow__discover=false
       - agent__discover__level=1
       - agent__item__concurrency=5
       - agent__item__max=10000
       - http__timeout=30000
       - http__retry_max=20
       - http__interval__user=5000
       - http__interval__item=2000
       - http__auth=288237448:6pQ2AP6aTeo,
       - server__cors=https://domain.com
       - server__limit=30m
       - datasource__host=localhost
       - datasource__username=root
       - datasource__password=123456

格式经deepseek修正。
此处还需有mysql服务,可用docker部署。
docker-compose.yml

services:
    mysql:
        image: mysql:5.7
        container_name: mysql
        restart: always
        privileged: true
        ports:
            - '3306:3306'
        environment:
            - 'MYSQL_ROOT_PASSWORD=123456'

mysql部署成功后,docker exec -it mysql sh进入,建立数据库mouban。
mysql和mouban部署成功后,设置反向代理内网地址到域名。

用户录入/更新:
https://one.qs100371.top:8888/guest/check_user?id=288237448
输出:

"result": {
    "id": 288237448,
    "domain": "",
    "name": "qqsss",
    "thumbnail": "https://minio.mythsman.com/douban/d40b863d867af65343c4c36d19c49fdb.png",
    "book_wish": 0,
    "book_do": 0,
    "book_collect": 0,
    "game_wish": 0,
    "game_do": 0,
    "game_collect": 0,
    "movie_wish": 0,
    "movie_do": 0,
    "movie_collect": 57,
    "song_wish": 0,
    "song_do": 0,
    "song_collect": 0,
    "publish_at": 0,
    "sync_at": 0,
    "check_at": 0
  },
  "success": true
}

查看已观看的电影列表:
https://one.qs100371.top:8888/guest/user_movie?id=288237448&action=collect
输出:

{
  "msg": "服务内部错误,请联系开发者处理",
  "success": false
}

爬取信息出错,进入容器内部,发现只有一个命令main,并且镜像已经有7个月没有更新了。
作者指出最重要的是 http__auth 参数,用于配置登陆态的用户信息和走的http代理,格式为 <dbcl2>,http://<user>:<password>@<proxyIp>:<proxyPort>; ,可以配置多个。豆瓣对于未登录的账号有概率会投毒,所以采用登陆态账号来处理。
自部署只用了一个帐号,很容易就被封控了,提示 有异常请求从你的 IP 发出,请登录使用豆瓣
这里正确地抓取了已观影的数目,其他的不能得到正常结果。

作者部署的服务

https://mouban.mythsman.com/
今天服务正常了,重新用上面的命令。
https://mouban.mythsman.com/guest/check_user?id=288237448

{
  "result": {
    "id": 288237448,
    "domain": "",
    "name": "qqsss",
    "thumbnail": "https://minio.mythsman.com/douban/d40b863d867af65343c4c36d19c49fdb.png",
    "book_wish": 0,
    "book_do": 0,
    "book_collect": 0,
    "game_wish": 0,
    "game_do": 0,
    "game_collect": 0,
    "movie_wish": 4,
    "movie_do": 1,
    "movie_collect": 57,
    "song_wish": 0,
    "song_do": 0,
    "song_collect": 0,
    "publish_at": 1755792477,
    "sync_at": 1755936544,
    "check_at": 1755940034
  },
  "success": true
}

https://mouban.mythsman.com/guest/user_movie?id=288237448&action=collect

{
  "result": {
    "comment": [
      {
        "item": {
          "douban_id": 36188176,
          "title": "超人:遗产 Superman: Legacy",
          "style": "动作 / 科幻 / 冒险",
          "director": "詹姆斯·古恩",
          "writer": "詹姆斯·古恩",
          "actor": "",
          "publish_date": "2025-07-11(美国)",
          "alias": "超人:传承",
          "thumbnail": "https://minio.mythsman.com/douban/78a4ade526d4d71cc5c5dda5962affe9.jpg"
        },
        "rate": 2,
        "label": "",
        "comment": "",
        "action": 2,
        "mark_date": "2025-08-22"
      },
      {
        "item": {
          "douban_id": 25828589,
          "title": "黑寡妇 Black Widow",
          "style": "动作 / 科幻 / 冒险",
          "director": "雅克·舍费尔 / 内德·本森 / 埃里克·皮尔森 / 斯坦·李 / 唐·赫克 / 唐·里科",
          "writer": "雅克·舍费尔 / 内德·本森 / 埃里克·皮尔森 / 斯坦·李 / 唐·赫克 / 唐·里科",
          "actor": "斯嘉丽·约翰逊 / 弗洛伦丝·皮尤 / 蕾切尔·薇兹 / 大卫·哈伯 / 艾尔·安德森 / 维奥莱特·麦格劳 / 欧嘉·柯瑞兰寇 / O·T·法格本 / 威廉·赫特 / 雷·温斯顿 / 赖恩·基拉·阿姆斯特朗 / 米歇尔·李 / 拉娜·布隆代尔 / Claudia Heinz / 露西·詹·穆雷 / 乔治亚·柯蒂斯 / 约恩·巴特勒 / 库尔特·岳 / 奥利维尔·里希特斯 / 安得烈·拜伦 / 卡利·内勒 / 罗伯特·普拉尔戈 / 贾辛特·布兰肯希普 / 乔希·亨利 / 阿里娅·布鲁克斯 / 泰·赫尔利 / 马里安·洛伦西克 / 茱莉亚·路易斯-德瑞弗斯 / 亚当·普里克特 / 史蒂芬·萨姆森 / 乔基姆·斯卡利 / 利亚尼·塞缪尔 / 西蒙娜·齐夫科夫斯卡 / 刘易斯·扬",
          "publish_date": "2021-07-07(中国香港) / 2021-07-09(美国/美国网络)",
          "alias": "The Black Widow",
          "thumbnail": "https://minio.mythsman.com/douban/052369cdf5766b0434784a3d69372ffd.jpg"
        },
        "rate": 3,
        "label": "",
        "comment": "",
        "action": 2,
        "mark_date": "2025-08-21"
      },
      ...

],
    "user": {
      "id": 288237448,
      "domain": "",
      "name": "qqsss",
      "thumbnail": "https://minio.mythsman.com/douban/d40b863d867af65343c4c36d19c49fdb.png",
      "book_wish": 0,
      "book_do": 0,
      "book_collect": 0,
      "game_wish": 0,
      "game_do": 0,
      "game_collect": 0,
      "movie_wish": 4,
      "movie_do": 1,
      "movie_collect": 57,
      "song_wish": 0,
      "song_do": 0,
      "song_collect": 0,
      "publish_at": 1755792477,
      "sync_at": 1755936544,
      "check_at": 1755940034
    }
  },
  "success": true
}

这里都得到了正确结果。
有一个意外的收获,原来的豆瓣影音记录有修改,但idouban得到的记录只增不减,所以显示数目不对。
通过以下命令刷新之后记录数目正常。
https://mouban.mythsman.com/admin/refresh_user?id=288237448
用作者提供的idouban得到的书影音记录:
https://qs100371.top/douban/

文章标签: web, docker

上一篇 : 网心云oec拆机和刷机指南
下一篇 : 网心云oec和昔映nas系统
留言
阅读进度 0%