MacCentre.ru Форум
Форум по компьютерам Mac, Mac OS X и продукции Apple
 
ПравилаПравила   FAQFAQ   ПоискПоиск  РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить ЛСВойти и проверить ЛС   ВходВход 
Вопросы и ответы по AppleScript
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Начать новую тему   Ответить на тему Список форумов MacCentre.ru Форум » Программирование и Beta-тестирование   
Автор Сообщение
Art-Roman



Репутация: +21    

Зарегистрирован: 08.11.2006
Сообщения: 3071
Откуда: Казань

СообщениеДобавлено: Чт Ноя 13, 2008 02:11
Ответить с цитатой

Не лень было? Обалдеть Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Art-Roman



Репутация: +21    

Зарегистрирован: 08.11.2006
Сообщения: 3071
Откуда: Казань

СообщениеДобавлено: Вт Ноя 25, 2008 22:49
Ответить с цитатой

Привык я музыку по дороге на смарте слушать, а дома в основном в рандоме играет.
Не мог бы ты написать скрипт, который из библиотеки айтюнса (два уровня вложенности максимум, хотя если рекурсивно, то можно до бесконечности) копирует случайную песню, пока на флешке (папка в смонтированном томе, имеющем определённое название) есть место.
Собстно, тут много интересных для меня моментов. Начиная с рекурсивного сканирования папки (<3000 песен, думаю, можно и в памяти держать, но можно ли иначе?), заканчивая копированием случайного трека. И как будет обрабатываться ошибка о нехватке места?
Рандом для массива — в виде "some item of … ", файлы хранятся как линки. К остальному не знаю как и подойти Smile
Научиться бы самому, ужасно полезно для автоматизации!

Заранее спасибо!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Aha_pupok



Репутация: 0    

Зарегистрирован: 14.07.2003
Сообщения: 139
Откуда: [мск]

СообщениеДобавлено: Чт Ноя 27, 2008 12:56
Ответить с цитатой

чо то не фига не понятно в этой рече =) То ли я болею, то ли у вас грибы отменные! буга!

В айтюнсе нет вложенности, только плейлисты.

потом в айтюнсе есть смарт-плейлисты или плейлисты типа ди-джей, которые выберут вам случайно треки из библиотеки айтюнса в нужном порядке )))

_________________
http://www.applescript.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
zztatarin



Репутация: +34    

Зарегистрирован: 04.08.2006
Сообщения: 4260

СообщениеДобавлено: Пт Ноя 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

_________________
Дайте мне единицу измерения и я смогу измерить ничтожность и бесконечность. А компьютер мне в х... не упёрся. Мне штангенциркуля хватит.
И ещё. Учу пользоваться документацией
Искренне Ваш ﺗﺘﺮ
Вернуться к началу
Посмотреть профиль Отправить личное сообщение ICQ Number
moroderr



Репутация: 0    

Зарегистрирован: 15.01.2009
Сообщения: 8

СообщениеДобавлено: Чт Янв 15, 2009 17:50
Ответить с цитатой

Всем привет.
Жаль, что так мало таких же ресурсов по AplleScript в рунете...

Люди добрые помогите со скриптом на AppleScript:

2 момента:

1. Нужно реагировать на подключение Flash диска к компьютеру.
Подскажите как это сделать? может какое то событие срабатывает??


2. В скрипте нужно получить ID производителя и Точку подключения... диска. Хотел использовать для этого "System Profiler" не выходит. Как это сделать? или может есть другие средства??


Помогите кто в этом разберется... Буду очень благодарен
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Aha_pupok



Репутация: 0    

Зарегистрирован: 14.07.2003
Сообщения: 139
Откуда: [мск]

СообщениеДобавлено: Пн Янв 19, 2009 16:55
Ответить с цитатой

ну чуть выше http://maccentre.ru/board/viewtopic.php?p=481491#481491 и далее чуть ниже...

Делается обработчик
Код:
on idle
display dialog "Бугога!"
return 5 -- время в секундах, периодичность запуска
end idle


Потом созданный скрипт сохраняется как приложение с опцией "Оставлять открытым" и запускается.

_________________
http://www.applescript.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
moroderr



Репутация: 0    

Зарегистрирован: 15.01.2009
Сообщения: 8

СообщениеДобавлено: Вт Янв 20, 2009 10:06
Ответить с цитатой

Спасибо за помощь Smile Но пока проблема не решена. Уточню:

Идея такая:

