Я сделал сегодня AppleScript ранее, который отображает количество подписчиков YouTube для Geektools, но я хотел, чтобы его было проще использовать людям, и попытался заставить его работать без имени файла (например, взяв subcount-PewDiePie.scpt и выводит подсчет PewDiePie), и я сделал ввод имени из имени файла рабочим, но он дает мне ошибки, когда я пытаюсь извлечь число из ответа API
работающего (исходный код)
set apiResponse to (do shell script "curl -s 'https://www.googleapis.com/youtube/v3/channels?part=statistics&forUsername=PewDiePie&fields=items%2Fstatistics%2FsubscriberCount&key=AIzaSyAEQGj2ZcDrTU0ZqzteD8eDVJwB9cpmvEo'")
on returnNumbersInString(inputString)
set s to quoted form of inputString
do shell script "sed s/[a-zA-Z\\']//g <<< " & s
set dx to the result
set numlist to {}
repeat with i from 1 to count of words in dx
set this_item to word i of dx
try
set this_item to this_item as number
set the end of numlist to this_item
end try
end repeat
end returnNumbersInString
returnNumbersInString(apiResponse)
Неработающий настраиваемый код
set channelName to path to me as text
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"subcount-"}
set nameFilter to text items of channelName
set channelName to item 2 of nameFilter
set AppleScript's text item delimiters to {"."}
set nameFilter to the text items of channelName
set channelName to item 1 of nameFilter
set curlLink to "https://www.googleapis.com/youtube/v3/channels?part=statistics&forUsername=" & channelName & "&fields=items%2Fstatistics%2FsubscriberCount&key=AIzaSyAEQGj2ZcDrTU0ZqzteD8eDVJwB9cpmvEo"
set curlCommand to "curl -s " & (quoted form of curlLink)
set apiResponse to {do shell script curlCommand}
on returnNumbersInString(inputString)
set s to quoted form of inputString
do shell script "sed s/[a-zA-Z\\']//g <<< " & s
set dx to the result
set numlist to {}
repeat with i from 1 to count of words in dx
set this_item to word i of dx
try
set this_item to this_item as number
set the end of numlist to this_item
end try
end repeat
end returnNumbersInString
returnNumbersInString(apiResponse)
Каждый раз, когда я делаю второй, выдается ошибка
Can’t get quoted form of {"{
\"items\": [
{
\"statistics\": {
\"subscriberCount\": \"76957805\"
}
}
]
}"}.
Сбой сразупосле получения информации с веб-сайта, которая не имеет никакого смысла, поскольку ни один из кодов, кроме того, как он получил ссылку на веб-сайт, не был изменен, кто-нибудь может помочь мне решить эту проблему