Работа с iTunes
Читатель mixazen интересуется, как вывести на рабочий стол название проигрываемой песни. Эта задача состоит фактически из двух подзадач — надо как-то получить от iTunes название композиции, а затем с помощью GeekTool отобразить его на рабочем столе.
На форумах Macrumors я нашел следующий скрипт:
property go1 : false
-- check to see if iTunes is running
tell application "System Events"
set the process_flag to (exists process "iTunes")
end tell
if the process_flag then
-- check to see if iTunes is playing
tell application "iTunes"
if player state contains playing then set go1 to true
end tell
if go1 then
-- do what you need to do
tell application "iTunes"
set foo1 to name of current track
set foo2 to artist of current track
set foo3 to album of current track
set foo4 to foo1 & " / " & foo2 & " / " & foo3
end tell
end if
end if
Сохраните его, дав произвольное имя и указав расширение scpt (файл Applescript). Затем запустите GeekTool, создайте новый Гиклет (как это сделать, говорилось в предыдущей статье). В разделе Command укажите следующую команду:
osascript /путь/до/скрипта/itunes.scpt
osascript — это команда выполнения скрипта AppleScript. Остается выбрать промежуток обновления (раз в 5 секунд будет вполне достаточно) и поэкспериментировать с оформлением. Скрипт нормально работает с последней версией iTunes и корректно отображает названия русскоязычных песен. Можно пойти еще дальше и, например, вывести на рабочий стол прогресс-бар проигрываемой песни. Но это перебор, на мой взгляд.
Выводим обложку альбома проигрываемой песни на рабочий стол
GeekTool — удивительно мощная штука. Возможности, которые предоставляет программа, ограничены разве что фантазией пользователей. Изучая примеры использования, натолкнулся на статью Доктора Дрэнга (Dr. Drang), который с помощью GeekTool выводит на рабочий стол обложку альбома. После получаса разбирательств мой рабочий стол выглядит так (напомню, что у меня установлены GeekTool 3.0 RC5 и iTunes 9.0.2):
А теперь о том, как вывести на рабочий стол обложку композиции, которая проигрывается в настоящий момент в iTunes. Для этого нам понадобится написать AppleScript и сделать пару гиклетов.
Код AppleScript выглядит следующим образом:
-- Paths and stuff
set ArtworkFromiTunes to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:From iTunes:albumArt.pict" as alias
set iTunesArtwork to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:From iTunes:albumArt.pict"
set DefaultArtwork to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:Default:albumArt.pict"
set displayArtwork to ((path to home folder) as text) & ¬
"Pictures:iTunes Artwork:albumArt.pict"
-- Unix versions of the above path strings
set unixITunesArtwork to the quoted form of POSIX path of iTunesArtwork
set unixDefaultArtwork to the quoted form of POSIX path of DefaultArtwork
set unixDisplayArtwork to the quoted form of POSIX path of displayArtwork
set whichArt to "blank"
tell application "System Events"
if exists process "iTunes" then -- iTunes is running
tell application "iTunes"
if player state is playing then -- iTunes is playing
set aLibrary to name of current playlist -- Name of Current Playlist
set aTrack to current track
set aTrackArtwork to null
if (count of artwork of aTrack) ≥ 1 then -- there's an album cover
"Running and playing and art"
set aTrackArtwork to data of artwork 1 of aTrack
set fileRef to ¬
(open for access ArtworkFromiTunes with write permission)
try
set eof fileRef to 512
write aTrackArtwork to fileRef starting at 513
close access fileRef
on error errorMsg
try
close access fileRef
end try
error errorMsg
end try
tell application "Finder" to ¬
set creator type of ArtworkFromiTunes to "????"
set whichArt to "iTunes"
end if
end if
end tell
end if
end tell
if whichArt is "iTunes" then
do shell script "ditto -rsrc " & unixITunesArtwork & space & unixDisplayArtwork
else
do shell script "ditto -rsrc " & unixDefaultArtwork & space & unixDisplayArtwork
end if
Сохраните файл с именем iTunesArtwork.scpt. Вы также можете скачать его с сайта «Макрадара». Файл лучше поместить в папку ~/Library/Scripts, хотя это не принципиально.
Теперь создаем первый гиклет. Щелкаете по значку Shell, перетаскиваете его на рабочий стол, а в качестве команды, указываете эту:
osascript ~/Library/Scripts/iTunesArtwork.scpt
Гиклет вызывает AppleScript и больше ничего не делает. Поэтому тратить время на форматирование не надо. Укажите лишь интервал вызова — 5–10 секунд вполне достаточно.
Затем в папке ~/Pictures
создайте подпапку iTunes Artwork со следующей структурой:
Эту структуру надо воспроизвести в точности. Создайте папки From iTunes и Default. В них поместите файл albumArt.pict, созданный в любом графическом редакторе. Файл albumArt.pict используется в тех случаях, когда iTunes ничего не играет или у альбома отсутствует обложка. Поэтому albumArt.pict делают размером 1х1 пикселей и закрашивают цветом, совпадающим с цветом обоев рабочего стола (чтобы не оздавалось впечатления «битого пикселя»).
Теперь надо создать еще один гиклет. Щелкните по значку Picture, перетащите его на рабочий стол. В поле file укажите:
file:///Users/путь_к_файлу/Pictures/iTunes%20Artwork/albumArt.pict
Укажите интервал обновления (5-10 сек) и размер картинки (я выбрал 200х200 точек).
Если захотите выводить на рабочий стол обложку альбомов, имейте в виду: у GeekTool сразу возрастает аппетит к памяти. Вместо привычных 30-40 Мб ОЗУ, он начинает требовать 300 Мб. Для современных компьютеров, оснащенных 4 и более гигабайтами оперативки это практически на ощутимо, для старых макбуков с лимитов в 2 Гб — уже повод задуматься, так ли уж необходимы эти «свистелки». На всякий случай в угол десктопа можно отдельным гиклетом выводить информацию об объеме ОЗУ, используемом GeekTool. Команда такая:
ps axo "rss,ucomm" | awk '/Geek/ {printf "%.2f", $1/1024}'
***
В этих двух примерах мы выводили на рабочий стол как текстовые данные, так и картинки. Еще раз подверкну: GeekTool — фантастическое приложение. Я продолжаю экспериментировать с ним ежедневно. Уже пробовал выводить на рабочий стол статистику Li.ru одного из сайтов, твиты и погоду. :-)
Если у вас есть какие-то вопросы или уточнения, буду рад увидеть их в комментариях. Делитесь результатами своих экспериментов, интересно узнать о вашем опыте.
Обновлено. Полезная ссылка от Сергея Тугаринова — подборка скриптов для GeekTool
***
Полезные ссылки:
Лучшие предложения
12 зимних курток, которые отдают со скидкой
Надо брать: мужские ботинки ECCO со скидкой 45%
Находки AliExpress: самые интересные и полезные товары
10 полезных товаров дешевле 500 рублей
12 пар утеплённых кроссовок, в которых будет комфортно зимой
Надо брать: набор инструментов Deli всего за 1 552 рубля
Цена дня: термос Feijian за 1 656 рублей
Отборные скидки: выгодные предложения от AliExpress, Hoff, ZRN Man и других магазинов
5 фактов о ноутбуках, которые помогут выбрать для работы идеальную модель
Рак: почему возникает и как лечится. Гид, который будет полезен всем
Как рассчитать бюджет на ремонт, чтобы обойтись без лишних затрат
Как покорить гору и вернуться на землю: всё о подготовке к первому восхождению