Допустим в компе имеется две флэшки. С помощью 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



Репутация: 0    

Зарегистрирован: 17.01.2009
Сообщения: 1

СообщениеДобавлено: Вт Янв 20, 2009 14:51
Ответить с цитатой

А определять нужную флешку по имени тома вы не пробовали? или это какие-то особые флешки. Зачем нужен вендор и id?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Aha_pupok



Репутация: 0    

Зарегистрирован: 14.07.2003
Сообщения: 139
Откуда: [мск]

СообщениеДобавлено: Вт Янв 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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
moroderr



Репутация: 0    

Зарегистрирован: 15.01.2009
Сообщения: 8

СообщениеДобавлено: Вт Янв 20, 2009 17:03
Ответить с цитатой

Sax-mmS писал(а):
А определять нужную флешку по имени тома вы не пробовали? или это какие-то особые флешки. Зачем нужен вендор и id?

Задача стоит в том, что нужно работать с флэшками определенных моделей и производителей. Нужен VID и PID как не крути...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
moroderr



Репутация: 0    

Зарегистрирован: 15.01.2009
Сообщения: 8

СообщениеДобавлено: Вт Янв 20, 2009 17:22
Ответить с цитатой

Aha_pupok писал(а):
Забил на поиски ))
Только не говорите мне, что AppleScript легко читаемый язык )))
достаточно быстро


Вот это супер! вот спасибо... !!

Всегда уважал умных людей Smile Я сам написал нечто похожее, но этот код по сравнению с моим более правильный и верный.


Я не стал пользоваться функцией:

[code] on idle
display dialog "Бугога!"
return 5 -- время в секундах, периодичность запуска
end idle [code]

Для отслеживания события подключения флэшки
Это вроде как то не корректно...

Создал Device Notification на С что реагирует на подключение USB устройства.

Теперь осталось придумать как это связать со скриптом, т.е. как вызвать в опработчике события на Си Apple Script...

Пока для меня это загадка ... как и то, как шарить данные между двумя скриптами в разных файлах?

Если сам найду, то обязательно тут напишу

Если задал глупый вопрос, то извините, я еще мало что понимаю в разрабоке под MacOs...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Aha_pupok



Репутация: 0    

Зарегистрирован: 14.07.2003
Сообщения: 139
Откуда: [мск]

СообщениеДобавлено: Вт Янв 20, 2009 17:58
Ответить с цитатой

ну судя по тому что баш команды приводил, можешь их вызывать.
соответственно "usage: osascript [-l language] [-e script] [-s {ehso}] [programfile] [argument ...]"

А вот если бы из твоего "Device Notification" сделать преференс панель типа "CD и DVD" с возможностью выбирать там скрипт - это был бы ЖИР

_________________
http://www.applescript.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Daniel



Репутация: +348    

Зарегистрирован: 14.07.2001
Сообщения: 9072
Откуда: Украина

СообщениеДобавлено: Вт Янв 20, 2009 20:00
Ответить с цитатой

Для ослеживания подключения дисков есть такая штука: http://www.azarhi.com/Projects/DSW/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Aha_pupok



Репутация: 0    

Зарегистрирован: 14.07.2003
Сообщения: 139
Откуда: [мск]

СообщениеДобавлено: Ср Янв 21, 2009 15:41
Ответить с цитатой

леопардит
_________________
http://www.applescript.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
moroderr



Репутация: 0    

Зарегистрирован: 15.01.2009
Сообщения: 8

СообщениеДобавлено: Пт Янв 23, 2009 08:35
Ответить с цитатой

Aha_pupok писал(а):
ну судя по тому что баш команды приводил, можешь их вызывать.
соответственно "usage: osascript [-l language] [-e script] [-s {ehso}] [programfile] [argument ...]"

А вот если бы из твоего "Device Notification" сделать преференс панель типа "CD и DVD" с возможностью выбирать там скрипт - это был бы ЖИР



Всем привет!
Спасибо всем за ответы, особенно тебе Aha_pupok Smile С написанием нижнего уровня для моего проекта я сейчас встрял.... Бросил, пишу верхний уровень…

Подскажите плиз, как добавить свою иконку с менюшкой в System Tray (или может в MacOS это как то по-другому называется Smile ) ? Не могу найти нужную информацию по этой задаче…
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему Список форумов MacCentre.ru Форум » Программирование и Beta-тестирование Страница 4 из 8
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


Связь с администраторами

Powered by phpBB © 2001, 2005 phpBB Group