LuckyPuppy514 / Play-With-MPV

使用 MPV 播放网页中的视频
MIT License
602 stars 20 forks source link

播放页闲置一段时间后再播放,字幕无法加载 #116

Closed verygoodlee closed 1 year ago

verygoodlee commented 1 year ago

打开播放页,闲置一段时间(具体不清楚,可能二三十分钟左右)再点击播放,字幕加载失败, 找到字幕链接手动在浏览器访问,403 Forbidden https://aisubtitle.hdslb.com/bfs/subtitle/57a0cf4d9fe8c9494e30532f75aeb7b353c0c507.json?auth_key=1696906421-c985095629d84709933c4a46512ad6f9-0-1f385237014cf5144feb66312c3fbaab&lan=zh-CN

重新刷新页面就好了,再次找到字幕链接打开能访问,对比两个链接只有auth_key这个参数不同, 猜测可能是为了防止盗链,auth_key做了时间限制,超过一段时间就失效,

能否做到每次播放时都刷新auth_key,这样应该能解决这个问题

LuckyPuppy514 commented 1 year ago

这个建议还是手动刷新一下页面,等几十分钟才点击播放的情况还是比较少的 😂

verygoodlee commented 1 year ago

这个建议还是手动刷新一下页面,等几十分钟才点击播放的情况还是比较少的 😂

我想到个解决方案,改动比较小,用定时器

async function getBilibiliPlayUrl(avid, cid) {
    ......
    ......
    if (currentConfig.subtitlePrefer != "off") {
        getBilibiliVideoSubtitle(avid, cid);
        if(!!handler.media.subtitleUrl){// 如果有字幕,定时器每隔5分钟刷新一次,防止链接过期
            setInterval(function(){
                console.log('reload bilibili subtitle');
                getBilibiliVideoSubtitle(avid, cid);
                console.log(handler.media.subtitleUrl);
            }, 1000*60*5);
        }
    }
}

看了一下控制台打印的字幕链接,两次的auth_key确实是不同的,\ 你评估一下,看看对其他地方有没有没影响,\ 时间可以适当调长点,10分钟感觉应该没啥问题,没严谨测过链接的超时时间是多少

LuckyPuppy514 commented 1 year ago

加是不难加,等我有空吧,可能要过几天 😂