[分享] 字幕閱讀器(支援 Netflix, Disney+, Youtube, KKTV 等影音平台)
文章瀏覽次數 9159 文章回覆數 148
留言
开发大大好,又发现了一个小 Bug ,在退出的时候抛出了以下日志:
Terminating globalPluginHandler
ERROR - globalPluginHandler.terminate (16:28:19.998) - MainThread (18888):
Error terminating global plugin <globalPlugins.subtitle_reader.GlobalPlugin object at 0x08D0B030>
Traceback (most recent call last):
File "globalPluginHandler.pyc", line 41, in terminate
File "C:\Users\cary\AppData\Roaming\nvda\addons\subtitle_reader\globalPlugins\subtitle_reader__init__.py", line 78, in terminate
sound.free()
File "C:\Users\cary\AppData\Roaming\nvda\addons\subtitle_reader\globalPlugins\subtitle_reader\sound.py", line 53, in free
import win32api
ModuleNotFoundError: No module named 'win32api'
点击自动检查更新抛出以下错误:
ERROR - unhandled exception (17:48:23.642) - MainThread (16380):
Traceback (most recent call last):
File "C:\Users\cary\AppData\Roaming\nvda\addons\subtitle_reader\globalPlugins\subtitle_reader\update.py", line 61, in toggleCheckAutomatic
item.Check(status)
AttributeError: 'NoneType' object has no attribute 'Check'
@Eureka 沒再動的功能也會有錯誤 ... 馬上來修,感謝抓錯!
只能跟有在使用的人說抱歉了,你們只能使用不穩定版,因為測試原只有我一個,而我一直在用 NVDA2019.2.1 所以很容易沒測到東西 ...
FireFox 的 Youtube 似乎不能读字幕,测试影片:
https://www.youtube.com/watch?v=5v7MqhPnlW0&list=PLnuK_MnMvxi8yOb-XtdGMmHCgorAPE8_B
回復 #79: 我測試正常耶
我使用 Google Chrome 可正常读出,但使用 FireFox 则无效,FireFox:106.0.5 (64 位)
回復 #81: 確認有開啟英文字幕嗎?這部影片是英文字幕喔。
另外只有這部影片有問題嗎?還是所有影片在 Firefox 都不讀字幕?
假如所有影片都不讀字幕,我這裡 Firefox 版本跟你上面的相同,但可以讀字幕,所以實在很難 debug ...
或者開debug info 看看有沒有有價值可參考的log
回復 #83: 他是會看事件紀錄的,所以應該是真的沒有出現異常,就真的是找不到字幕,只有我去塞滿滿的 log.debug 比較有可能找到問題了,但就會想到這個網站到處塞 setLog(...)
目前测试的几个影片都没有读出字幕,使用方向键可以看到英文字幕有显示出来。的确没留意到 log info 里的有用信息。另外对于可嵌入的 youtube 播放组件是否也可兼容一下字幕朗读呢?
比如下面这个: https://www.afb.org/blindness-and-low-vision/using-technology/assistive-technology-videos/learn-nvda/using-internet
回復 #85: 請問可否麻煩提供以下資訊讓我參考看看:
- 使用 Firefox 開啟不獨字幕的影片,然後複製完整的視窗標題。
- Firefox 的執行檔案名稱,或者在 Firefox 按 NVDA+CTRL+z 輸入 focus.appModule.appName 將輸出結果複製下來。
- 或許你們使用的 Firefox 版本與我使用的不同,請提供安裝程式的下載連結,我試試看會不會發現問題。
以上是我能想到有可能的點了,剩下的就不好查了。
Hi,
我找到原因了,是我在 fireFox 中开启了 accessibility.cache 特性。
该特性能够改善 FireFox 的性能,开启方法是地址栏内输入 about:config 然后搜索 accessibility.cache
另外,在 youtube.py 的 line:162 是不是可以尝试 try 来捕捉一下错误。
即: obj = self.main.videoPlayer.lastChild.firstChild
如果网页还没加载完,这里必然会导致错误,会抛出大量日志。
可以尝试:
try:
obj = self.main.videoPlayer.lastChild.firstChild
except: obj=None
好的,嘗試支援看看 ACC.cache 特性
另外我也有想過可以 catch 所有異常,但就是要想辦法紀錄哪裡出現異常,你貼的這一行,我先攔截並先寫死記錄好了,等我的 NVDAObjectFinder 寫好再來改得更好。
最終發現無法支援,因為 ACC.cache 啟用之後,所有 object.IA2Attributes 當中的 class 與 id 都消失了,難怪找不到字幕了。
不知道这是否是缺陷,或者 Bug 可以报告给 Mozilla