一、前言介绍

本人是一个魔兽世界老玩家了,由于最近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

Electron构建魔兽世界插件更新安装相关推荐

  1. 使用 AngularJS 和 Electron 构建桌面应用

    使用 AngularJS 和 Electron 构建桌面应用 GitHub 的 Electron 框架(以前叫做 Atom Shell)允许你使用 HTML, CSS 和 JavaScript 编写跨 ...

  2. 自动化构建部署之Jenkins安装【Docker容器】

    文章目录 1. 在Docker中安装Jenkins 2. 配置清华加速源 3. 离线安装 4. 权限管理 前面几篇文章分别介绍了Travis CI.Circle CI,这次开始整Jenkins,它是开 ...

  3. npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的

    实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的.由于平时只是用用,并没有深入了解node的npm,所以遇到问题都比较棘手,能够查到的资料也不多.阐述以下我遇 ...

  4. 使用Tycho构建OSGi插件项目

    使用Tycho构建OSGi插件项目 自动构建OSGi Plugin项目,一直以来就是个头疼的问题.直到 Tycho 的出现,这些都不在成为问题了.用它你可以很轻松来构建Eclipse插件(Eclips ...

  5. Node.js 和npm的安装(插件的安装)

    一.node.js是什么?有什么用? 1.概述: a).Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用 ...

  6. AngularJS 和 Electron 构建桌面应用

    译]使用 AngularJS 和 Electron 构建桌面应用 原文: Creating Desktop Applications With AngularJS and GitHub Electro ...

  7. 【译】使用 AngularJS 和 Electron 构建桌面应用

    原文:Creating Desktop Applications With AngularJS and GitHub Electron GitHub 的 Electron 框架(以前叫做 Atom S ...

  8. [听风]TBC单体插件“必备安装的DBM”

    [听风]TBC单体插件"必备安装的DBM" 标签(空格分隔): TBC 文章目录 [听风]TBC单体插件"必备安装的DBM" 插件历史 他都做了些什么 快速开启 ...

  9. 基于Sphinx构建准实时更新的分布式通用搜索引擎平台

     亿级数据的高并发通用搜索引擎架构设计[原创]   大 |  中 |  小  [  2008-12-9 08:47 | by  张宴 ] [文章作者:张宴 本文版本:v1.0 最后修改:2008.12 ...

  10. vs2017 GitHub插件的安装和使用

    这是针对于博客vs2017安装和使用教程(详细)的GitHub插件的安装和使用示例 目录 一.下载 二.安装 三.使用(以上传一个项目为例) 一.下载 1.项目右下角"添加到源代码管理&qu ...

最新文章

  1. 什么是边缘计算(Edge AI)?
  2. 关于魔法方法的一点总结
  3. Java字符编码的转化问题
  4. csv数据去重 python_python批量查询、汉字去重处理CSV文件
  5. Linux排序命令sort笔记
  6. 什么是JavaServer Faces(JSF)–(第2部分)
  7. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
  8. 数据结构基础(6) --顺序栈的设计与实现
  9. linux内核不发(Router Solicit)RS报文问题
  10. html中c b和b s,Web开发中B/S架构和C/S架构的区别
  11. [随笔] flex 布局使用 space-between 尾行排版效果优化
  12. 天梵古法健康知识普及:手阳明大肠经
  13. activiti 汉化
  14. 985硕士美女程序媛:10次面试的真实经历!阿里/携程/美团/58/华为....
  15. MySQL基础之索引
  16. CCF GAIR2018大会,100位全球人工智能大佬在深圳期待你的到来!
  17. IT业狼多肉少?程序员的绝地求生,谁能给他们一把“98K”?
  18. 视觉SLAM前端——PnP
  19. yarn ignore-engines
  20. web项目API接口设计与开发总结

热门文章

  1. 华为笔记本电脑触摸板失灵解决方法(触摸屏同理)
  2. 戴尔服务器上装vmware esxi
  3. git使用——15.搭建自己的gitlab服务器来存放我们的git项目
  4. 让迁移不再开盲盒,让云也能省钱丨Hackathon 项目背后的故事第一期回顾
  5. 【deepstream部署Yolov6】
  6. 戴德金之连续性和无理数的中文翻译
  7. 【词法分析和语法分析】编译原理实验一(hit)2022-lab1
  8. 清华梦的粉碎——写给清华大学的退学申请
  9. Linux4.14加密框架中的主要数据结构(1)—— struct crypto_alg(通用算法)
  10. 走近棒球运动·中华职业棒球大联盟·MLB棒球创造营