Twitter 如何计算tweets的2个hashtag的数量,并显示哪一个更受关注

Twitter 如何计算tweets的2个hashtag的数量,并显示哪一个更受关注,twitter,arduino,processing,hashtag,tweets,Twitter,Arduino,Processing,Hashtag,Tweets,你好 我和我的团队对编码语言还不熟悉,我们正在尝试通过多种方法制作一个基于arduino的指示器,以显示在twitter的最后5分钟中,两个关键字中哪一个更容易被提及 我们尝试使用adafruit+IFTTT,我们成功地获得了两个标签的实时推文流,但我们正试图找到一种方法来收集这些信息,并编写一个代码,比较两个标签的总数,并向arduino发送命令,根据结果调整伺服电机 然后我们尝试通过处理语言来实现,我们发现这段代码可以在屏幕上显示相关的标签推文,但我们无法让它搜索两个单词并比较数字,然后向a

你好 我和我的团队对编码语言还不熟悉,我们正在尝试通过多种方法制作一个基于arduino的指示器,以显示在twitter的最后5分钟中,两个关键字中哪一个更容易被提及

我们尝试使用adafruit+IFTTT,我们成功地获得了两个标签的实时推文流,但我们正试图找到一种方法来收集这些信息,并编写一个代码,比较两个标签的总数,并向arduino发送命令,根据结果调整伺服电机

然后我们尝试通过处理语言来实现,我们发现这段代码可以在屏幕上显示相关的标签推文,但我们无法让它搜索两个单词并比较数字,然后向arduino发送信号:

    //http://codasign.com/tutorials/processing-and-twitter

import twitter4j.conf.*;
import twitter4j.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import java.util.*;

Twitter twitter;
String searchString = "#poznan";

List<Status> tweets;

int currentTweet;

void setup()
{
  size(800, 600);

  ConfigurationBuilder cb = new ConfigurationBuilder();
  cb.setOAuthConsumerKey("");
  cb.setOAuthConsumerSecret("");
  cb.setOAuthAccessToken("");
  cb.setOAuthAccessTokenSecret("");

  TwitterFactory tf = new TwitterFactory(cb.build());

  twitter = tf.getInstance();

  getNewTweets();

  currentTweet = 1;

  thread("refreshTweets");
}

void draw()
{
  fill(0, 40);
  rect(0, 0, width, height);

  currentTweet = currentTweet + 1;

  if (currentTweet >= tweets.size())
  {
    currentTweet = 0;
  }

  Status status = tweets.get(currentTweet);

  fill(200);
  text(status.getText(), random(width), random(height), 300, 200);

  delay(250);
}

void getNewTweets()
{
  try
  {
    Query query = new Query(searchString);
    //query.setSince("2016-03-17");
    //query.setCount(100);
    query.setResultType(Query.RECENT);
    QueryResult result = twitter.search(query);

    tweets = result.getTweets();
    println(tweets.size());
  }
  catch (TwitterException te)
  {
    System.out.println("Failed to search tweets: " + te.getMessage());
    System.exit(-1);
  }
}

void refreshTweets()
{
  while (true)
  {
    getNewTweets();

    println("Updated Tweets");

    delay(60000);
  }
}
//http://codasign.com/tutorials/processing-and-twitter
导入twitter4j.conf.*;
导入twitter4j.*;
导入twitter4j.auth.*;
导入twitter4j.api.*;
导入java.util.*;
推特;
String searchString=“#poznan”;
列出推文;
int-currentweet;
无效设置()
{
尺寸(800600);
ConfigurationBuilder cb=新的ConfigurationBuilder();
cb.setOAuthConsumerKey(“”);
cb.SetOAuthConsumerCret(“”);
cb.setOAuthAccessToken(“”);
cb.setOAuthAccessTokenSecret(“”);
TwitterFactory tf=新的TwitterFactory(cb.build());
twitter=tf.getInstance();
getNewTweets();
currentTweet=1;
线程(“刷新tweets”);
}
作废提款()
{
填充(0,40);
矩形(0,0,宽度,高度);
currentTweet=currentTweet+1;
如果(currentTweet>=tweets.size())
{
currentTweet=0;
}
状态=tweets.get(currentTweet);
填充(200);
文本(status.getText(),random(宽度),random(高度),300200);
延迟(250);
}
void getnewweets()
{
尝试
{
查询=新查询(搜索字符串);
//查询:设置自(“2016-03-17”);
//query.setCount(100);
query.setResultType(query.RECENT);
QueryResult result=twitter.search(查询);
tweets=result.getTweets();
println(tweets.size());
}
捕获(twitter异常)
{
System.out.println(“未能搜索tweets:+te.getMessage());
系统退出(-1);
}
}
无效刷新tweets()
{
while(true)
{
getNewTweets();
println(“更新的推文”);
延迟(60000);
}
}
我们正在寻找替代的代码和方法,使我们的概念工作
我们欢迎您的建议,请随时写信给我们。

