hexo添加豆瓣小插件
1、原理
hexo-douban 目前升级到了 2.x 版本,将原先由插件客户端自行获取数据的逻辑抽到了一个隐藏的服务端中进行,以统一解决数据获取、数据缓存、风控对抗等问题,提高页面生成的成功率和效率。
2、安装
$ npm install hexo-douban --save
3、配置
将下面的配置写入站点的配置文件 _config.yml
里(不是主题的配置文件).
douban:
id: 自己的ID号
book:
path: books/index.html
title: 'This is my book title'
quote: 'This is my book quote'
movie:
path: movies/index.html
title: 'This is my movie title'
quote: 'This is my movie quote'
game:
path: games/index.html
title: 'This is my game title'
quote: 'This is my game quote'
timeout: 10000
- user: 你的豆瓣ID(纯数字格式,不是自定义的域名
- path: 生成页面后的路径,默认生成在 //yourblog/books/index.html 等下面。如需自定义路径,则可以修改这里。
- title: 该页面的标题。
- quote: 写在页面开头的一段话,支持html语法。
- timeout: 爬取数据的超时时间,默认是 10000ms ,如果在使用时发现报了超时的错(ETIMEOUT)可以把这个数据设置的大一点。
如果只想显示某一个页面(比如movie),那就把其他的配置项注释掉即可。
4、使用
$ hexo douban -h
Usage: hexo douban
Description:
Generate pages from douban
Options:
-b, --books Generate douban books only
-g, --games Generate douban games only
-m, --movies Generate douban movies only
如果不加参数,那么默认参数为-bgm
。
需要注意的是,通常大家都喜欢用hexo d
来作为hexo deploy
命令的简化,但是当安装了hexo douban
之后,就不能用hexo d
了,因为hexo douban
跟hexo deploy
的前缀都是hexo d
。
第一次使用 hexo douban 时,后台会异步进行数据获取,一般需要等待一段时间才能查到数据(大约五分钟)。
由于数据是分阶段获取,当第一次成功生成页面时其实只获取了图书、电影或游戏的简略信息。后台会慢慢更新详细信息,如果有需要可以再多等等一段时间。时间视你的数据数量而定,平均一个资源会花6s。例如如果你有 100 个想读、100个已读、100个在读的图书,则大约需要等待 300*6/60= 30 分钟。当然,如果你喜欢的条目别人已经提前录入过,那获取这个条目时间就可以节约掉。
后续如果你的豆瓣数据更新了,hexo douban 同样也会自动进行更新(同样需要等待一段时间才会查到更新数据),不过出于安全考虑,一个用户id每小时至多只会同步一次。
5、升级
我会不定期更新一些功能或者修改一些Bug,所以如果想使用最新的特性,可以用下面的方法来更新:
-
修改package.json内hexo-douban的版本号至最新
-
重新安装最新版本
npm install hexo-douban --save # 或者使用 npm install hexo-douban --update --save 直接更新。 npm install hexo-douban --update --save
6、显示
如果上面的配置和操作都没问题,就可以在生成站点之后打开 //yourblog/books
和 //yourblog/movies
, //yourblog/games
, 来查看结果。
7、菜单
如果上面的显示没有问题就可以在主题的配置文件 _config.yml
里添加如下配置来为这些页面添加菜单链接.
menu:
Home: /
Archives: /archives
Books: /books #This is your books page
Movies: /movies #This is your movies page
Games: /games #This is your games page
8、主题兼容
对于使用 hexo-theme-butterfly 等使用 pjax
进行渲染的主题,需要在 _config.yml
中将豆瓣页进行排除,否则 js 会失效导致页面异常 @ISSUE 108 :
pjax:
enable: true
exclude:
- /movies/
- /books/
- /games/
9、接口
如果有非hexo环境的部署需求(例如我自己就是用的 Ghost ,简单效果页:豆瓣),或者仅仅想对自己的豆瓣数据进行备份,可以尝试使用下面的接口,复用后端维护的数据提取服务 mouban:
# 将 {your_douban_id} 改为你的豆瓣数字ID(此处为我个人的豆瓣ID)
# 用户录入/更新
https://mouban.mythsman.com/guest/check_user?id=自己的ID号
# 查询用户的读书评论
https://mouban.mythsman.com/guest/user_book?id={your_douban_id}&action=wish
https://mouban.mythsman.com/guest/user_book?id={your_douban_id}&action=do
https://mouban.mythsman.com/guest/user_book?id={your_douban_id}&action=collect
# 查询用户的电影评论
https://mouban.mythsman.com/guest/user_movie?id={your_douban_id}&action=wish
https://mouban.mythsman.com/guest/user_movie?id={your_douban_id}&action=do
https://mouban.mythsman.com/guest/user_movie?id={your_douban_id}&action=collect
# 查询用户的游戏评论
https://mouban.mythsman.com/guest/user_game?id={your_douban_id}&action=wish
https://mouban.mythsman.com/guest/user_game?id={your_douban_id}&action=do
https://mouban.mythsman.com/guest/user_game?id={your_douban_id}&action=collect