神仙不在 发表于 2024-11-14 23:01

有'iframe界面的怎么自动下一集

本帖最后由 神仙不在 于 2024-11-14 23:03 编辑

比如这个网站三三电影网
https://www.qiju.cc/vod/play/id/356/sid/2/nid/1.html
我在 console 里面输入下面代码可以实现自动下一集video = document.querySelectorAll('iframe').contentWindow.document.querySelector('video')video.addEventListener('ended', () => {
    let 当前播放集 = document.querySelector('.box.border.on.ecnav-dt')
    if (当前播放集.nextElementSibling) {
      当前播放集.nextElementSibling.firstElementChild.click()
    }


})
有个问题,在第一集的时候实现自动跳到第2集,但是第2集播放完毕,不会跳了,要怎么实现呢,我添加到油猴里面也不行,不知道怎么办了

远方呢 发表于 2024-11-15 00:58

顶起来 别沉

天空の幻像 发表于 2024-11-15 01:05

document.querySelector("#player > div > div.yzmplayer-controller > div.controller-box > div.yzmplayer-bar-wrap > div.yzmplayer-bar > div.yzmplayer-played")

用进度条的进度判断,到结尾在点击下一集

神仙不在 发表于 2024-11-15 06:44

天空の幻像 发表于 2024-11-15 01:05
document.querySelector("#player > div > div.yzmplayer-controller > div.controller-box > div.yzmplaye ...

用ended事件是可行的,进度条是第2种思路

神仙不在 发表于 2024-11-15 06:57

本帖最后由 神仙不在 于 2024-11-15 07:09 编辑

之前有个语法错误,还是有问题
let video = document.querySelectorAll('iframe').contentWindow.document.querySelector('video');
video.addEventListener('ended', () => {
    let 当前播放集 = document.querySelector('.box.border.on.ecnav-dt')
    if (当前播放集.nextElementSibling) {
      当前播放集.nextElementSibling.firstElementChild.click()
    }
})
目前测试的结果是要想实现自动下一集,每次都要在console里面输入一遍

KKBon 发表于 2024-11-15 07:08

根据该播放器的参数,next下一集的地址,iframe.src=url=m3u8_url&next=m3u8_url , 似乎并不是魔改的版本。{:1_926:}

yanhongzao 发表于 2024-11-15 08:18

参考一下

不知道改成啥 发表于 2024-11-15 08:42

神仙不在 发表于 2024-11-15 06:57
之前有个语法错误,还是有问题
let video = document.querySelectorAll('ifr ...

加个定时器呗

神仙不在 发表于 2024-11-15 08:54

本帖最后由 神仙不在 于 2024-11-15 08:55 编辑

不知道改成啥 发表于 2024-11-15 08:42
加个定时器呗
定时器成功了。发出来我的油猴代码,
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      2024-11-15
// @descriptiontry to take over the world!
// @AuThor       You
// @match      https://www.qiju.cc/*
// @Icon         https://www.google.com/s2/favicons?sz=64&domain=qiju.cc
// @grant      none
// ==/UserScript==

(function() {
    'use strict';

   setTimeout(function () {
    let video = document.querySelectorAll('iframe').contentWindow.document.querySelector('video');
video.addEventListener('ended', () => {
    let 当前播放集 = document.querySelector('.box.border.on.ecnav-dt')
    if (当前播放集.nextElementSibling) {
      当前播放集.nextElementSibling.firstElementChild.click()
    }
})
}, 5000)
})();


应该还有个某种判断方法,大佬帮忙下,

三滑稽甲苯 发表于 2024-11-15 09:12

本帖最后由 三滑稽甲苯 于 2024-11-15 09:14 编辑

结束时等新的 frame 加载成功后得重新添加一个 listener,因为原来 listen 的对象(video)在播放下一集时已经消失了
页: [1] 2
查看完整版本: 有'iframe界面的怎么自动下一集