windtrace 发表于 2019-9-30 11:20

[javascript]灯塔100首优秀歌曲连续收听分析

本帖最后由 windtrace 于 2019-11-11 13:31 编辑

灯塔大课堂推出了100首优秀歌曲,非常经典,但每首时间较短,需要手动点击下一首,影响体验,现做一下简单分析
一、歌曲列表从12首扩展到100首
chrome F12 中的Network标签页分析一下可知,接口为:http://dkt.dtdjzx.gov.cn/subcourse/subCoursePage?pagenum=1&pagesize=12
其中的pagesize修改成100即可,工具用任意能够拦截http请求的即可,以fiddler为例,命令行输入:
urlreplace pagesize=12 pagesize=100

二、完成后自动收听下一首
涉及三个步骤:
1.当前进度。用进度条<div>标签的“aria-valuenow”属性即可,值为“100.00”时表示收听完毕。获取代码:
document.getElementsByClassName('vjs-progress-holder vjs-slider vjs-slider-horizontal').getAttribute('aria-valuenow')
2.点击播放列表下一首歌曲
播放列表获取:document.getElementsByClassName('videoLists_bd').children;
点击用click()事件即可
3.播放按钮点击
按钮获取: document.getElementsByClassName('vjs-big-play-button');
点击用click()事件即可

第二部分完整代码:F12 Console面板调试
var lists = document.getElementsByClassName('videoLists_bd').children;//歌曲<div>列表

var eleDiv = null;//progress
var btnPlay = null;//btn
var isBtnplayClicked = false;
var interval = null;//计时器
var i=0;//当前歌曲索引
function myWork(){
      eleDiv = document.getElementsByClassName('vjs-progress-holder vjs-slider vjs-slider-horizontal').getAttribute('aria-valuenow');//progress
      if(eleDiv == '100.00'){//播放完毕
                i=i+1;
                if(i >= lists.length){
                        alert("over!!");
                        clearInterval(interval);
                        return;
                }
                lists.click();
                isBtnplayClicked = false;
                console.log(lists.title);
                return;
      }
      if(isBtnplayClicked == false){
                btnPlay = document.getElementsByClassName('vjs-big-play-button');//btn
                btnPlay.click();//点击
                isBtnplayClicked = true;
                console.log('播放');
                return;
      }
console.log('.');
}
interval = setInterval(myWork,2000);

20191111 对于11月份的新任务,直接复制代码,在console里面粘贴并回车执行即可

windtrace 发表于 2019-10-1 19:27

本帖最后由 windtrace 于 2019-10-1 19:30 编辑

muyisd 发表于 2019-10-1 03:03
卡在这一步了,请指教。
如何修改,才是正确的姿势?一直没有效果。
在fiddler的命令行(快捷键alt+q)输入urlreplace pagesize=12 pagesize=100,fidder会自动将http://dkt.dtdjzx.gov.cn/subcour ... 1&pagesize=12
改为
http://dkt.dtdjzx.gov.cn/subcour ...&pagesize=100
这样,会在歌曲列表中显示100首歌,而不是默认的12首

接口通过F12中的network窗口,观察一下就会发现这个接口

muyisd 发表于 2019-10-1 02:15

一、歌曲列表从12首扩展到100首
chrome F12 中的Network标签页分析一下可知,接口为:http://dkt.dtdjzx.gov.cn/subcourse/subCoursePage?pagenum=1&pagesize=12
其中的pagesize修改成100即可,工具用任意能够拦截http请求的即可,以fiddler为例,命令行输入:
urlreplace pagesize=12 pagesize=100

找到了这个地址,如何修改?

anlanchenxiang 发表于 2019-9-30 11:53

看不懂。这是做什么用的。

wangfdsa 发表于 2019-9-30 14:45

各位大哥,请问现在有什么工具可以“协助”学习灯塔在线吗?

muyisd 发表于 2019-9-30 23:31

楼主关注下呗。

muyisd 发表于 2019-10-1 02:08

Network标签页分析一下可知,接口为:http://dkt.dtdjzx.gov.cn/subcourse/subCoursePage?pagenum=1&pagesize=12

这个接口怎么找到的?

muyisd 发表于 2019-10-1 03:03

卡在这一步了,请指教。
如何修改,才是正确的姿势?一直没有效果。

xtuuqtbl 发表于 2019-10-1 19:29

wangfdsa 发表于 2019-9-30 14:45
各位大哥,请问现在有什么工具可以“协助”学习灯塔在线吗?

有视频脚本,不过不好用了,还能凑合用

xtuuqtbl 发表于 2019-10-1 19:31

是不是可以理解为:把本来一页12首改成100首,然后自动播放并点击下一曲。
页: [1] 2
查看完整版本: [javascript]灯塔100首优秀歌曲连续收听分析