Как стать автором
Обновить

Комментарии 17

А я сделал всё на костылях, получил Oauth вручную вот по этой статье: api.yandex.ru/oauth/doc/dg/tasks/get-oauth-token.xml (так и не понял, где подводные камни). Загружаю изображения POST запросом на api-fotki.yandex.ru/post/?oauth_token=token. Для продакшена такое не подойдет, но для самописной утилиты вполне норм.

Сделал 3 скрипта, один загружает изображения через контекстное меню, второй — загружает область экрана по command+shift+4 и третий — для лайтрума, чтобы загружать изображения через export.
Точно то же, что вы написали, только для Aperture bitbucket.org/ellersseer/apya
Неплохо, возьму на заметку. Но от использования Апертуры меня останавливает привычка с лайтрума — он при импорте с сд карты копирует фотки в папку вида 2013/05-12-2013/, в то время как Апертура копирует их себе в медиатеку, если не указать ей конкретную папку. А каждый раз сначала создавать, а потом указывать папку неудобно.

Может, это как-то можно решить, но пока не разобрался.
Ну эту проблему я то же яблоскирптом решил)
А как выбирать альбом в который загружать фотки и есть ли у вас обработка ошибок загрузки? (вдруг одна из сотен фоток не загрузится)?
Альбом создается после успешной авторизации. Обработка ошибок загрузки есть, конечно же. Смотрите helper.scpt
Кстати, добавьте ссылку на мой вариант с использованием Fimp-токена.

1. Раньше, чтобы получить Fimp-токена, нужно было использовать скрипты (http://habrahabr.ru/post/207282/#comment_7147808), но чтобы упросить этот процесс, я за пол часа накидал приложение с использованием node-webkit. Исходники и само приложение доступны тут: github.com/NAlexandrov/yarsa (скачивайте zip-архив и запускайте yarsa.app).
image
2. Далее, когда у вас есть Fimp-токен, то необходимо скопировать этот скрипт в Automator, чтобы получилось как на картинке:

Картинка + Исходник скрипта


on run
    # заменить на свой токен
    set TOKEN to "2d1da421fdd3404318e81c0a0442105e"

    # адрес альбома куда загружать фотографии
    set ALBUM to "http://api-fotki.yandex.ru/api/users/mylogin/photos/"
    
    tell application "Finder"
        set selectedFiles to (get selection)
        
        if (count of selectedFiles) > 0 then
            repeat with i from 1 to the count of selectedFiles
                set filePath to POSIX path of (item i of selectedFiles as alias)
                set responseCode to do shell script "curl -sL -w %{http_code} --header \"Authorization: FimpToken realm=\"fotki.yandex.ru\", token=" & TOKEN & "\" -F \"image=@" & filePath & "\" --request POST " & ALBUM & " -o /dev/null"
                if (responseCode is not "201") then
                    display alert "Произошла ошибка:" message "Не удалось загрузить: " & filePath
                end if
                
            end repeat
            
            display notification "Загрузка картинок завершена" with title "fotki.yandex.ru"
        end if
        
    end tell
end run


3. Для тех, кто не хочет загружать фотографии в корень Яндекс.Фоток, а хочет загружать в свой приватный альбом, то открывайте на сайте Яндекс.Фотки этот приватный альбом и смотрите в адресную строку. В ней есть цифровой идентификатор альбома, например у меня: fotki.yandex.ru/users/mylogin/album/200491/ Из этого адреса нас интересуют только цифры 200491. Чтобы загружать фотки именно в этот альбом, в скрипте, который вы скопировали в Automator, замените адрес в переменной ALBUM на http://api-fotki.yandex.ru/api/users/mylogin/album/200491/photos/
Ждем аналогичные скрипты для Windows на PowerShell)
Для windows есть отличная программа Image Uploader, которая умеет всё это делать. zenden.ws/imageuploader
Еще немного — и кто-нибудь напишет службу для автоматической запаковки выбранных папок в zip с паролем и его загрузки на Яндекс.Диск. Вот тогда я буду счастлив :).
ну это легче.
запаковать папку в зип, подключиться к я.диску через WebDAV, залить архив.
AppleScript умеет с WebDAV работать?
Ну можно вот так

try
mount volume «webdav.host.domain»
end try
Не похоже, что все так просто — toster.ru/q/62740
Хм. Точнее так — через AppleScript удается выполнить
mount volume "https://webdav.yandex.ru:443"

при этом логин и пароль отдельно запрашиваются, их можно сохранить в связке ключей.
Через bash — как сохранить логин и пароль — непонятно.
А вот кстати вопрос. Кто как работает с JSON из Apple Script? Я сначала сделал свой парсер, но он жутко медленный, в итоге остановился на JSONHelper (http://itunes.apple.com/app/json-helper-for-applescript/id453114608?mt=12# Возможно кто-то использует другие способы.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.