MacCentre.ru Форум Форум по компьютерам Mac, Mac OS X и продукции Apple
|
Автор |
Сообщение |
Art-Roman
Reputation: +21
Зарегистрирован: 08.11.2006 Сообщения: 3071 Откуда: Казань
|
Добавлено: Thu Nov 13, 2008 02:11
|
|
|
Не лень было? Обалдеть |
|
Вернуться к началу |
|
Art-Roman
Reputation: +21
Зарегистрирован: 08.11.2006 Сообщения: 3071 Откуда: Казань
|
Добавлено: Tue Nov 25, 2008 22:49
|
|
|
Привык я музыку по дороге на смарте слушать, а дома в основном в рандоме играет.
Не мог бы ты написать скрипт, который из библиотеки айтюнса (два уровня вложенности максимум, хотя если рекурсивно, то можно до бесконечности) копирует случайную песню, пока на флешке (папка в смонтированном томе, имеющем определённое название) есть место.
Собстно, тут много интересных для меня моментов. Начиная с рекурсивного сканирования папки (<3000 песен, думаю, можно и в памяти держать, но можно ли иначе?), заканчивая копированием случайного трека. И как будет обрабатываться ошибка о нехватке места?
Рандом для массива — в виде "some item of … ", файлы хранятся как линки. К остальному не знаю как и подойти
Научиться бы самому, ужасно полезно для автоматизации!
Заранее спасибо!!! |
|
Вернуться к началу |
|
Aha_pupok
Reputation: 0
Зарегистрирован: 14.07.2003 Сообщения: 139 Откуда: [мск]
|
Добавлено: Thu Nov 27, 2008 12:56
|
|
|
чо то не фига не понятно в этой рече =) То ли я болею, то ли у вас грибы отменные! буга!
В айтюнсе нет вложенности, только плейлисты.
потом в айтюнсе есть смарт-плейлисты или плейлисты типа ди-джей, которые выберут вам случайно треки из библиотеки айтюнса в нужном порядке ))) _________________ http://www.applescript.ru |
|
Вернуться к началу |
|
zztatarin
Reputation: +34
Зарегистрирован: 04.08.2006 Сообщения: 4260
|
Добавлено: Fri Nov 28, 2008 20:10 Копирование случайного MP3, пока на флешке есть место. |
|
|
На, разбирайся.
Код: | property tTargetPath : "NO_NAME" as alias
property tExists : true
tell application "iTunes"
set tNumberOfTracks to number of file tracks of library playlist 1 of source 1
set tDJ to random number from 1 to tNumberOfTracks
set tName to name of file track tDJ of user playlist 1 of source 1
tell application "Finder" to set tFree to free space of tTargetPath
repeat while ((size of file track tDJ of user playlist 1 of source 1) < tFree)
if (kind of file track tDJ of user playlist 1 of source 1 is "MPEG audio file") then
set tMP3 to location of file track tDJ of user playlist 1 of source 1
tell application "Finder"
if not (exists item ((tTargetPath as string) & tName & ".mp3")) then
--display dialog ((tTargetPath as string) & tName) as string
move tMP3 as alias to tTargetPath
end if
end tell
end if
set tDJ to random number from 1 to tNumberOfTracks
set tName to name of file track tDJ of user playlist 1 of source 1
tell application "Finder" to set tFree to free space of tTargetPath
end repeat
end tell |
Art-Roman писал(а): | Научиться бы самому, ужасно полезно для автоматизации! |
Рекомендую покурить ScriptDebuger _________________ Дайте мне единицу измерения и я смогу измерить ничтожность и бесконечность. А компьютер мне в х... не упёрся. Мне штангенциркуля хватит.
И ещё. Учу пользоваться документацией
Искренне Ваш ﺗﺘﺮ |
|
Вернуться к началу |
|
moroderr
Reputation: 0
Зарегистрирован: 15.01.2009 Сообщения: 8
|
Добавлено: Thu Jan 15, 2009 17:50
|
|
|
Всем привет.
Жаль, что так мало таких же ресурсов по AplleScript в рунете...
Люди добрые помогите со скриптом на AppleScript:
2 момента:
1. Нужно реагировать на подключение Flash диска к компьютеру.
Подскажите как это сделать? может какое то событие срабатывает??
2. В скрипте нужно получить ID производителя и Точку подключения... диска. Хотел использовать для этого "System Profiler" не выходит. Как это сделать? или может есть другие средства??
Помогите кто в этом разберется... Буду очень благодарен |
|
Вернуться к началу |
|
Aha_pupok
Reputation: 0
Зарегистрирован: 14.07.2003 Сообщения: 139 Откуда: [мск]
|
|
Вернуться к началу |
|
moroderr
Reputation: 0
Зарегистрирован: 15.01.2009 Сообщения: 8
|
Добавлено: Tue Jan 20, 2009 10:06
|
|
|
Спасибо за помощь Но пока проблема не решена. Уточню:
Идея такая:
Допустим в компе имеется две флэшки. С помощью Vendor ID и Product ID USB устройства я узнаю с какая из этих флэшек мне нужна, получаю Mount Point и работаю...
Проблема:
do shell script "diskutil information /dev/disk0" - Не имеет информации VID и PID - что вобщем то логично
do shell script "ioreg -Src IOUSBDevice" - Имеет VID и PID, но не имеет "Mount point" - жаль...
do shell script "system_profiler SPUSBDataType" - Имеет на выходе все, что нужно. Осталась только выдернуть информацию.
Тут возникло 2 вопроса: Как запросить у profiler информацию только по "Mass Storage Device" ? а не для всех USB девайсов.
И как осуществить быстрый алгоритм разбора информации, а то больно тормозит перебор...
Буду искренне рад любой помощи. Всего пока 1 неделю работаю с AppleScript… |
|
Вернуться к началу |
|
Sax-mmS
Reputation: 0
Зарегистрирован: 17.01.2009 Сообщения: 1
|
Добавлено: Tue Jan 20, 2009 14:51
|
|
|
А определять нужную флешку по имени тома вы не пробовали? или это какие-то особые флешки. Зачем нужен вендор и id? |
|
Вернуться к началу |
|
Aha_pupok
Reputation: 0
Зарегистрирован: 14.07.2003 Сообщения: 139 Откуда: [мск]
|
Добавлено: Tue Jan 20, 2009 15:03
|
|
|
Забил на поиски ))
Только не говорите мне, что AppleScript легко читаемый язык )))
достаточно быстро
Код: | set USBTextData to do shell script "system_profiler SPUSBDataType"
set USBMedia to {}
set l_paras to paragraphs of USBTextData
set {s_isMedia, s_PID, s_VID, s_BSD} to {"", "", "", ""}
repeat with x from 1 to count of l_paras
set currPara to item x of l_paras as string
ignoring white space
if currPara starts with "Removable Media:" then set s_isMedia to currPara
if currPara starts with "Product ID:" then set s_PID to currPara
if currPara starts with "Vendor ID:" then set s_VID to currPara
if currPara starts with "BSD Name:" then set s_BSD to currPara
end ignoring
if currPara is "" and s_isMedia is not "" then --надеюсь, порядок строк не меняется
set AppleScript's text item delimiters to {": "} --offset работает дольше
set {l_PID, l_VID, l_BSD} to {rest of text items of s_PID, rest of text items of s_VID, rest of text items of s_BSD}
set AppleScript's text item delimiters to {""}
set {s_PID, s_VID, s_BSD} to {l_PID as string, l_VID as string, l_BSD as string}
set end of USBMedia to {PID:s_PID, VID:s_VID, BSD:s_BSD}
set {s_isMedia, s_PID, s_VID, s_BSD} to {"", "", "", ""} --сброс
end if
if currPara is "" then
set s_isMedia to "" --сброс
end if
end repeat
return USBMedia |
_________________ http://www.applescript.ru |
|
Вернуться к началу |
|
moroderr
Reputation: 0
Зарегистрирован: 15.01.2009 Сообщения: 8
|
Добавлено: Tue Jan 20, 2009 17:03
|
|
|
Sax-mmS писал(а): | А определять нужную флешку по имени тома вы не пробовали? или это какие-то особые флешки. Зачем нужен вендор и id? |
Задача стоит в том, что нужно работать с флэшками определенных моделей и производителей. Нужен VID и PID как не крути... |
|
Вернуться к началу |
|
moroderr
Reputation: 0
Зарегистрирован: 15.01.2009 Сообщения: 8
|
Добавлено: Tue Jan 20, 2009 17:22
|
|
|
Aha_pupok писал(а): | Забил на поиски ))
Только не говорите мне, что AppleScript легко читаемый язык )))
достаточно быстро
|
Вот это супер! вот спасибо... !!
Всегда уважал умных людей Я сам написал нечто похожее, но этот код по сравнению с моим более правильный и верный.
Я не стал пользоваться функцией:
[code] on idle
display dialog "Бугога!"
return 5 -- время в секундах, периодичность запуска
end idle [code]
Для отслеживания события подключения флэшки
Это вроде как то не корректно...
Создал Device Notification на С что реагирует на подключение USB устройства.
Теперь осталось придумать как это связать со скриптом, т.е. как вызвать в опработчике события на Си Apple Script...
Пока для меня это загадка ... как и то, как шарить данные между двумя скриптами в разных файлах?
Если сам найду, то обязательно тут напишу
Если задал глупый вопрос, то извините, я еще мало что понимаю в разрабоке под MacOs... |
|
Вернуться к началу |
|
Aha_pupok
Reputation: 0
Зарегистрирован: 14.07.2003 Сообщения: 139 Откуда: [мск]
|
Добавлено: Tue Jan 20, 2009 17:58
|
|
|
ну судя по тому что баш команды приводил, можешь их вызывать.
соответственно "usage: osascript [-l language] [-e script] [-s {ehso}] [programfile] [argument ...]"
А вот если бы из твоего "Device Notification" сделать преференс панель типа "CD и DVD" с возможностью выбирать там скрипт - это был бы ЖИР _________________ http://www.applescript.ru |
|
Вернуться к началу |
|
Daniel
Reputation: +348
Зарегистрирован: 14.07.2001 Сообщения: 9072 Откуда: Украина
|
|
Вернуться к началу |
|
Aha_pupok
Reputation: 0
Зарегистрирован: 14.07.2003 Сообщения: 139 Откуда: [мск]
|
|
Вернуться к началу |
|
moroderr
Reputation: 0
Зарегистрирован: 15.01.2009 Сообщения: 8
|
Добавлено: Fri Jan 23, 2009 08:35
|
|
|
Aha_pupok писал(а): | ну судя по тому что баш команды приводил, можешь их вызывать.
соответственно "usage: osascript [-l language] [-e script] [-s {ehso}] [programfile] [argument ...]"
А вот если бы из твоего "Device Notification" сделать преференс панель типа "CD и DVD" с возможностью выбирать там скрипт - это был бы ЖИР |
Всем привет!
Спасибо всем за ответы, особенно тебе Aha_pupok С написанием нижнего уровня для моего проекта я сейчас встрял.... Бросил, пишу верхний уровень…
Подскажите плиз, как добавить свою иконку с менюшкой в System Tray (или может в MacOS это как то по-другому называется ) ? Не могу найти нужную информацию по этой задаче… |
|
Вернуться к началу |
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
Powered by phpBB © 2001, 2005 phpBB Group
|