2014-11-05 2 views
0

Таким образом, целью этой небольшой утечки является возможность выбрать фрагмент текста, содержащий URL-адрес, а OS X - преобразовать его в короткий URL-адрес с помощью службы URL-адреса goo.gl.Как получить этот applescript?

С этой целью я создал службу с использованием Automator, которая принимает ввод текста и передает этот ввод в действие «Запустить AppleScript». AppleScript приведен ниже.

Я установил Node.js v0.10.33, а также установлен пакет узел, называемый JSON (http://trentm.com/json/)

Сценарий ниже работает отлично, пока я не трубу вывода в приложение JSON узла.
Команда curl с подключением к узлу json node работает отлично в терминале.

Мое предположение о том, что среда оболочки отключена, но я понятия не имею, как это понимать. Любая помощь?

-- shorten URLs via goo.gl URL shortener 
-- syntax derrived from Scott Lowe @ blog.scottlowe.org 

on run {input, parameters} 

    set curlCommand to "curl https://www.googleapis.com/urlshortener/v1/url -H 'Content-Type: application/json' -d '{\"longUrl\": \"" & input & "\"}' | /usr/local/bin/json id" 

    set jsonResult to (do shell script curlCommand) 

    return jsonResult 
end run 

ответ

1

Отличный инструмент для обработки JSON в Applescript является свободным App JSON Helper (App Store). Он преобразует JSON в словари Applescript. Так что мой ответ очень (очень) похож на @ regulus6633 пост, но без текста разбора JSON:

set input to "http://stackoverflow.com/questions/26757656/how-to-get-this-applescript-working" 

-- Note: without piping to grep at the end! 
set curlCommand to "curl https://www.googleapis.com/urlshortener/v1/url -H 'Content-Type: application/json' -d '{\"longUrl\": \"" & input & "\"}'" 

-- getting the full JSON answer 
set jsonResult to do shell script curlCommand 

-- using JSON Helper to translate JSON to Applescript dictionary 
tell application "JSON Helper" 
    set shortURL to |id| of (read JSON from jsonResult) 
end tell 

return shortURL 

Привет, Майкл/Гамбург

+0

Спасибо, я проверю это. Для моего собственного наставления я хотел бы знать, почему версия, которую я написал, не работает, но я могу взломать ее, когда у меня есть * много * больше времени :) –

+0

Это работает отлично. Спасибо! –

1

Почему у вас есть «return curlCommand»? Разве вы не хотите «возвращать jsonResult»?

Понятно, что я ничего не знаю о json, но результат команды curl - это строка, и я знаю, как разбирать строку в applescript. Вот как я бы написал код, разбирающий его как строку. Обратите внимание, я использовал URL этой веб-страницы, как "вход" ...

set input to "http://stackoverflow.com/questions/26757656/how-to-get-this-applescript-working" 

set curlCommand to "curl https://www.googleapis.com/urlshortener/v1/url -H 'Content-Type: application/json' -d '{\"longUrl\": \"" & input & "\"}' | grep '\"id\"'" 
set jsonResult to do shell script curlCommand 
set shortURL to text 9 thru -2 of jsonResult 
return shortURL 
+0

извинения за путаницу. Вы правы, я хочу вернуть jsonResult. Я возвращал curlCommand как часть процесса отладки и забыл изменить его. –

Смежные вопросы