Добавляя музыку в iTunes я столкнулся с тем, что большое число песен не имеют правильно прописанных тегов. Выглядит это примерно так
Детальный осмотр показал, что это не проблема кодировок. Теги в треках именно, что были забиты знаками '?'.
Как оказалось не все потеряно, так как имя файла, а также каталога, в котором этот файл находится содержит всю необходимую информацию, такую как имя исполнителя, альбом, год, название и номер трека
Поправить треки в iTunes можно просто взяв путь к файлу, выделить из него интересующие нас куски и прописать их в соответствующие теги. Для этой задачи решено было использовать AppleScript. Исчерпывающую документацию по нему можно найти тут AppleScript Guide, а примеры работающих скриптов тут Doug's Scripts
Засучив рукава, запускаем Script Editor
В меню Windows > Library выбираем интересующее нас приложение iTunes
Это откроет нам описание объектов приложения досупных для скриптинга
AppleScript, в отличие от остальных языков программирования очень похож на английский язык
Некоторые программы на AppleScript неотличимы от записок ученика средней школы. Минус — тем кто программировал на других языках придется поначалу довольно туго. Впрочем, есть и плюс — помимо возможности автоматизации приложений в Mac OS X, программирование на AppleScript дает хорошую практику в английском языке.
Есть две возможности посмотреть результаты работы скрипта: через использовние return и консоль Result,
либо через использование log на панели Event Log
Есть еще такая штука как display dialog, но это уже для продвинутых пользователей.
Возвращаясь к нашей проблеме парсинга имени файла. Делается это несколько неочевидно
впрочем если вчитаться, то все понятно. Английская грамматика вплоть до притяжательно склонения. Обратите внимание, что возвращается список строк
и не забываем о грамматике
Вообще работа со строками в AppleScript несколько неуклюжа на неанглоязычный взгляд, с другой стороны быстро привыкаешь и порой не зная как записать ту или иную конструкцию, просто пишешь по-английски. Получается работающая программа.
Итоговый разбор имени файла на интересующие нас части выглядит примерно так
Треки будем обрабатывать в iTunes. Для этого будем работать в цикле со списком выделеных треков. Список выделенных треков получим используя selection.
Интересующие нас свойства (теги) можно подсмотреть в документации, которую мы открыли раньше
Итоговый скрипт выглядит вот так
Детальный осмотр показал, что это не проблема кодировок. Теги в треках именно, что были забиты знаками '?'.
Как оказалось не все потеряно, так как имя файла, а также каталога, в котором этот файл находится содержит всю необходимую информацию, такую как имя исполнителя, альбом, год, название и номер трека
Поправить треки в iTunes можно просто взяв путь к файлу, выделить из него интересующие нас куски и прописать их в соответствующие теги. Для этой задачи решено было использовать AppleScript. Исчерпывающую документацию по нему можно найти тут AppleScript Guide, а примеры работающих скриптов тут Doug's Scripts
Засучив рукава, запускаем Script Editor
В меню Windows > Library выбираем интересующее нас приложение iTunes
Это откроет нам описание объектов приложения досупных для скриптинга
AppleScript, в отличие от остальных языков программирования очень похож на английский язык
Некоторые программы на AppleScript неотличимы от записок ученика средней школы. Минус — тем кто программировал на других языках придется поначалу довольно туго. Впрочем, есть и плюс — помимо возможности автоматизации приложений в Mac OS X, программирование на AppleScript дает хорошую практику в английском языке.
Есть две возможности посмотреть результаты работы скрипта: через использовние return и консоль Result,
либо через использование log на панели Event Log
Есть еще такая штука как display dialog, но это уже для продвинутых пользователей.
Возвращаясь к нашей проблеме парсинга имени файла. Делается это несколько неочевидно
впрочем если вчитаться, то все понятно. Английская грамматика вплоть до притяжательно склонения. Обратите внимание, что возвращается список строк
text items of filename
. Чтобы получить элемент этого списка, нужно просто указать номе нужного элемента (нумерация с единицы) и не забываем о грамматике
text item 5 of filename
. Непонятно почему разработчики AppleScript не пошли дальше и не заменили, скажем, цифры соответствующими словесными обозначениями. Вообще работа со строками в AppleScript несколько неуклюжа на неанглоязычный взгляд, с другой стороны быстро привыкаешь и порой не зная как записать ту или иную конструкцию, просто пишешь по-английски. Получается работающая программа.
Итоговый разбор имени файла на интересующие нас части выглядит примерно так
Треки будем обрабатывать в iTunes. Для этого будем работать в цикле со списком выделеных треков. Список выделенных треков получим используя selection.
Интересующие нас свойства (теги) можно подсмотреть в документации, которую мы открыли раньше
Итоговый скрипт выглядит вот так
tell application "iTunes"
if selection is not {} then -- there ARE tracks selected...
set sel to a reference to selection
repeat with aTrack in sel
set filename to location of aTrack as text
set AppleScript's text item delimiters to ":"
set artst to text item 5 of filename as text
set albm to text item 6 of filename as text
set title to text item 7 of filename as text
set AppleScript's text item delimiters to ""
-- work on album and year
set dashIdx to offset of "-" in albm
set yr to items 1 thru (dashIdx - 1) of albm as text
set albm to items (dashIdx + 1) thru -1 of albm as text
-- work on title
set dashIdx to offset of "-" in title
set trackNo to items 1 thru (dashIdx - 1) of title as text
set title to items (dashIdx + 1) thru -4 of title as text
set year of aTrack to (yr as integer)
set artist of aTrack to artst
set name of aTrack to title
set track number of aTrack to (trackNo as integer)
set album of aTrack to albm
end repeat
end if
end tell
* This source code was highlighted with Source Code Highlighter.
Обратите внимание на приведение типов (as text, as integer) во время установки или получения свойств объекта.
После этого достаточно выделить трек в iTunes и запустить скрипт
Вуаля, как говорится.
Осталось только сохранить скрипт в ~/Library/iTunes/Scripts
и он будет доступен под тем именем, под которым вы его сохранили, в меню iTunes
Happy Scripting!