无法从列表中获取 Twitterlib fetchtweets() 到 return 查询
Can't get Twitterlib fetchtweets() to return queries from a list
第一次来这里,刚刚开始调查 Twitter 机器人向我的关注者转发交通信息。我在 Google 脚本上使用 Amit Agarwal 的 labnol 机器人并且变化很小(删除了喜欢的推文)但是我无法使用我的搜索参数转发任何内容,尽管 Twitter 上有匹配的推文,有人可以检查我是什么做错了,我(还)还不足以发现问题?提前致谢。
// Written by Amit Agarwal @labnol on 31/07/2015
// Fill the Twitter Keys and then choose Run -> Start Bot
TWITTER_CONSUMER_KEY = "removed";
TWITTER_CONSUMER_SECRET = "removed";
TWITTER_ACCESS_TOKEN = "removed";
TWITTER_ACCESS_SECRET = "removed";
TWITTER_SEARCH_PHRASE = 'A13 list:a13essex/traffic';
function Start_Bot() {
var props = PropertiesService.getScriptProperties();
props.setProperties({
TWITTER_CONSUMER_KEY: TWITTER_CONSUMER_KEY,
TWITTER_CONSUMER_SECRET: TWITTER_CONSUMER_SECRET,
TWITTER_ACCESS_TOKEN: TWITTER_ACCESS_TOKEN,
TWITTER_ACCESS_SECRET: TWITTER_ACCESS_SECRET,
SINCE_TWITTER_ID: 0
});
var twit = new Twitter.OAuth(props);
// Test Twitter authorization
if (!twit.favorite("628053456071192576")) {
throw new Error("Please check your Twitter access tokens");
return;
}
ScriptApp.newTrigger("labnol_twitterBot")
.timeBased()
.everyMinutes(10)
.create();
}
function labnol_twitterBot() {
try {
var props = PropertiesService.getScriptProperties(),
twit = new Twitter.OAuth(props);
if (twit.hasAccess()) {
var tweets = twit.fetchTweets(
TWITTER_SEARCH_PHRASE, function(tweet) {
// Skip tweets that contain sensitive content
if (!tweet.possibly_sensitive) {
return tweet.id_str;
}
}, {
multi: true,
lang: "en", // Process only English tweets
count: 5, // Process 5 tweets in a batch
since_id: props.getProperty("SINCE_TWITTER_ID")
});
if (tweets) {
props.setProperty("SINCE_TWITTER_ID", tweets[0]);
for (var i = tweets.length - 1; i >= 0; i--) {
twit.retweet(tweets[i]);
/* Wait between 10 seconds and 1 minute */
Utilities.sleep(Math.floor(Math.random()*50000) + 10000);
}
}
}
} catch (f) {
Logger.log("Error: " + f.toString());
}
}
// Email: amit@labnol.org
// Premium Support: http://ctrlq.org
这returns日志中的结果如下:
[16-09-30 11:25:32:289 BST] https://api.twitter.com/1.1/search/tweets.json?lang=en&count=5&since_id=undefined&include_entities=false&result_type=recent&q=A13%20list%3Aa13essex%252Ftraffic
[16-09-30 11:25:32:292 BST] lang=en
[16-09-30 11:25:32:293 BST] count=5
[16-09-30 11:25:32:293 BST] since_id=undefined
[16-09-30 11:25:32:294 BST] include_entities=false
[16-09-30 11:25:32:294 BST] result_type=recent
[16-09-30 11:25:32:295 BST] q=A13 list:a13essex%2Ftraffic
[16-09-30 11:25:32:375 BST] No matching tweets this go-round
您发现了 fetchTweets 的另一个特殊字符编码问题。我做了一些 API 检查,在 URL 到 return 正确的结果集上,斜杠的编码应该是 %2F。
我已经在 Github 上为下一个版本提交了一个问题:https://github.com/airhadoken/twitter-lib/issues/16
在此期间,您可以使用 twit.fetch("https://api.twitter.com/1.1/search/tweets.json?lang=en&count=5&since_id=undefined&include_entities=false&result_type=recent&q=A13%20list%3Aa13essex%2Ftraffic")
作为解决方法;您将必须 JSON.parse
内容文本才能将推文作为对象获取。当您可以再次使用 fetchTweets()
时(即当 Twitter lib v23 准备好发布时),我会报告。
谢谢你告诉我!
-- Bradley Momberger,Twitter 库的 creator/maintainer。
第一次来这里,刚刚开始调查 Twitter 机器人向我的关注者转发交通信息。我在 Google 脚本上使用 Amit Agarwal 的 labnol 机器人并且变化很小(删除了喜欢的推文)但是我无法使用我的搜索参数转发任何内容,尽管 Twitter 上有匹配的推文,有人可以检查我是什么做错了,我(还)还不足以发现问题?提前致谢。
// Written by Amit Agarwal @labnol on 31/07/2015
// Fill the Twitter Keys and then choose Run -> Start Bot
TWITTER_CONSUMER_KEY = "removed";
TWITTER_CONSUMER_SECRET = "removed";
TWITTER_ACCESS_TOKEN = "removed";
TWITTER_ACCESS_SECRET = "removed";
TWITTER_SEARCH_PHRASE = 'A13 list:a13essex/traffic';
function Start_Bot() {
var props = PropertiesService.getScriptProperties();
props.setProperties({
TWITTER_CONSUMER_KEY: TWITTER_CONSUMER_KEY,
TWITTER_CONSUMER_SECRET: TWITTER_CONSUMER_SECRET,
TWITTER_ACCESS_TOKEN: TWITTER_ACCESS_TOKEN,
TWITTER_ACCESS_SECRET: TWITTER_ACCESS_SECRET,
SINCE_TWITTER_ID: 0
});
var twit = new Twitter.OAuth(props);
// Test Twitter authorization
if (!twit.favorite("628053456071192576")) {
throw new Error("Please check your Twitter access tokens");
return;
}
ScriptApp.newTrigger("labnol_twitterBot")
.timeBased()
.everyMinutes(10)
.create();
}
function labnol_twitterBot() {
try {
var props = PropertiesService.getScriptProperties(),
twit = new Twitter.OAuth(props);
if (twit.hasAccess()) {
var tweets = twit.fetchTweets(
TWITTER_SEARCH_PHRASE, function(tweet) {
// Skip tweets that contain sensitive content
if (!tweet.possibly_sensitive) {
return tweet.id_str;
}
}, {
multi: true,
lang: "en", // Process only English tweets
count: 5, // Process 5 tweets in a batch
since_id: props.getProperty("SINCE_TWITTER_ID")
});
if (tweets) {
props.setProperty("SINCE_TWITTER_ID", tweets[0]);
for (var i = tweets.length - 1; i >= 0; i--) {
twit.retweet(tweets[i]);
/* Wait between 10 seconds and 1 minute */
Utilities.sleep(Math.floor(Math.random()*50000) + 10000);
}
}
}
} catch (f) {
Logger.log("Error: " + f.toString());
}
}
// Email: amit@labnol.org
// Premium Support: http://ctrlq.org
这returns日志中的结果如下:
[16-09-30 11:25:32:289 BST] https://api.twitter.com/1.1/search/tweets.json?lang=en&count=5&since_id=undefined&include_entities=false&result_type=recent&q=A13%20list%3Aa13essex%252Ftraffic
[16-09-30 11:25:32:292 BST] lang=en
[16-09-30 11:25:32:293 BST] count=5
[16-09-30 11:25:32:293 BST] since_id=undefined
[16-09-30 11:25:32:294 BST] include_entities=false
[16-09-30 11:25:32:294 BST] result_type=recent
[16-09-30 11:25:32:295 BST] q=A13 list:a13essex%2Ftraffic
[16-09-30 11:25:32:375 BST] No matching tweets this go-round
您发现了 fetchTweets 的另一个特殊字符编码问题。我做了一些 API 检查,在 URL 到 return 正确的结果集上,斜杠的编码应该是 %2F。
我已经在 Github 上为下一个版本提交了一个问题:https://github.com/airhadoken/twitter-lib/issues/16
在此期间,您可以使用 twit.fetch("https://api.twitter.com/1.1/search/tweets.json?lang=en&count=5&since_id=undefined&include_entities=false&result_type=recent&q=A13%20list%3Aa13essex%2Ftraffic")
作为解决方法;您将必须 JSON.parse
内容文本才能将推文作为对象获取。当您可以再次使用 fetchTweets()
时(即当 Twitter lib v23 准备好发布时),我会报告。
谢谢你告诉我! -- Bradley Momberger,Twitter 库的 creator/maintainer。