Традиционный способ доступа к iTunes
метаданным на Mac - использовать интерфейс Apple Events через AppleScript
(или другие языковые эквиваленты, такие как py-appscript ). Существует много ссылок на использование iTunes
с AppleScript
или appscript
, например, this . Вы можете использовать AppleScript Editor.app
для просмотра словаря сценариев для iTunes. Вот простой пример запроса с использованием appscript
в Python:
>>> from appscript import *
>>> itunes = app('iTunes')
>>> for track in itunes.file_tracks[its.album == 'Bridge Over Troubled Water']():
... print(track.name())
...
Bridge Over Troubled Water
El Condor Pasa (If I Could)
Cecilia
Keep The Customer Satisfied
So Long, Frank Lloyd Wright
The Boxer
Baby Driver
The Only Living Boy In New York
Why Don't You Write Me
Bye Bye Love
Song For The Asking
Feuilles-O
Bridge Over Troubled Water (Demo Take 6)
Для использования интерфейса Apple Events требуется, чтобы iTunes.app
был запущен. Другой подход заключается в анализе файла iTunes Music Library.xml
, который iTunes автоматически создает и обновляет при изменении метаданных. Этот файл является документированным интерфейсом для большого подмножества метаданных iTunes, которое полностью хранится в недокументированной внутренней базе данных. XML-файл на самом деле является plist
файлом, поэтому он легко читается модулем Python plistlib
:
>>> import os.path, plistlib
>>> lib = plistlib.readPlist(os.path.expanduser('~/Music/iTunes/iTunes Music Library.xml'))
>>> list(lib.keys())
['Minor Version', 'Playlists', 'Features', 'Major Version', 'Library Persistent ID', 'Music Folder', 'Application Version', 'Tracks', 'Show Content Ratings', 'Date']
>>> lib['Tracks']['42527']
{'Album': 'Bridge Over Troubled Water', 'Persistent ID': 'E1C66D8F01C44BD8', 'Track Number': 1, 'Location': 'file://localhost/CD%20Cache/music/aac/Simon%20&%20Garfunkel/Bridge%20Over%20Troubled%20Water/01%20Bridge%20Over%20Troubled%20Water.m4a', 'File Folder Count': 6, 'Disc Number': 1, 'Total Time': 295826, 'Sample Rate': 44100, 'Track Count': 13, 'Genre': 'Rock', 'Bit Rate': 128, 'Kind': 'AAC audio file', 'Name': 'Bridge Over Troubled Water', 'Artist': 'Simon & Garfunkel', 'Disc Count': 1, 'File Type': 1295270176, 'Date Added': datetime.datetime(2011, 12, 13, 10, 5, 47), 'Date Modified': datetime.datetime(2008, 10, 28, 5, 59, 20), 'Library Folder Count': 5, 'Composer': 'Paul Simon', 'Year': 1970, 'Track ID': 42527, 'Size': 4941116, 'Track Type': 'File'}
, который затем можно проанализировать или преобразовать в более удобную структуру данных для поиска.