【问题标题】:Can't get Twitterlib fetchtweets() to return queries from a list无法让 Twitterlib fetchtweets() 从列表中返回查询
【发布时间】:2017-02-08 22:01:26
【问题描述】:

第一次来这里,刚刚开始调查 Twitter 机器人以将流量信息转发给我的关注者。我在 Google Script 上使用 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

这会在日志中返回以下结果:

[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

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 正确吗?再次感谢保罗

【问题讨论】:

    标签: javascript twitter google-apps-script twitter-search


    【解决方案1】:

    您发现 fetchTweets 存在另一个特殊字符编码问题。我做了一些 API 检查,斜线的编码应该是 URL 上的 %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 库的创建者/维护者。

    【讨论】:

    • 我正在考虑与您联系,@air_hadoken,因为这是我看到日志时的第一个想法,但我没有足够的信心站出来说出来!我已经在使用类似的解决方法,只是无法调用并设置 since_id 但正如我所说,我刚刚开始,所以仍在尝试解决。很高兴它有所帮助
    • 您应该能够在获取时将"&since_id=" + props.getProperty("SINCE_TWITTER_ID") 附加到 URL 的末尾。不要忘记将最后一条推文的id_str 存储到props
    • 谢谢,我已经这样做了,实际上在存储信息时遇到了麻烦,但我最终还是对它进行了排序,尽管更多的是靠运气而不是判断!
    • 仅供参考,新版本的 Twitter 库已经发布(v23)。如果您升级,这些查询现在应该可以与 fetchTweets() 一起使用。
    • 感谢您记得回来告诉我。解决方法仍然有效,所以会坚持下去,但如果它失败了,我会改用你的。
    猜你喜欢
    • 2020-12-07
    • 2017-04-18
    • 2023-01-22
    • 2019-11-25
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多