无法在node.js中转换itunes XML播放列表

时间:2016-10-14 18:29:47

标签: javascript xml node.js unicode vlc

前段时间我写了一个快速的小节点命令行实用程序,将XML格式的itunes播放列表转换为m3u,xspf等,这样我就可以在工作的linux盒子上使用它们,android phone *等等。

*我有一个25+千兆字节的音乐收藏,doubletwist等只是龙骨而死并试图与我的mac同步

起初这很好,但随着我的音乐收藏增长,我遇到了障碍:没有媒体播放器可以找到任何带有非英语unicode字符的文件,例如ñ,í和几乎任何日本汉字。它并不是导致这个问题的每一个角色,但在很大程度上它是一个东西。

由于itunes文件路径是部分url编码的(并且不需要匹配目标格式的约束),并且需要部分替换为目标机器上的正确路径,因此我有以下代码:处理文件路径(剥离不相关的东西):

decodeURIComponent, decodeURI

我已经尝试了file:///Users/username/Music/iTunes/iTunes%20Media/Music/Compilations/Chronicles%20of%20Time/3-05%20Melodi%CC%81a%20de%20la%20montan%CC%83a%20(feat.%20Doug%20Perry%20&%20Matheus%20S.%20Garcia%20Souza).m4a ,以及我上面引用的自定义函数。以下是XML文件中的示例:

/home/username/Music/Compilations/Chronicles of Time/3-05 Melodía de la montaña (feat. Doug Perry & Matheus S. Garcia Souza).m4a

转换为:

3-05 Melodía de la montaña (feat. Doug Perry & Matheus S. Garcia Souza).m4a

哪个看起来不错,但是VLC,克莱门汀等都找不到。这是直接来自Nautilus的文件名:

decodeURIComponent

在路径中引用的目录中。请注意,由{{1}}解释的变形位于'a'而不是'n'(我的函数不会产生错误,因此本身不是问题)。  如何修改这些以便媒体播放器可以找到曲目?

1 个答案:

答案 0 :(得分:1)

所以问题最终成为了组合字符。解码,normalizing和重新编码修复了它。