Комментарии 37
Один вопрос: надеюсь, вы не указали свой настоящий userkey в этой статье?
Это превосходно, спасибо.
Спасибо за статью. Это очень полезно. А если кому-то интересно, могу найти как запускать (например psi+) с параметрами из любой папки «аля portable».
О! было бы шикарно
iteye.ru/1794/how-to-get-the-application-folder-from-automator-application
пси должен лежать в папке application в любом месте. рядом с этот папкой наш автоматоровский скрипт.
т.е.
пси должен лежать в папке application в любом месте. рядом с этот папкой наш автоматоровский скрипт.
т.е.
myfolder -
-------- | - application (внутри лежит psi)
-------- | - psiStart.app
Спасибо! Не знал вообще о таких возможностях в системе — теперь будет повод поиграться с этим! :)
Очень круто, спасибо! :) Кстати, прямо сейчас колдуем над HS.
Только не сломайте! :)
Это хорошо. А почИните возможность прямой загрузки из браузера по FileAPI файлов размером более 10КБ?
Напомню, что ещё летом интересовался возможностью загрузки, чтобы не использовать Flash, сделал, но обнаружился баг, выражающийся в том, что в файле картинки остаются строчки-разделители вида:
Картинка, конечно, ломается, файл не отображается.
Ссылка на свежий пример такой загрузки, из которой взята одна из таких строчек: habrastorage.org/storage3/296/126/089/296126089e3e540d19ddc04616d9226b.jpg (30 КБ). Если файл — меньше 10КБ, то загружается всё нормально (хотя иногда, редко бывают ошибки).
Техподдержка Хабра тогда ответила, что надо пользоваться немного другим поддоменом. Я его протестировал — обнаружилось, что только Хром на нём стал работать нормально, у Firefox и старой Оперы — те же ошибки. Поэтому в скрипт не стал внедрять поддержку только для Хрома. Прочие способы (не браузеры), как и описываемый в статье, видимо, нормально работают, потому что не разбивают изображение при закачке на секции, а все браузеры (не тестировал Safari) — разбивают, но серверная часть сайта этого не учитывает (надо просто выкусывать разделители). И странным образом учитывает только Хром на другом поддомене, несмотря на то, что тоже отправляет файл с разделителями секций.
Почему на другом поддомене неудобно? Токен надо брать на habrastorage.org в одном фрейме, потом загрузку по FileAPI надо делать на другом (насколько помню, legacy.habrastorage.org), показывать — снова на первом, потому что там юзер опознан и отображается приветствие. Мне кажется, что что-то недоделано в плане реализации закачки по FileAPI. Но далее техподдержка не отвечала, потому что был ответ один: информация принята, а работы по этому механизму не велись.
Если сейчас в этом направлении ведутся работы — сделайте, пожалуйста поддержку файлов больше 10К. И лучше на основном домене, или создайте, пожалуйста, опознавание юзера на домене legacy…. Окажу посильную помощь в налаживании закачки файлов через браузеры.
Сейчас заливка картинок перетаскиванием в окно до 10 КБ в 3 браузерах выполнена в юзерскрипте HabrAjax (надо зайти на домен habrastorage.org и затащить картинку в окно).
Пример затащенного малого файла в Firefox:
Напомню, что ещё летом интересовался возможностью загрузки, чтобы не использовать Flash, сделал, но обнаружился баг, выражающийся в том, что в файле картинки остаются строчки-разделители вида:
....
-----------------------------57648741364
Content-Disposition: form-data; name="Filedata"; filename="5e7kqHg.jpg"
Content-Type: image/jpeg
яШяа.....
Картинка, конечно, ломается, файл не отображается.
Ссылка на свежий пример такой загрузки, из которой взята одна из таких строчек: habrastorage.org/storage3/296/126/089/296126089e3e540d19ddc04616d9226b.jpg (30 КБ). Если файл — меньше 10КБ, то загружается всё нормально (хотя иногда, редко бывают ошибки).
Техподдержка Хабра тогда ответила, что надо пользоваться немного другим поддоменом. Я его протестировал — обнаружилось, что только Хром на нём стал работать нормально, у Firefox и старой Оперы — те же ошибки. Поэтому в скрипт не стал внедрять поддержку только для Хрома. Прочие способы (не браузеры), как и описываемый в статье, видимо, нормально работают, потому что не разбивают изображение при закачке на секции, а все браузеры (не тестировал Safari) — разбивают, но серверная часть сайта этого не учитывает (надо просто выкусывать разделители). И странным образом учитывает только Хром на другом поддомене, несмотря на то, что тоже отправляет файл с разделителями секций.
Почему на другом поддомене неудобно? Токен надо брать на habrastorage.org в одном фрейме, потом загрузку по FileAPI надо делать на другом (насколько помню, legacy.habrastorage.org), показывать — снова на первом, потому что там юзер опознан и отображается приветствие. Мне кажется, что что-то недоделано в плане реализации закачки по FileAPI. Но далее техподдержка не отвечала, потому что был ответ один: информация принята, а работы по этому механизму не велись.
Если сейчас в этом направлении ведутся работы — сделайте, пожалуйста поддержку файлов больше 10К. И лучше на основном домене, или создайте, пожалуйста, опознавание юзера на домене legacy…. Окажу посильную помощь в налаживании закачки файлов через браузеры.
Сейчас заливка картинок перетаскиванием в окно до 10 КБ в 3 браузерах выполнена в юзерскрипте HabrAjax (надо зайти на домен habrastorage.org и затащить картинку в окно).
Пример затащенного малого файла в Firefox:
Что-то не хочет он работать у меня =(
Жду, когда дропбокс заблокирует файлик за хотлинкинг:)
Эх, всё бы отдал, если бы загружало на яндекс.фотки.
Разве там нет API?
Я смог реализовать эту задачку, но нужно время чтобы оформить это топиком. Предварительно могу выслать вам инструкцию о том, как это всё собрать.
Да в принципе я уже всё сам сделал, но завязано на одного юзера, получил вручную oauth токен и делаю запросы через api-fotki.yandex.ru/post/?oauth_token=token
Получилось гораздо проще, чем думал.
Получилось гораздо проще, чем думал.
Как вы смогли получить oauth-токен без регистрации приложения или вы как то его зарегистрировали? Я просто прочитал api.yandex.ru/fotki/doc/overview/authorization.xml и там в секции по oauth написано про регистрацию приложения… Поэтому сделал все на Fimp-токене.
И второй вопрос — смогли ли вы сделать, чтобы когда выбираешь несколько картинок — чтобы они все отправлялись?
И второй вопрос — смогли ли вы сделать, чтобы когда выбираешь несколько картинок — чтобы они все отправлялись?
Всё. Смог реализовать загрузку подряд несколько картинок (когда выбрано несколько файлов). Собственно вот предварительный AppleScript, который можно загрузить в Automator.
Нужно только заменить токен на свой. И заменить mylogin в адресе.
Чтобы получить токен, нужно скачать реализацию RSA от Yandex download.yandex.ru/api-fotki/c-yamrsa.tar.gz затем распаковать и сделать make encrypt
Во shell скрипте нужно mylogin заменить на свой логин и mypassword соответсвенно тоже. Результатом выполнения скрипта будет строчка:
Срок действия токена не менее года.
Нужно только заменить токен на свой. И заменить mylogin в адресе.
Исходник
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
Чтобы получить токен, нужно скачать реализацию RSA от Yandex download.yandex.ru/api-fotki/c-yamrsa.tar.gz затем распаковать и сделать make encrypt
Затем в этой же папке создать shell-скрипт
#!/bin/sh
### config
USERNAME=mylogin
PASSWORD=mypassword
CURRENT_DIR=$(pwd)
PATH_TO_ENCRYPT="$CURRENT_DIR/encrypt"
### yandex.magic
YAMRSA_CODE=0
while [ $YAMRSA_CODE -ne 200 ]; do
echo "Get new public RSA key from Yandex..."
YAMRSA_CODE=$(curl -sL -w %{http_code} http://auth.mobile.yandex.ru/yamrsa/key/ -o yamrsa.txt)
sleep 2
done;
KEY=$(cat yamrsa.txt | grep key | awk -F "<key>" '{print $2}' | awk -F "</key>" '{print $1}')
REQUEST_ID=$(cat yamrsa.txt | grep request_id | awk -F "<request_id>" '{print $2}' | awk -F "</request_id>" '{print $1}')
CREDENTIAL=$($PATH_TO_ENCRYPT $KEY "<credentials login=\"$USERNAME\" password=\"$PASSWORD\"/>")
echo "RSA: $KEY"
echo "REQUEST_ID: $REQUEST_ID"
echo "CREDENTIAL: $CREDENTIAL"
TOKEN_CODE=502
while [ $TOKEN_CODE -eq 502 ]; do
echo "Get new token from Yandex..."
TOKEN_CODE=$(curl -sL -w %{http_code} -d request_id=$REQUEST_ID --data-urlencode credentials=$CREDENTIAL --request POST http://auth.mobile.yandex.ru/yamrsa/token/ -o token.txt)
sleep 2
done;
TOKEN=$(cat token.txt | grep token | awk -F "<token>" '{print $2}' | awk -F "</token>" '{print $1}')
echo "TOKEN: $TOKEN"
Во shell скрипте нужно mylogin заменить на свой логин и mypassword соответсвенно тоже. Результатом выполнения скрипта будет строчка:
TOKEN is 2d1da421fdd3404318e81c0a0442105e
Срок действия токена не менее года.
Чтобы загружать фотки не в общую коллекцию, нужно предварительно создать, например запароленный альбом (или выбрать имеющийся) и посмотреть его URL в браузере. Например вот: fotki.yandex.ru/users/mylogin/album/200491/
Теперь чтобы AppleScript мог загружать фотки в этот альбом, необходимо строку:
заменить на:
Теперь чтобы AppleScript мог загружать фотки в этот альбом, необходимо строку:
set ALBUM to "http://api-fotki.yandex.ru/api/users/mylogin/photos/"
заменить на:
set ALBUM to "http://api-fotki.yandex.ru/api/users/mylogin/album/200491/photos/"
НЛО прилетело и опубликовало эту надпись здесь
У меня курл не срабатывает :( в итоге копирует в буфер пустую строку
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Скрипт Automator, загружающий изображения на Habrastorage