前言
之前通过 doumark-action
部署了豆瓣观影页面,但是经常出现图片打不开的情况,作者可能设置了一些访问限制。根据其仓库中的 API 使用Python
写了一个后端,通过 API 获取到个人的标记数据,存入到 SQLite 数据库中,再通过查询展示到前端。目前项目只是初步完成,还存在许多问题,不过大致能跑起来,可以通过 docker 部署,也可以直接克隆项目后运行。
项目信息
项目地址如下:
项目采用的框架如下:
- Flask
- Alpine.js
- TailwindCSS
特点
- 支持多种类型条目:movie、book、game、music、drama
- 筛选排序
- 统计功能
- 封面图下载
- 定期增量更新
直接部署
直接部署需要克隆项目到本地:
https://github.com/tom2almighty/douban-showcase.git
使用下面的命令安装依赖:
pip install --no-cache-dir -r requirements.txt
环境变量
在 .env
文件中配置环境变量,主要修改豆瓣 ID、域名和想要展示的类型。具体的参数如下:
DOUBAN_USER_ID=123456789
DOUBAN_API_HOST=frodo.douban.com
DOUBAN_API_KEY=0ac44ae016490db2204ce0a042db2916
AUTH_TOKEN=
SERVER_DOMAIN=http://localhost:5000
# 同步支持的类型: movie, book, music, game, drama
DOUBAN_SYNC_TYPES=movie,book
# API服务设置
API_PORT=5000
API_HOST=0.0.0.0
# 时区设置
TIMEZONE=Asia/Shanghai
# 数据库设置
SQLITE_DB_PATH=data/douban.db
# 图片设置
DOWNLOAD_COVERS=false
LOCAL_COVER_PATH=data/covers
# 图片展示策略: original(原始链接), local(本地缓存), mixed(混合模式)
COVER_DISPLAY_STRATEGY=mixed
# 图片代理设置 当图片展示策略为 original 或者 mixed时生效
COVER_PROXY=false
# 同步设置
ENABLE_AUTO_SYNC=true
SYNC_INTERVAL_HOURS=24
# 日志设置
LOG_FILE=data/douban-sync.log
LOG_LEVEL=INFO
主要参数说明如下:
DOUBAN_USER_ID
:必填,个人豆瓣 IDSERVER_DOMAIN
:站点域名。DOUBAN_SYNC_TYPES
:支持movie
book
music
drama
类型,其中movie
包含电视剧条目。DOWNLOAD_COVERS
:是否下载封面图片。LOCAL_COVER_PATH
:封面图下载路径,项目根目录相对路径。COVER_DISPLAY_STRATEGY
:图片展示策略,支持local
original
mixed
。分别对应本地图片、原始链接、混合展示,混合展示优先展示本地下载图片,然后是原始链接图片,最后返回占位图。COVER_PROXY
:是否图片代理,当图片展示策略为original
或者mixed
时生效,用来解决豆瓣图片无法直接访问问题。ENABLE_AUTO_SYNC
:是否定期增量更细。SYNC_INTERVAL_HOURS
:增量更新间隔。
启动命令
完成后在项目根目录执行启动命令:
# 基本启动
python -m src.app
# 或者使用简写形式
python run.py
# 指定端口和主机
python -m src.app --port 8000 --host localhost
# 启动时执行全量同步
python -m src.app --sync
# 启动时执行增量同步
python -m src.app --sync-incremental
# 启动时同步封面图片
python -m src.app --sync-images
# 清除统计数据缓存
python -m src.app --clear-cache
# 组合使用
python -m src.app --port 8000 --sync-incremental --sync-images
Docker 部署
新建文件夹,创建 compose
文件和 .env
文件。
cd /opt
mkdir -p douban-showcase
cd douban-showcase
touch compose.yml && touch .env
vim compose.yml
在 compose.yml
文件中挂载数据存储目录和环境变量文件:
version: '3.8'
services:
douban-showcase:
image: tom2al/douban-showcase
container_name: douban-showcase
ports:
- "5000:5000"
volumes:
- ./.env:/app/.env
- ./data:/app/data
restart: unless-stopped
修改环境变量文件后运行容器:docker compose up -d
评论