m13253 / BiliDan

Play videos on Bilibili.com with MPV and Danmaku2ASS
http://m13253.blogspot.com/2014/06/watch-bilibili-with-biligrab-danmaku2ass.html
Other
513 stars 69 forks source link

mpv version detection #62

Closed tianren closed 8 years ago

tianren commented 8 years ago

bilidan.py 检测 mpv version 的代码有些问题。当前通过比较 tuple of strings 来确定版本。但在 python 中 '9'>'10',因此不论 mpv 的版本,mpv_version_gte_0_10 都会被设为 True。

下面是我暂用的补救措施,其仍然含有 bug (没有检查 str 能否被转为 int),仅供参考

-        mpv_version_gte_0_10 = mpv_version_master >= ('0', '10') or (len(mpv_version_master) >= 2 and len(mpv_version_master[1]) >= 3) or mpv_version_master[0] == 'git'
-        mpv_version_gte_0_6 = mpv_version_gte_0_10 or mpv_version_master >= ('0', '6') or (len(mpv_version_master) >= 2 and len(mpv_version_master[1]) >= 2) or mpv_version_master[0] == 'git'
-        mpv_version_gte_0_4 = mpv_version_gte_0_6 or mpv_version_master >= ('0', '4') or (len(mpv_version_master) >= 2 and len(mpv_version_master[1]) >= 2) or mpv_version_master[0] == 'git'
+        mpv_version_gte_0_10 = (len(mpv_version_master) >= 2 and len(mpv_version_master[1]) >= 3) or mpv_version_master[0] == 'git' or tuple(map(int,mpv_version_master)) >= (0, 10)
+        mpv_version_gte_0_6 = mpv_version_gte_0_10 or (len(mpv_version_master) >= 2 and len(mpv_version_master[1]) >= 2) or tuple(map(int,mpv_version_master)) >= (0, 6)
+        mpv_version_gte_0_4 = mpv_version_gte_0_6 or tuple(map(int,mpv_version_master)) >= (0, 4)
m13253 commented 8 years ago

谢谢反馈。如果发现了比较好的解决方法(可以转门写一个比较版本的函数),欢迎 PR,我会合并。

实际上这几次更新,mpv 的命令行参数都有改变,兼容旧版本也比较累,不如更新到最新版啦。

zanderzhng commented 8 years ago

让 bilidan 只支持 mpv > 0.10 就好了!

m13253 commented 8 years ago

问题在于垃圾 Ubuntu、Debian 软件源万年不更新。

我也想只支持最新版啊 。(笑)