您可能应该将此问题分成几个小问题

答:我如何连接到Twitter并“倾听”两个标签,计算并比较它们

B.如何使用arduino根据特定范围内的任意数字移动伺服

C.我如何通过所需的通道(wi-fi?蓝牙?usb?)在Arduino和processing之间传输数字

当然,这一点可以进一步打破,也许它应该打破

这样做将更容易开发和调试代码。一旦你弄明白了所有这些,就开始把它们结合起来

对于
B
C
我帮不了什么忙,自从我上次触摸我的Arduino以来已经有一段时间了。但这并不难做到。在中,您可以找到许多关于与Arduino进行串行通信的答案。论坛的搜索不是很好。但你可以随时使用谷歌。类似于:
serial-arduino-site:processing.org
的内容将在所有论坛中进行搜索(这类似于第三个版本),并使您更容易浏览结果

对于
A
,我建议您尝试Twitter的“流”。一旦开始获得结果,只需将它们添加到不同的
列表中,如

hashtag1
hashtag2

每个列表的大小就是您想要的(如果我没有弄错的话)

hashtag1.size()-hashtag2.size()
将为您提供它们之间的“平衡”

编辑:如果您不需要这些状态,只需添加到两个整数即可。。。(h1++,h2++),然后忘记列表

下面是一些让您开始学习的流示例代码:

import twitter4j.util.*;
导入twitter4j.*;
导入twitter4j.管理。*;
导入twitter4j.api.*;
导入twitter4j.conf.*;
导入twitter4j.json.*;
导入twitter4j.auth.*;
推特流推特流;
//如果您在这里输入关键字,它将进行过滤,否则它将进行采样
字符串关键字[]={
//你所需要的只是。。。
“爱”
};
无效设置(){
大小(100100);
背景(0);
openTwitterStream();
}  
void draw(){
背景(0);
}  
//流式传输
void openTwitterStream(){
ConfigurationBuilder cb=新的ConfigurationBuilder();
//填写下面的oAuth数据
cb.setOAuthConsumerKey(“”);
cb.SetOAuthConsumerCret(“”);
cb.setOAuthAccessToken(“”);
cb.setOAuthAccessTokenSecret(“”);
cb.setDebugEnabled(true);
cb.setJSONStoreEnabled(true);
twitterStream=newTwitterStreamFactory(cb.build()).getInstance();
FilterQuery filtered=新建FilterQuery();
过滤。跟踪(关键字);
twitterStream.addListener(listener);
if(关键字.length==0){
//sample()方法在内部创建一个处理TwitterStream的线程
//并连续调用这些适当的侦听器方法
twitterStream.sample();
}否则{
twitterStream.filter(已过滤);
}
println(“连接…”);
} 
//实现StatusListener接口
StatusListener=新建StatusListener(){
//@凌驾
公共无效状态(状态){
System.out.println(“@”+status.getUser().getScreenName()+”-“+status.getText());
}
//@凌驾
删除通知的公共作废(状态删除通知状态删除通知){
System.out.println(“获得状态删除通知id:+statusDeletionNotice.getStatusId());
}
//@凌驾
公开无效onTrackLimitationNotice(int NumberOfLimitedStatus){
System.out.println(“获得跟踪限制通知:+numberoflimitedstatus”);
}