2016-06-08 18 views
1

美好的一天 我和我的团队都是编程语言的新手,我们正在尝试通过多种方法来制作基于arduino的指标,在推特上的最后5分钟内更多提及如何计算2条#标签的推文数量并显示哪条提示更多

我们尝试使用adafruit + IFTTT,并且我们设法获得了两条hashtags的实时推文流,但我们试图找到收集该信息并制作代码的方法根据结果​​将两个井号标签和发送命令的总数量与arduino进行比较,以便对伺服电机进行高速旋转。

,然后我们试图通过处理语言来做到这一点,我们发现这个代码,使屏幕上的相关井号标签的tweets显示,但我们不能让搜索两个字比较数字,然后发送信号的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); 
    } 
} 

我们正在寻找替代代码和方法,使我们的概念工作 我们是开放的建议,不要犹豫,给我们写信。

+0

堆栈溢出真的不适合一般的“我怎么做这个”式的问题。您需要将您的问题分解为更小的部分:您是否可以创建一个小示例草图,以简单检索包含特定哈希标签的推文?从此开始,如果卡住了,请发布[mcve]。试图锤击你在互联网上发现的代码,并不真正理解只会导致更多的麻烦。使用该代码作为了解发生了什么的方法,然后编写自己的代码。祝你好运。 –

回答

0

你应该把这个问题分成小一些。

A.我如何连接到Twitter并“收听”两个hashtags,对它们进行计数和比较。

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

C.我如何通信的Arduino和处理之间的数,通过期望的信道(无线网络连接?蓝牙?USB?)

当然,这甚至可以进一步细分,也许它应该。

这样做将会更容易开发和调试您的代码。一旦你弄清了所有这些,开始合并它们。

对于BC我可以帮助很少,这是自从我上次碰到我的Arduino以来的某个时间。但这些并不是很难做到。在the Processing forum中,您可以找到许多有关与Arduino进行串行通信的答案。论坛的搜索不太好。但你可以随时使用Google。类似于:serial arduino site:processing.org将在所有论坛中进行搜索(这与第三个版本类似),并使您可以更轻松地浏览结果。

对于A,我建议你尝试从Twitter的streamingAPI“流”。一旦你开始获得结果,只需将它们添加到不同List s,就像

hashtag1hashtag2

每个列表的大小是你在找什么(如果我得到这个权利)

hashtag1.size() - hashtag2.size()会给你的“平衡”他们之间。

编辑:如果您不需要这些状态,您可以添加两个整数...(h1 ++,h2 ++),并忘记列表。

这里是一些流示例代码,您开始:

import twitter4j.util.*; 
import twitter4j.*; 
import twitter4j.management.*; 
import twitter4j.api.*; 
import twitter4j.conf.*; 
import twitter4j.json.*; 
import twitter4j.auth.*; 


TwitterStream twitterStream; 

// if you enter keywords here it will filter, otherwise it will sample 
String keywords[] = { 
//all you need is... 
    "love" 
}; 



void setup() {  
    size(100, 100);  
    background(0); 
    openTwitterStream(); 
} 


void draw() {  
    background(0); 
} 


// Stream it 
void openTwitterStream() { 

    ConfigurationBuilder cb = new ConfigurationBuilder(); 

    //fill oAuth data below 
    cb.setOAuthConsumerKey(""); 
    cb.setOAuthConsumerSecret(""); 
    cb.setOAuthAccessToken(""); 
    cb.setOAuthAccessTokenSecret(""); 
    cb.setDebugEnabled(true); 
    cb.setJSONStoreEnabled(true); 
    twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); 

    FilterQuery filtered = new FilterQuery(); 



    filtered.track(keywords); 

    twitterStream.addListener(listener); 

    if (keywords.length==0) { 
    // sample() method internally creates a thread which manipulates TwitterStream 
    // and calls these adequate listener methods continuously. With a sample of the fireRose 
    twitterStream.sample(); 
    } else { 
    twitterStream.filter(filtered); 
    } 
    println("connecting..."); 
} 


// Implementing StatusListener interface 
StatusListener listener = new StatusListener() { 

    //@Override 
    public void onStatus(Status status) { 
    System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText()); 
    } 

    //@Override 
    public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) { 
    System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId()); 
    } 

    //@Override 
    public void onTrackLimitationNotice(int numberOfLimitedStatuses) { 
    System.out.println("Got track limitation notice:" + numberOfLimitedStatuses); 
    } 

    //@Override 
    public void onScrubGeo(long userId, long upToStatusId) { 
    System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); 
    } 

    //@Override 
    public void onStallWarning(StallWarning warning) { 
    System.out.println("Got stall warning:" + warning); 
    } 

    //@Override 
    public void onException(Exception ex) { 
    ex.printStackTrace(); 
    } 
}; 
+0

好的,谢谢大家为你准备的时间,我们都明白了。 – Hameem

相关问题