У мене багато треків в iTunes, де файли мають назву "music-NNNN.mp3", причому NNNN є роком запису треку. Як я можу використовувати Applescript для автоматичного встановлення тегів року для цих файлів на основі NNNN?
У мене багато треків в iTunes, де файли мають назву "music-NNNN.mp3", причому NNNN є роком запису треку. Як я можу використовувати Applescript для автоматичного встановлення тегів року для цих файлів на основі NNNN?
Відповіді:
Я створив для вас AppleScript, який буде розбирати назви файлів будь-яких вибраних треків iTunes і відповідно встановлювати тег року.
Вставте це в редактор AppleScript і запустіть його (або збережіть його як додаток):
tell application "iTunes"
repeat with theTrack in selection
set theFile to location of theTrack
tell application "Finder" to set theName to name of theFile
set theYear to my parse_year(theName)
if theYear is not "" then
set the year of theTrack to theYear
end if
end repeat
end tell
on parse_year(filenameText)
-- returns the year if it exists in filename with form song-1965.mp3, else returns empty string
try
set yearResult to do shell script "echo " & quoted form of filenameText & " | perl -ne 'print $1 if s/(?<=-)(\\d+)(?=(\\..*|$))/$1/'"
on error
set yearResult to ""
end try
return yearResult
end parse_year
Кілька приміток:
Він відповідає лише назви файлів з цією метою з -
наступним номером (і, можливо, розширенням).
Він буде відповідати наступним:
songname-1946.mp3
anothersong-1977
songname-1965.someextention
Але не ці:
songnoyear.mp3
song123
song-1232-someothertext
set text item delimiters to {"-", "."}
tell application "iTunes"
repeat with t in selection
set year of t to text item -2 of (location of t as text)
end repeat
end tell
На відміну від багатьох інших утиліт командного рядка для зміни тегів ID3 , mid3v2 підтримує і Unicode, і ID3v2.
sudo easy_install pip
sudo pip install mutagen
for f in */*.mp3; do y=${f%##*/}; y=${y%.mp3}; /usr/local/bin/mid3v2 -y ${y#*-} "$f"; done
Ви також можете використовувати TriTag для зміни тегів на основі імен файлів або навпаки.