Skip to content

xeonds/xdu-planet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f5753c5 · Sep 8, 2024
Aug 26, 2024
Sep 8, 2024
Sep 8, 2024
Sep 2, 2024
Aug 26, 2024
Aug 25, 2024
Aug 26, 2024
Aug 25, 2024
Sep 8, 2024
Sep 8, 2024
Jul 6, 2024
Sep 8, 2024
Sep 8, 2024
Sep 8, 2024

Repository files navigation

xdu-planet

一个简单的RSS博客聚合站

使用Golang+Vue3+ElementPlus构建,借助GitHub Action实现自动更新Feed数据并生成页面,最终页面构建于html分支下,并由GitHub Pages呈现。

Build

确保已经安装了golang sdk和nodejs后,克隆仓库。

cd xdu-planet
make frontend && make build/xdu-planet

最终得到的二进制文件在build/目录下。

API 文档

  • GET /api/v1/feed 获取所有文章
  • GET /api/v1/comment/:article_id 获取某篇文章的评论
  • GET /api/v1/comment/reply_to/:comment_id 获取某个评论的回复
  • POST /api/v1/comment/:article_id 发表评论
    • content 评论内容
    • user_id 用户ID
    • reply_to 回复的评论ID(可选,仅当回复评论时传值)
  • DELETE /api/v1/comment/:comment_id 举报评论
    • 举报后,评论自动转为audit状态,管理员可在后台审核
  • GET /api/v1/admin/comment/:filter 获取评论列表
    • filter 可选,可选值为okblockdeleteaudit,分别表示已通过、已屏蔽、已删除、待审核
  • POST /api/v1/admin/comment/audit/:comment_id 审核评论
    • status 审核状态,可选值为okblock,分别表示通过、屏蔽

用法

作为服务部署

初次运行会产生一个空的配置文件config.yml,需要手动填写。参考配置如下:

version: 1
databaseconfig:   # 数据库配置,现阶段用于支持评论系统
  type: "sqlite"  # 可选值为sqlite、mysql
  host: ""
  port: ""
  user: ""
  password: ""
  db: "planet.db"
  migrate: true
avalonguard:              # 评论审核系统配置
  enablegravetimer: true  # 是否启用:被举报评论超时自动转为屏蔽状态
  gravetimeout: 3600s     # 评论审核超时时间
  enablefilter: false     # 是否启用:评论内容过滤
  filter: []              # 过滤关键词列表
logfile: "admin.log"      # 管理员操作日志文件
admintoken: []            # 管理员token列表
feeds: []                 # RSS源列表

然后直接运行xdu-planet即可。打开浏览器访问http://localhost:8192即可看到聚合站。

进程会每隔15分钟更新一次Feed源,更新后的数据会存储在db/目录下。

作为命令行程序

更改完配置文件后,通过如下命令即可更新Feed数据:

./xdu-planet -fetch

抓取完毕后,会生成作为索引的index.json和包含文章正文的db.json,以及作为index.json索引指向的正文数据库db/

作为静态站点部署

如果不需要评论系统,可以直接将生成的build/目录下的文件(除了数据库文件,可执行程序和配置文件)部署到静态服务器上。在需要更新时,只需要重新运行xdu-planet -fetch并将生成的文件部署到服务器上即可。

License

MIT License