Служба Automator, загружающая изображения на Яндекс.Фотки

от автора

К созданию этой службы меня подтолкнул пост Скрипт Automator, загружающий изображения на Habrastorage, а точнее, вот этот комментарий.

Итак, в чем же сложность написания подобной службы? В том, что для загрузки изображений требуется OAuth токен, т.е. необходимо как-то его получить (и сохранить для последующего использования). Конечно же, можно создать собственное OAuth приложение и получить токен вручную. Но это не наш метод.

Вспомним, как же происходит OAuth авторизация приложения на Яндекс.Фотках:

3. OAuth-сервер осуществляет редирект на указанный разработчиком URI, добавив к нему в качестве параметра токен или код подтверждения, дающий право на последующее получение токена.

Как раз то, что нам надо. Остался один вопрос: как же нам получить этот токен? А очень просто. Нам необходимо указать в настройках приложения такой Callback URL, который будет приводить к открытию нашего приложения, а уже оно и будет получать и сохранять токен.

Для этого мы воспользуемся возможностью OS X приложений объявлять себя обработчиками URL схем. Например, приложение может указать, что оно является обработчиком URL-ов вида ypu-oauth://..., и при любой попытке «открыть» такой URL — будет запущено приложение, которому будет передан исходный URL для обработки.

Итак, поехали. Для начала создадим наше приложение. Нет-нет, не спешите запускать Xcode, он нам совершенно не понадобится. Мы напишем приложение на чистейшем AppleScript.

Открываем Редактор AppleScript, создаем новый файл и сохраняем его как Программу.

Код нашего приложения довольно простой:

on open location theUrl   # переменная theUrl — строка с исходным "перехваченным" URL   # Пример: ypu-oauth://do#access_token=...&token_type=bearer&state=&expires_in=31536000   # получаем access_token из theUrl   # сохраняем access_token для будущего использования   # получаем и сохраняем информацию о пользователе Яндекс.Фоток   # создаем альбом для загрузки изображений и сохраняем его идентификатор end open location 

Теперь нам необходимо подправить Info.plist нашего приложения, добавив информацию о типе обрабатываемых им URL-ов.

Кликаем правой кнопкой на сохраненной приложении, выбираем Показать содержимое пакета и переходим в папку Contents. Редактируем файл Info.plist вашим любимым текстовым редактором и добавляем следующие строки:

<key>CFBundleURLTypes</key> <array> 	<dict> 		<key>CFBundleURLName</key> 		<string>YPU OAuth Authorizer</string> 		<key>CFBundleURLSchemes</key> 		<array> 			<string>ypu-oauth</string> 		</array> 	</dict> </array> 

Итоговый вид содержимого должен стать примерно таким:

Не забудьте сохранить измененный файл!

Финальный шаг. Изменяем настройки нашего OAuth приложения на Яндекс.Фотках:

Реализация службы тоже довольно проста и подробно описана в указанной выше блогозаписи. Добавлю лишь свои пять копеек. Служба уже получает список выбранных файлов, поэтому нет нужды дополнительно запрашивать этот список у Finder’а.

Готовые службу, приложение-авторизатор и их установщик можно взять здесь. Протестировано на 10.7 и 10.9. Должно работать и на 10.8. Лицензия стандартная — WTFPL.

ссылка на оригинал статьи http://habrahabr.ru/post/207818/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *