lerm_ru (lerm_ru) wrote,
lerm_ru
lerm_ru

Category:

Перенос библиотеки iTunes под Mac OS X

После установки нового диска в Mac Mini появилась возможность перенести библиотеку с музыкой из сетевого хранилища на локальный диск. Задача эта содержит один нетривиальный момент - помимо собственно переноса файлов, требуется обновить информацию о них в базе iTunes. Если вы используете консолидированную в iTunes библиотеку (как это рекомендует Apple), то никакой проблемы нет - просто меняете расположение библиотеки и файлы переедут куда надо. Однако, если вы сами занимаетесь управлением файлами, то такой способ не сработает. Очевидное решение - удалить всё текущее содержимое библиотеки и добавить все файлы по новой. К сожалению, при этом потеряется вся дополнительная информация, которая хранилась только в базе iTunes, а кроме того окажутся разрушенными все списки воспроизведения и придется заново настраивать синхронизацию с устройствами - этот вариант для меня был неприемлем. Соответственно, для корректного перемещения библиотеки требуется обновить пути ко всем файлам - заменить в них старый каталог на новый. Одно из возможных решений - экспортировать всю библиотеку в текстовый XML-файл, произвести в нём требуемую замену, а затем закачать данные обратно. Если же вы работает под Mac OS, то существует более простое решение - использовать маленький сценарий AppleScript для выполнения этой задачи. Все грамотные приложения под Mac OS имеют публичный API, с которым можно взаимодействовать в том числе и с помощью таких скриптов. Под катом - текст сценария, который я использовал для обновления своей библиотеки.


set oldRoot to "/Volumes/Storage/Media/Музыка/Mp3/"
set newRoot to "/Users/lerm/Music/Library/"
set oldLength to (length of oldRoot) + 1
 
tell application "iTunes"
	set libPlaylist to library playlist 1
	set libLength to count of file tracks of libPlaylist
	repeat with i from 1 to libLength
		log i
		set curTrack to track i of libPlaylist
		if get class of curTrack is file track then
			set curLocation to location of curTrack
			set curPath to POSIX path of curLocation
			if curPath starts with oldRoot then
				set newPath to newRoot & (text oldLength thru length of curPath)
				set newFile to newPath as POSIX file
				set location of curTrack to newFile
			end if
		end if
	end repeat
end tell
log "Done."

Tags: apple, it, itunes, macos, бесполезные записи, компьютер
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments