使用Twitter流api进行搜索
我正在尝试使用Twitter流Api在谷歌电子表格中搜索一些标签。Twitter搜索api没用,因为我也想要trak retweet计数。这里是我的函数示例。谁能解释一下我必须做些什么才能工作得好吗使用Twitter流api进行搜索,twitter,twitter-oauth,google-apps-script,google-sheets,Twitter,Twitter Oauth,Google Apps Script,Google Sheets,我正在尝试使用Twitter流Api在谷歌电子表格中搜索一些标签。Twitter搜索api没用,因为我也想要trak retweet计数。这里是我的函数示例。谁能解释一下我必须做些什么才能工作得好吗 function miniSearch(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sumSheet = ss.getSheetByName("Readme/Settings"); // Authorize to Twit
function miniSearch(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sumSheet = ss.getSheetByName("Readme/Settings");
// Authorize to Twitter
var oauthConfig = UrlFetchApp.addOAuthService("twitter");
oauthConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
oauthConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
oauthConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authorize");
oauthConfig.setConsumerKey(TWITTER_CONSUMER_KEY);
oauthConfig.setConsumerSecret(TWITTER_CONSUMER_SECRET);
// "twitter" value must match the argument to "addOAuthService" above.
var options = {
'method': 'POST',
"oAuthServiceName" : "twitter",
"oAuthUseToken" : "always"
};
var url = "https://stream.twitter.com/1/statuses/filter.json?track="+"twitterapi";
var response = UrlFetchApp.fetch(url, options);
var tweets = JSON.parse(response.getContentText());
sumSheet.getRange('B8').setValue(tweets[0]["text"]);
}
此函数返回错误代码504 我认为谷歌应用程序脚本无法保持一个持久的HTTP连接打开,这导致了504(请参阅) [我在中有一个基本的转发计数器。filterUnique公式使用此代码(伪代码是从tweet文本中删除任何链接,然后提取前90%的文本(考虑任何旧式RT+注释),然后如果不在唯一数组中,则向现有值添加或添加1):
]我认为谷歌应用程序脚本无法保持一个持久的HTTP连接打开,从而导致504(请参阅) [我在中有一个基本的转发计数器。filterUnique公式使用此代码(伪代码是从tweet文本中删除任何链接,然后提取前90%的文本(考虑任何旧式RT+注释),然后如果不在唯一数组中,则向现有值添加或添加1):
]我认为这对我来说不起作用,因为我必须搜索一些标签,然后在创建的推文中,我必须跟踪每条推文的转发次数。。这是一个连接和超越api限制的过程,您正在尝试做的事情可能不仅仅是普通的api访问。你可能想开始关注第三方服务,比如datasift.com,它可以按需付费访问twitter数据。我认为这不是一项专业任务。唯一的问题是,我无法连接到任何类型的操作的流api。我认为这对我来说都不起作用,因为我必须搜索一些hashtags,然后在创建的tweet中,我必须跟踪每条tweet的转发次数。。这是一个连接和超越api限制的过程,您正在尝试做的事情可能不仅仅是普通的api访问。你可能想开始关注第三方服务,比如datasift.com,它可以按需付费访问twitter数据。我认为这不是一项专业任务。唯一的问题是我无法连接到任何类型操作的流api。。
function filterUnique(tweets){
var output = [];
var temp = {};
for (i in tweets){
if (i>0){
var tmp = tweets[i][0];
var urlPattern = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
tmp = tmp.replace(urlPattern,"")
tmp = tmp.substring(0,parseInt(tmp.length*0.9));
if (temp[tmp] == undefined){
temp[tmp] = [tweets[i][0],0];
}
temp[tmp] = [tweets[i][0],temp[tmp][1]+1];
}
}
for (i in temp){
output.push([temp[i][0],temp[i][1]]);
}
output.sort(function(a,b) {
return b[1]-a[1];
});
return output.slice(0, 12);
}