因为搭建QQ机器人的过程中想要自动获取Pixiv的图片,所以就找到了HibiAPI这个项目。看似不用自己写爬虫了,但是为了把它部署到服务器上还是花了我不少功夫,写一篇博客记录一下其中的心酸( 。
介绍
HibiAPI提供多种网站公开内容的 API 集合, 它们包括:
- Pixiv 的图片和小说相关信息获取和搜索
- Bilibili 的视频/番剧等信息获取和搜索
- 网易云音乐的音乐/MV 等信息获取和搜索
- 百度贴吧的帖子内容的获取
- 爱壁纸的横版和竖版壁纸获取
- ……
其他更详细的介绍就请移步到Github,我部署主要是为了实现获取Pixiv的图片和使用SauceNAO搜图。
步骤
HibiAPI官方的文档上介绍了两种安装方法,我这边使用的是下载源码自行安装的方式。
安装Virtualenv
// 首先检查一下系统上的python版本
sudo python3 --version
// 如果版本低于3.8或者直接提示没有该命令,那就安装python3.8
sudo apt install python3.8
// 然后安装virtualenv
sudo pip3 install virtualenv
// 安装完成之后创建一个目录用来存放要用到的数据
sudo mkdir /etc/hibiapi
cd /etc/hibiapi
// 然后创建一个虚拟环境
sudo virtualenv --no-site-packages hibiapi_env
// 然后指定虚拟环境的python版本
virtualenv hibiapi_env --python=python3.8
安装HibiAPI
移动到/etc/hibiapi
之后,使用git克隆仓库
sudo git clone https://github.com/mixmoe/HibiAPI.git
这一步完成之后目录里面应该有两个文件夹HibiAPI
和hibiapi_env
,然后开始安装HibiAPI
// 登录root账户,不然后面安装可能会出现奇怪的问题
su
// 之后进入虚拟环境
source hibiapi_env/bin/activate
// 在命令行的最前面应该会出现 (hibiapi_env)
// 然后检查一下python版本和pip版本
python --version
pip --version
// 上面两个命令的结果应该都会出现python3.8的字样
// 开始安装HIbiAPI
cd HibiAPI
pip install .
// 安装完成之后就能启动了
python -m hibiapi
第一次启动HibiAPI会直接退出,然后在当前目录生成配置文件,此时当前目录里面应该会有configs
HibiAPI
hibiapi_env
,这三个文件夹,然后开始编辑配置文件
vi configs/
大家可以挨个打开看看里面有些什么东西可以改,其中里面的general.yml
包含了网页端口啥的,可以仔细看看,我这边就讲一下Pixiv的配置和SauceNAO的配置。
Pixiv配置
pixiv配置的难点主要是在得到pixiv的账户密钥上,具体的做法可以看这个Issue,我这里介绍一下我的做法。
这个方法要求要有一台搭了梯子的服务器,然后把电脑上的梯子切换到这台服务器上。作者给出的两个方法都是在自己电脑上获取的,但是我测试发现,如果挂了梯子执行脚本之后会有SSL错误,但是不挂梯子又打开不了Pixiv的登录界面;直接把文件放到服务器上执行,服务器又没有图形界面,所以我结合了一下这两种思路。
首先下载我改过的文件(原文件来自这个地方)
下载,解压,得到py文件,上传至服务器,然后在服务器上执行
python pixiv_auth.py login
它应该会直接给出一个链接
- 复制这个链接,在浏览器内打开这个链接(记得连上运行脚本的这台服务器的梯子)
- 打开浏览器的调试工具,点击
Network
,勾选Preserve log
,在下面的Filter
里面输入callback?
- 登录Pixiv账号
- 登录之后应该会停留在一个空白的界面上,调试工具里面会出现一行满足过滤器要求的项目(其链接格式应该是
https://app-api.pixiv.net/web/v1/users/auth/pixiv/callback?state=...&code=...
),选中这个项目,复制code=
后面的部分 - 粘贴到服务器终端上,回车
第四 五步一定要快,不然code会失效,需要重新操作一次。如果没什么问题的话应该会显示出access_token
refresh_token
expires_in
三个值,复制refresh_token
,记住expires_in
,修改pixiv.yml
的相应内容,配置就完成了。
SauceNAO配置
首先当然是打开SauceNAO的网站了,之后点击底部的Account
,登录或者注册账号,登录之后点击最左侧的api
,复制页面api key:
后面的一长串内容,粘贴到sauce.yml
文件内的api-key
后面(下面的keys
应该是均衡负载用的,只有一个key的话不管就行),这样配置就完成了。
服务化部署HibiAPI
首先测试一下HibiAPI能不能正常运行了(还是处于虚拟环境和root账户之下)
python -m hibiapi
如果没什么问题的话就按下ctrl+c
退出,然后创建service
// 退出虚拟环境
deactivate
cd /etc/systemd/system
vi hibiapi.service
然后在里面输入以下内容
[Unit]
Description=HibiAPI Service
After=syslog.target
[Service]
User=root
Group=root
WorkingDirectory=/etc/hibiapi/
Environment=PATH=/etc/hibiapi/hibiapi_env/bin
ExecStart=/bin/bash -c 'cd /etc/hibiapi && source hibiapi_env/bin/activate && python -m hibiapi'
[Install]
WantedBy=multi-user.target
如果你的文件存放位置和名字跟我上面说的一毛一样,那么直接保存就行了,如果不是的话就看着改一下上面的内容。
再之后是启动service
systemctl start hibiapi
// 查看一下是否启动成功了
systemctl status hibiapi
// 没什么问题的话就设置开机自启
systemctl enable hibiapi
至此,HibiAPI服务化部署就已经差不多了,想更完善一点的朋友可以再弄一下用Nginx反向代理HibiAPI,然后加上SSL证书(SNI),这部分内容可以看我的这篇文章。