哔哩哔哩AB循环

让播放器在AB点之间循环!

< Commentaires sur 哔哩哔哩AB循环

Avis: Bon - le script fonctionne correctement

§
Posté le: 14/03/2023

要是能在设置里允许改快捷键就更好了。目前快捷键跟已有的扩展冲突,遇上冲突双方都不能改快捷键的,就得忍痛关掉一个🤣

CKylinMCAuteur
§
Posté le: 14/03/2023

主要是懒得做修改弹窗什么的了(

有刚需的话,如果你能看懂下面的可以直接改,或者说一下要改成什么我看看给你改一下定制版本

308-329行

    function hotKeyHandler(e) {
        log(1,e);
        if (['KeyA', 'KeyB', 'KeyO'].includes(e.code)) {
            log(2,e);
            if (e.ctrlKey || e.altKey || e.shiftKey) return;
            if ([...e.path.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT")].length) return;
            switch (e.key) {
                case "a":
                    triggerAPoint();
                    e.preventDefault();
                    break;
                case "b":
                    triggerBPoint();
                    e.preventDefault();
                    break;
                case "o":
                    triggerToggleDoAuto();
                    e.preventDefault();
                    break;
            }
        }
    }

假如我要把O键换成Z键:

1:if (['KeyA', 'KeyB', 'KeyO'].includes(e.code)) {这里的KeyO改成KeyZ

2:case "o":这里的o改成z

变成:

    function hotKeyHandler(e) {
        log(1,e);
        if (['KeyA', 'KeyB', 'KeyZ'].includes(e.code)) {
            log(2,e);
            if (e.ctrlKey || e.altKey || e.shiftKey) return;
            if ([...e.path.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT")].length) return;
            switch (e.key) {
                case "a":
                    triggerAPoint();
                    e.preventDefault();
                    break;
                case "b":
                    triggerBPoint();
                    e.preventDefault();
                    break;
                case "z":
                    triggerToggleDoAuto();
                    e.preventDefault();
                    break;
            }
        }
    }

注意上面的大写,下面的小写,主要讲究一个对应。

有点小复杂,哈哈

§
Posté le: 14/03/2023

谢谢大神,解答的太详细了!我脚本不太会,之前查着资料改过视频加速的脚本刷课,当时那个作者是用数字指代键盘,65-90对应A-Z字母,查资料发现这么做的还不少,所以思维定势了,按照Key对照表直接搜索65、66,结果没搜到,也没敢乱改🤣🤣您这个写法比数字指代直观多了。
但我发现个问题,改完还是不起作用,后来我把所有扩展都关闭了,脚本除了您这个也都关闭了,按键还是不起作用,不管是用改的YU键还是原来默认的AB键,点开菜单看起始点一直是0,不像鼠标点能设置起始时间。想着是不是edge兼容性不好,换了firefox还是不起作用。目前系统是win11,更新到最新补丁,不晓得是哪里有问题。找机会我换台电脑再试试,现在先用鼠标点菜单用。
再次感谢!

CKylinMCAuteur
§
Posté le: 14/03/2023
Édité le: 14/03/2023

按道理是用数字keycode比较准确并且统一,我是偷懒啦哈哈 这种有兴趣的话可以看看MDN那边的文档,讲的还是很细的。(KeyboardEvent - MDN

兼容性这个实际上这两天我这边有时候也会有失效的问题,不是你的问题。

修改后的代码:

    function hotKeyHandler(e) {
        log(1,e);
        if (['KeyA', 'KeyB', 'KeyO'].includes(e.code)) {
            log(2,e);
            if (e.ctrlKey || e.altKey || e.shiftKey) return;
            if (e.path?.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT") || e.target.tagName=="INPUT" || e.target.tagName == "TEXTAREA") return;
            switch (e.key) {
                case "a":
                    triggerAPoint();
                    e.preventDefault();
                    break;
                case "b":
                    triggerBPoint();
                    e.preventDefault();
                    break;
                case "o":
                    triggerToggleDoAuto();
                    e.preventDefault();
                    break;
            }
        }
    }

也就是if ([...e.path.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT")].length) return;改成了if (e.path?.filter(t => t.tagName == "TEXTAREA" || t.tagName == "INPUT") || e.target.tagName=="INPUT" || e.target.tagName == "TEXTAREA") return;(e.path有时候不存在,所以filter这里会报错)

其实这里也是偷懒所以才有这个错误(

另外,YU按键版本:点此从Gist安装

哦对了如果你用过旧版本的话你会知道,新版本开始用的话可能都没有见过,以前设置AB点还会给视频进度条加一个绿色的进度指示哪里是循环范围,但是现在好像也失效了(

§
Posté le: 15/03/2023

多谢大神!B站总是悄悄地更新,确实不好弄,我首页上还出现了〖退出内测〗字样,不知道他们在内测什么,估计这是最近好几个扩展和脚本失效的原因。

CKylinMCAuteur
§
Posté le: 15/03/2023

嗯,是的。B站更新是一部分人先收到推送这样一点一点更新的,而且一直在变化。我写过脚本蛮多的(大都是自己需要所以做的),但是好多都属于没有人反馈就先不管,什么时候用得上再更新的状态...毕竟更新的太快了,哈哈哈哈

Poster une réponse

Connectez-vous pour poster une réponse.