一、前言介绍
本人是一个魔兽世界老玩家了,由于最近twitch的魔兽插件更新客户端由于国内的网络原因被强,而且之前用这个客户端更新插件非常慢,但是看到插件数据源的网站国服网络可以正常访问所有打算用nodejs爬虫爬取网站数据来撸一个插件更新安装客户端,数据源网站地址,github地址。
二、开发简介
1、爬虫
1).使用的npm库 superagent:用于发送请求获取到网站的html源,superagent-charset:用于 防止html源里的内容乱码的,cheerio:一个能在nodejs环境解析html源和jquery选择器使用方式一致
2).分析首页左侧的插件类别几乎不会有变化,爬取一次拿到json后直接写入到一个json配置文件。右侧顶部是插件的分页,分页下面是插件列表根据长度乘总页面可以拿到插件总数。使用superagent爬到首页html后使用cheerio的dom选择器获取到你想要拿的dom数里的内容
3).爬插件的下载地址随便点一个插件下载详情页面在页面上有个here是一个a标签上面是插件的实际下载地址,爬取方式一样最后拿到a标签的href链接就是插件下载地址通electron的ipcMain主进程传递给客户端进程里即可。
2、如何正确把插件安装到魔兽客户端里
1).魔兽插件的目录在游戏根目录的Interface/AddOns里,所以客户端首次启动需要用户指下你电脑的这个插件目录,后续的下载安装到这个目录即可
2).设置好了目录就只需要根据之前爬到的某一个插件的下载地址使用nodejs的request模根据下载地址在插件目录已流的方式写入即可
3).下载完毕后所有的包都是zip形式所以我们需要解压即可,这里我使用的是一个第三npm解压AdmZip他自带就有文件对比功能,如果有改动就会覆盖同名文件,这方便了以插件的更新
3、如何保存已安装的插件
1).我是在插件的目录会生成一个json文件保存每个插件的安装信息,这样可以做删除,更新功能
三、疑问
1、如何在用户首次安装就获取到用户魔兽之前安装的插件,twitch之前是可以,但是我现在不知道怎么实现,感觉是需要和魔兽账号打通才可以
2、关于下载进度的问题,我其实很想做,但是这样回提前请求一次下载地址获取到headers的content-length浪费了性能(因为下载地址有2次302导致首页获取的content-length长度为0),所以我没有做,希望有大佬看到文章后能指点一下。
四、客户端ui截图
五、客户端的体验地址
windonw pan.baidu.com/share/init?… vbxv
mac pan.baidu.com/share/init?… d7ff