Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Feature : Advance notice skip #84

Merged
merged 10 commits into from
Dec 2, 2024
Merged

Add Feature : Advance notice skip #84

merged 10 commits into from
Dec 2, 2024

Conversation

etherfun
Copy link
Contributor

@etherfun etherfun commented Nov 18, 2024

  • 我同意我的所有贡献将以GPL-3.0协议开源。

#53 添加跳过前通知 提前时间为 '空降提醒弹窗'显示持续时间 设置时间
经测试赞助广告无偿推广可用 其他兼容性不明 (其实是找不到对应的片段了
已全部适配
(题外话:要不在服务器拿点片段 放在贡献指南里开发用 无偿推广这种都挺少的

效果预览

2024-11-18.202316.mp4

@xiaoxuan010
Copy link
Contributor

xiaoxuan010 commented Nov 18, 2024

感觉可以在跳过完成后把赞助广告 准备跳过更改为赞助广告 已跳过,不知道方不方便实现。

@etherfun
Copy link
Contributor Author

etherfun commented Nov 18, 2024

它那是固定的关键字 我也不知道
正常情况下这个是刚好在跳过时消失
靠后面的状态也可以判断跳过状态吧取消跳过 重新跳过

@xiaoxuan010
Copy link
Contributor

(题外话:要不在服务器拿点片段 放在贡献指南里开发用 "无偿推广"这种都挺少的

项目官网 可以下载到数据库,例如这个视频 BV1fKewejE29 ,包含了开场动画、赞助广告、离题、鸣谢/结束画面等类别,可以用来测试。

@@ -371,11 +371,11 @@
"description": "Used for skipping to things (Skip to Highlight)"
},
"skipped": {
"message": "{0} Skipped",
"message": "{0} Ready Skipped",
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

en.message.json 文件其实不需要更新,这个文件是用来追踪原插件的文本,每次合并原插件版本的时候才更新一次

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

同目录下的message.json 也不需要吗?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

message.json是需要的,en.message.json不需要,不过问题不大,因为下次同步会覆盖的

@hanydd hanydd linked an issue Nov 20, 2024 that may be closed by this pull request
@hanydd hanydd self-requested a review November 20, 2024 04:49
@hanydd
Copy link
Owner

hanydd commented Nov 20, 2024

整了个测试视频 https://www.bilibili.com/video/BV14741127BN/

Fix unskip bug and skip when paused bug
@etherfun etherfun marked this pull request as draft November 21, 2024 03:03
@etherfun etherfun marked this pull request as ready for review November 21, 2024 13:09
Fix rare error skips.    e.g.Notice appears earlier than the set time or error skip occurs
@hanydd
Copy link
Owner

hanydd commented Nov 23, 2024

试了一下,发现跳过了以后的弹窗没了。我觉得这个功能应该是在前后都加上弹窗,而不是直接把跳过后的弹窗改成前面🤔如果跳过之后没有弹窗的话,想要投票就更麻烦了。而且新功能一般不会直接开启,要加个选项控制。

我自己想了一下逻辑,不知道对不对:

  • 手动跳过:

    1. 片段前x秒出现弹窗,持续到片段开头之后y秒 ->
    2. 可以直接选择跳过,如果还没有到片段,则播放到片段开头之后跳过 ->
    3. 跳过之后出现弹窗,持续y秒,可以跳回片段头
  • 自动跳过:

    1. 片段前x秒出现弹窗 ->
    2. 到片段开头自动跳过 ->
    3. 跳过之后出现弹窗,持续y秒,可以跳回片段头

xy都是可以配置的时间

@etherfun
Copy link
Contributor Author

目前添加了新的两个设置项advanceSkipNotice默认关闭, 控制是否提前显示弹窗 skipNoticeDurationBefore默认4(秒), 控制提前弹窗的时间
(精彩时刻/重点poi_highlight是不能用了吗? 开自动跳至位置 我这显示弹窗但是没有取消跳过按键

@hanydd
Copy link
Owner

hanydd commented Nov 25, 2024

目前添加了新的两个设置项advanceSkipNotice默认关闭, 控制是否提前显示弹窗 skipNoticeDurationBefore默认4(秒), 控制提前弹窗的时间 (精彩时刻/重点poi_highlight是不能用了吗? 开自动跳至位置 我这显示弹窗但是没有取消跳过按键

poi_highlight目前有点问题#69,之后适配我自己修复好了,我回去试试其他的功能

@hanydd hanydd merged commit 0b8fb76 into hanydd:master Dec 2, 2024
2 checks passed
@hanydd
Copy link
Owner

hanydd commented Dec 5, 2024

我深度测试了一下,感觉还是有一点点问题,下个版本如果没修好就先不发这个功能了,我单独建了个分支接着改feature-advance-notice #99
我发现的主要问题:

  1. 应该没有考虑不同速率播放视频,没有仔细验证过,但是看代码是没有考虑的
  2. 自动跳过的片段,如果在出现了提前弹窗的时候暂停,等待弹窗倒计时结束消失,就不会触发自动跳过
  3. video元素的监听器没有写到统一的方法里,(不过我也说不好是不是应该写到一起,现在content.js 有点太臃肿了…

@etherfun
Copy link
Contributor Author

etherfun commented Dec 5, 2024

应该没有考虑不同速率播放视频,没有仔细验证过,但是看代码是没有考虑的

其实是有的getVideo().playbackRate这个就是计算倍速带来的影响

return Math.min(
(Config.config.skipNoticeDurationBefore * 1000) / getVideo().playbackRate,
((skipTime[0] - getVideo().currentTime) * 1000) / getVideo().playbackRate

但是这里没有getVideo().playbackRate需要补一下
if (Config.config.advanceSkipNotice && Config.config.skipNoticeDurationBefore > 0) {
delayTime -= Config.config.skipNoticeDurationBefore * 1000;
}


自动跳过的片段,如果在出现了提前弹窗的时候暂停,等待弹窗倒计时结束消失,就不会触发自动跳过

确实没发现
我看看能不能加一个暂停弹窗倒计时也暂停


video元素的监听器没有写到统一的方法里,(不过我也说不好是不是应该写到一起,现在content.js 有点太臃肿了…

这个的话确实太乱了 一开始是有传Video元素参数 然后后面发现可以直接用getVideo()而且在content.ts到处都能用就这样了..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

自动跳过提示框提前出现
3 participants