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