Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Apple: Mac, OS X, iOS (https://forum.antichat.xyz/forumdisplay.php?f=177)
-   -   Делаем пульт для мака. Часть вторая (https://forum.antichat.xyz/showthread.php?t=1755637)

Markus Lang 11.02.2009 04:09

В




Для просмотра скрытого содержимого необходимо иметь 1 сообщение, у вас 0 сообщений.


мы научились управлять QuickTime Player и iTunes. Это хорошо, но при просмотре любимых сериалов все равно приходится вставать с дивана, чтобы включить следующую серию. Будем это исправлять.

Для этой задачи сделаем удаленное управление Finder'ом. Создадим подпапку finder в папке с нашим проектом, в моем случае доступ к списку файлов будет по адресу localhost/remote/finder/. Созданим файл index.php со следующим содержанием.

Цитата:






iRemote


' . $root . '';
?>

./';

$folders = array_reverse(explode('/', trim($root, '/')));
foreach ($folders as $folder) {
$cmd = $cmd . ' of folder "' . $folder . '"';
}

$cmd = $cmd . ' of startup disk of application "Finder"';

$files = explode(',', exec('osascript -e \'tell application "Finder" to get folders ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}

$files = explode(',', exec('osascript -e \'tell application "Finder" to get files ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}
?>



И так поясню код.

Для начала определяем каталог, для которого будем выводить список файлов и покажем его в заголовке. По умолчанию я определил свою пользовательскую директорию "/Users/Ex/".

Цитата:


if (isset($_GET['folder']))
{
$root = $_GET['folder'];
}
else
{
$root = '/Users/Ex/';
}

echo '' . $root . '';


Первой ссылкой выведем путь к папке верхнего уровня.

Цитата:


echo './';


Дальше идут несколько магических строчек.

Цитата:


$folders = array_reverse(explode('/', trim($root, '/')));
foreach ($folders as $folder) {
$cmd = $cmd . ' of folder "' . $folder . '"';
}

$cmd = $cmd . ' of startup disk of application "Finder"';


Дело в том, что в AppleScript Finder не понимаем в качестве параметров путь вида "/Users/Ex/". Для передачи в скрипт путь нужно привести к такому хитрому виду «folder Ex of folder Users». В принципе этот код это и делает, переводит путь из одного вида в другой.

Далее выводим список папок.

Цитата:


$files = explode(',', exec('osascript -e \'tell application "Finder" to get folders ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}


Выводим список файлов.

Цитата:


$files = explode(',', exec('osascript -e \'tell application "Finder" to get files ' . $cmd . '\''));
foreach ($files as $file) {
echo '' . trim($file) . '';
}


Стоит заметить что при выборе папки мы будем вызывать этот же скрипт, но с другим параметром корневой папки, а при выборе файла передадим управление нашему скрипту из первой части commands.php. В качестве параметров передадим имя файла, который нужно открыть и путь к нему. И так, добавим обработку открытия файла в commands.php.

Цитата:


if ($_GET['app'] == 'Finder')
{
if ($_GET['cmd'] == 'Open')
{
$folders = array_reverse(explode('/', trim($_GET['folder'], '/')));

foreach ($folders as $folder) {
$cmd = $cmd . ' of folder "' . $folder . '"';
}

$cmd = $cmd . ' of startup disk of application "Finder"';
$cmd = 'tell application "Finder" to open file "' . $_GET['file'] . '" ' . $cmd;
}
}
>


Тут все просто. Приводим путь в нужному виду и говорим Finder'у открыть файл. Для удобства на главной странице сделаем ссылку на обзор файлов.

Цитата:


Finder

Browse



Вот в принципе и все. У вас должно получиться примерно следующее.

http://www.picamatic.com/show/2008/1...92_320x480.PNG

http://www.picamatic.com/show/2008/1...93_320x480.PNG

Еще можно для удобства запоминать последний посещенный каталог в куках, но думаю с этим вы справитесь сами.
Теперь все. Потравит полчаса времени сэкономим кучу калорий

CjGuSSa 13.02.2009 14:12

Есть программа называется Remote Buddy, она позволяет делать тоже самое, только помимо этого управлять маком с пульта Д.У.
Если кому надо - выложу.

http://www.iospirit.com/index.php?mode=view&obj_type=infogroup&obj_id=24&s id=8949194G7c97052442dcb01d

vitaliyphp 26.02.2009 16:17

Шикарно =)

GEEPERS 30.03.2009 10:22

ни в первой ни во второй части нет ни слова о том, откуда взялся "osascript".
Хотелось бы поподробнее.


Время: 21:46