wbiblem 2019-06-28
为何写这个接口?其实本来不准备写的,这两天在练习 TypeScript,然后一直在用TypeScript改造express框架的应用生成器代码。改着改着发现有点无聊了。
无聊,而且没有挑战,怎么办?....Google翻墙后随意逛了下,然后无意中看到一个比较好欺负
的 学(dongzuo)习(pian)网站,然后抄起还没最终完善好的项目代码来练练手!
注意:代码本无罪,请以学习的目的来正确看待本项目!
github地址:https://github.com/helpcode/TsVideo
项目基于Node.js,主要开发语言使用的是TypeScript,通过自动化构建工具gulp实现对*.ts
文件的修改后的自动编译成*.js
。
使用模块 gulp-uglify 压缩编译成功后的js代码,然后通过模块 gulp-babel将编译后的es6
转换成es5
代码。
因为当我们还没写完某段ts代码,gulp在后台编译的时候就会报错,报错直接导致了gulp终止了进程也就无法对代码进行有效的实时编译。所以这里使用模块 gulp-plumber在容易出错的地方写错误监听。这个插件可以阻止 gulp 插件发生错误导致进程退出并输出错误日志。
代码位置:gulpfile.js
第18行
//编译ts文件为js gulp.task('build-ts',function(){ return tsp.src() .pipe(plumber()) // 捕捉编译ts编译的错误,避免因为错误导致gulp进场关闭 .pipe(tsp()) .pipe(gulp.dest(PATHS.output)); });
因为我们要让gulp在后台监听并实时编译ts文件,然后还想让我们的nodejs服务器同步我们ts文件编译结束能自动重启查看到效果,所以我这里安装了模块 concurrently 。主要用于同步运行gulp任何和启动nodejs网站服务器。
package.json
中代码:
"scripts": { ... "all": "concurrently \"gulp dev\" \"npm run dev\" " }
所以请先全局安装 concurrently
,命令:
然后在安装你的网站依赖。
项目里有些文件和代码和此次爬虫的代码无关,只是我之前还没写完的代码留在那,懒得删除!并不影响使用...
这个接口获取的是网站主页的数据,视频数量有限,不过是推荐的热门视频。
接口地址 | 请求方式 | 参数 |
---|---|---|
/index | GET | 无 |
{ status: 200, length: 24, time: "2018-08-11 23:22:26", result: [ { title: "SM调教最新**娘", href: "https://www.**.com/Html/93/5949.html", gif: "https://pic.**.com/Uploads/vod/2018-08-11/7.mp4.gif", time: "2018-08-11", mp4: "https://d.e**i.com/20180811/93/7/7.mp4" }, { title: "极品**女主播96年美女赵晓晓人这么瘦却有这么一对****", href: "https://www.**.com/Html/91/5948.html", gif: "https://pic.**.com/Uploads/vod/2018-08-11/924.mp4.gif", time: "2018-08-11", mp4: "https://d.**.com/20180811/91/924/924.mp4" }, ] }
这个接口是用来获取各个网站分类栏目的数据,视频数量和分类更多!
接口地址 | 请求方式 | 参数 |
---|---|---|
/class | GET | type:具体栏目编号(参考下面的表) page: 页码 |
{ status: 200, length: 12, time: "2018-08-11 23:35:55", total: "共2642部 4/221", result: [ { title: "藝壇風雨錄-[粵語中字]", href: "https://www.**.com/Html/109/5865.html", gif: "https://pic.**.com/Uploads/vod/2018-08-06/11.mp4.jpg", time: "2018-08-06", mp4: "https://d.**.com/20180806/109/11/11.mp4" }, { title: "正点留学妹妹**视频被**漂亮", href: "https://www.**.com/Html/87/5857.html", gif: "https://pic.**.com/Uploads/vod/2018-08-05/64.mp4.gif", time: "2018-08-05", mp4: "https://d.**.com/20180805/87/64/64.mp4" } ] }
注意:type 字段的具体编号请看下表:
栏目名称 | 栏目编号 |
---|---|
国产精品 | 60 |
中文字幕 | 94 |
....
更多栏目id,请查看配置文件源码/src/config/index.ts
。你懂得!!!
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。