Файл URI в iTunes Music Library лишних символов - PullRequest
0 голосов
/ 23 октября 2019

У меня есть библиотека iTunes (непосредственно перед обновлением до Catalina), которую я хочу программно изменить. В библиотеке 132 629 файлов.

У меня есть файл .xml , созданный iTunes для обмена метаданными о файлах.

Я не разбираю xml;ищет только запись Location, в которой указывается путь к файлу, используемый iTunes.

Проблема:

Файлы имеют Кодированный URI Пути UTF-8, которые легкодекодируется с помощью библиотеки urllib.parse Python:

>>> import urllib.parse
>>> p="file:///Volumes/Promise%20R8%20RAID5/Data/iTunes/Music/Giorgio%20Moroder/Midnight%20Express%20(Soundtrack%20from%20the%20Motion%20Picture)/01%20Chase.m4a"
>>> urllib.parse.unquote(p)[7:]
'/Volumes/Promise R8 RAID5/Data/iTunes/Music/Giorgio Moroder/Midnight Express (Soundtrack from the Motion Picture)/01 Chase.m4a'

, которая работает с большинством файлов.

Однако во многих именах музыкальных файлов есть символ &:

>>> p2="file:///Volumes/Promise%20R8%20RAID5/Data/iTunes/Music/Wretch%2032/Traktor%20(feat.%20L)/02%20Traktor%20(Darwood%20&%20Preston%20Remix).m4a"
>>> urllib.parse.unquote(p2)[7:]
'/Volumes/Promise R8 RAID5/Data/iTunes/Music/Wretch 32/Traktor (feat. L)/02 Traktor (Darwood & Preston Remix).m4a'

Обратите внимание на последовательность символов & после & в имени файла. iTunes добавляет их к каждому имени файла с & в нем.

Пока обходной путь path=urllib.parse.unquote(p2)[7:].replace('&','&') работает («работает» как в состоянии разрешить 100% моих имен файловв (моей библиотеке) кто-нибудь знает, почему эта последовательность символов добавляется к именам файлов с & в них? Это не задокументировано в RFC 8089 как законная замена.

...