У меня есть библиотека 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 как законная замена.