通过Applescript调用Skype API会触发多达100个安全授权请求

时间:2009-09-23 17:04:23

标签: api macos applescript skype

我正在制作一个Applescript,它没有什么花哨的但是要求Skype有多少联系人在线...但是,当脚本被执行多次,而Skype没有运行,并且最终运行时,那么Skype打开了不可数带有Skype API安全请求的对话窗口,询问是否允许Applescript使用Skype。

不幸的是我找不到解决这个问题的方法。 万一你有想法,我非常感谢你的帮助!

提前致谢! 儒略

这里提到的脚本:

set onlineFriendsCount to 0
set resultArray to {}

-- define a string replace method
on ReplaceText(theString, findStr, replaceStr)

将current_Delimiters设置为AppleScript的文本项分隔符  将AppleScript的文本项分隔符设置为findStr  将sList设置为theString的每个文本项  将AppleScript的文本项分隔符设置为replaceStr  将newString设置为sList作为字符串  将AppleScript的文本项分隔符设置为current_Delimiters  返回newString     结束ReplaceText

on countString(myText, myDelimiter)

将{oldDelimiters,AppleScript的文本项分隔符}设置为{AppleScript的文本项分隔符,myDelimiter}  将myCounter设置为(计算myText的文本项) - 1  将AppleScript的文本项分隔符设置为oldDelimiters

return myCounter
end countString

tell application "System Events"

将active_flag设置为(进程名称)包含“Skype”     结束告诉     if active_flag然后

告诉应用程序“Skype”

- 首先找出在线“朋友”的数量(这是skype行话)   设置组发送命令“SEARCH GROUPS HARDWIRED”脚本名称“getType”   将groupList设置为组的单词

将groupCount设置为groupList

中的项目数

重复i从2到groupCount    将组设置为groupList的项目i

设置groupType以发送命令“GET GROUP”&小组& “TYPE”脚本名称“getType”    如果groupType包含“ONLINE”则     设置onlineFriends发送命令“GET GROUP”&小组& “USERS”脚本名称“getType”      - 将onlineFriends设置为onlineFriends的话语

-- setting the new string delimiter for chunking the resulting list
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to ","
set onlineFriendsList to every text item of onlineFriends
set AppleScript's text item delimiters to oldDelimiters

set AppleScript's text item delimiters to ","
set onlineFriendsCount to (number of items in onlineFriendsList)
-- this is a little workaround to get the correct number of online contacts:
if onlineFriendsCount = 1 then
 set resultArray to resultArray & 0
else
 set resultArray to resultArray & onlineFriendsCount
end if
exit repeat

结束如果   结束重复

- 获取情绪讯息   设置moodMessage发送命令“GET PROFILE MOOD_TEXT”脚本名称“getType”   将moodStrings设置为我的ReplaceText(moodMessage,“PROFILE MOOD_TEXT”,“”)   将moodStrings设置为我的ReplaceText(moodStrings,“,”,“”)   将resultArray设置为resultArray& moodStrings    - 获取在线状态   设置onlineStatus发送命令(“GET USERSTATUS”)脚本名称“getType”   将onlineStatus设置为我的ReplaceText(onlineStatus,“USERSTATUS”,“”)   将resultArray设置为resultArray& onlineStatus    - 获取有效聊天的数量   设置activeChats发送命令“SEARCH ACTIVECHATS”脚本名称“getType”   将activeChats设置为我的countString(activeChats,“#”)   将resultArray设置为resultArray& activeChats    - 检查是否有正在进行的通话   设置activeCalls发送命令“SEARCH ACTIVECALLS”脚本名称“getType”   将callNum设置为activeCalls的单词计数   if callNum> 1然后    将resultArray设置为resultArray&真正   其他    将resultArray设置为resultArray&假   结束如果

返回resultArray

告诉

else

将resultArray设置为{0,“”,“OFFLINE”,0,false}

end if

1 个答案:

答案 0 :(得分:2)

安全请求与您的脚本无关。它应该在执行任何脚本或Skype API客户端时弹出。请选择第一个选项“允许此应用程序使用Skype”,您将不再看到此弹出窗口。

Janno