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

VOX Collections 播放部分 MP3 文件导致 LyricsX 闪退 #49

Closed
Cople opened this issue May 21, 2017 · 16 comments
Closed

VOX Collections 播放部分 MP3 文件导致 LyricsX 闪退 #49

Cople opened this issue May 21, 2017 · 16 comments
Labels

Comments

@Cople
Copy link

Cople commented May 21, 2017

在 VOX Collections 里,切部分歌会闪退,再手动打开 LyricsX 依旧闪退。除非先切到其他歌。

但是我试了在 iTunes 或者 VOX Playlist 里播放问题文件却不会导致 LyricsX 闪退,比较奇怪。

MP3 链接: https://pan.baidu.com/s/1pKWznJ1 密码: 3rxb

@ddddxxx
Copy link
Owner

ddddxxx commented May 21, 2017

根据以下操作步骤未能重现:

  1. 打开 LyricsX 和 Vox
  2. 在 Vox 中新建一个 Collection,将两首歌拖入其中
  3. 播放日不落,能正常显示歌词
  4. 切换到你是我最重要的决定,一切正常
  5. 切回日不落,同样一切正常

请提供更多信息以便我定位错误,例如:

  • 系统和应用的版本号
  • 应用的偏好设置
  • 更详细的复现步骤
  • CrashLog(重要)

CrashLog 位于 ~/Library/Logs/DiagnosticReports/,形如 LyricsX_DATE_DEVICE.crash

@ddddxxx ddddxxx added the bug label May 21, 2017
@Cople
Copy link
Author

Cople commented May 21, 2017

macOS: 10.11.6
VOX: 2.8.23
LyricsX: 1.1.2

日志内容:
先正常播放马德里不思议
切到日不落闪退
再次打开 LyricsX 闪退

LyricsX 设置:

  • 首选 VOX
  • 跟随启动(并没有起效...)
  • 默认歌词地址
  • 优先双语歌词
  • 不转换中文
  • 不合并菜单栏图标与歌词
  • 其他设置未做修改

VOX 基本都是默认设置,没什么改动。

CrashLog 链接: https://pan.baidu.com/s/1c229MG4 密码: vswx

ddddxxx added a commit that referenced this issue May 21, 2017
@ddddxxx
Copy link
Owner

ddddxxx commented May 21, 2017

依然不能重现,推测可能和 #25#40 原因相同。

我已在dev分支进行了可能的修复,你可以尝试拉取最新的分支以确认问题是否已修复。
如果没有相关环境,请在下方留言,我会为你build一个临时的版本。

@Cople
Copy link
Author

Cople commented May 21, 2017

你 build 个吧,我不会...

@ddddxxx
Copy link
Owner

ddddxxx commented May 21, 2017

由于本人实在无法复现,请帮忙测试这个版本:

LyricsX.app.zip

@ddddxxx
Copy link
Owner

ddddxxx commented May 21, 2017

关于Vox不能跟随启动的问题,还请新开一个issue,我将跟踪解决。

@Cople
Copy link
Author

Cople commented May 21, 2017

可以了,但是这 2 首问题歌默认没有歌词?

@ddddxxx
Copy link
Owner

ddddxxx commented May 21, 2017

问题似乎在于 LyricsX 无法从 Vox 取得歌曲的ID3信息。你可以打开“搜索歌词”窗口,LyricsX 将会自动填充歌曲和艺人。如果你发现搜索栏是空的,说明 Vox 没有提供歌曲信息。

@Cople
Copy link
Author

Cople commented May 22, 2017

嗯,但 VOX 上正常显示 ID3 信息

@ddddxxx
Copy link
Owner

ddddxxx commented May 22, 2017

程序使用类似 AppleScript 的方式从 Vox 中获取信息,你可以在Script Editor.app中运行以下脚本:

tell application "VOX" to get track

你可以以同样的方式获得uniqueIDalbumartist

如果能通过 AppleScript 取得 ID3 信息,而 LyrisX 不能,请告知我修复这个问题。如果 AppleScript 也无效,那么这是 Vox 的问题,我也无能为力。

@Cople
Copy link
Author

Cople commented May 22, 2017

我试了脚本可以获取哦

@ddddxxx
Copy link
Owner

ddddxxx commented May 22, 2017

请再次确认uniqueIDtrack albumartist都能正确获取,任何一项缺失都会导致程序拒绝搜索歌词。

@Cople
Copy link
Author

Cople commented May 22, 2017

album 没获取到,不过通过 artisttrack 应该也能搜出来吧

@ddddxxx
Copy link
Owner

ddddxxx commented May 22, 2017

这个是设计方面的问题,AppleScript 提供的字符串是可空的,但是并没有文档告诉我哪些字段会返回空值。我测试了 iTunes 的接口,即使 ID3 没有相关字段,iTunes 提供的也是空字符串"",而不是nil。所以我假设这些字段不会为空。
进一步的改进可能需要确认哪些字段可空,代表什么意义,然后相应处理。

ddddxxx added a commit that referenced this issue May 24, 2017
* dev:
  bump version
  fix: LyricsXHelper requires higher system version than main application, fix #50
  update: dependency
  style: no code change
  localization
  fix: unexpected force unwrapping, #49
@Cople
Copy link
Author

Cople commented May 24, 2017

我们说的好像不是一回事... 我意思 artisttrack 是获取到的,但是搜索歌词窗口并没有自动填上这 2 项,而且搜索不是不需要 album 字段么。

@ddddxxx
Copy link
Owner

ddddxxx commented May 24, 2017

我明白你的意思,这是我设计上的疏漏,具体的改进方案我还在考虑。

技术上的细节是这样的:

  • AppleScript 提供了可空的 API(具体的说,提供的是 c 指针),我使用了一个自动脚本把头文件转换成 Swift 的版本。
  • 转换过程有一些错误,生成了非空的 API,并且我没有测试出来。
  • 在此基础上,我设计的数据模型中,这几个字段都是非空的。更进一步,搜索过程也不接受空值。
  • 实际运行中,对空值的强制解包造成了崩溃。

虽然搜索不需要album字段,但是由于涉及到数据模型的修改,这一改进需要更多考量。

ddddxxx added a commit that referenced this issue Jun 11, 2017
* dev:
  search lyrics for track without album or artist, resolve #49
  ui for one line mode, resolve #37
  feat: one line mode
  ui for preferred lyrics source, close #53
  feat: customize preferred lyrics source
  fix: Karaoke lyrics always shows on program start, fix #56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants