Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //This code has to be opened in the Processing IDE, put it in the same folder as the JosKartTwitter.pde
- //We are gonnna use the Twitter4J library.
- import twitter4j.FilterQuery;
- import twitter4j.StallWarning;
- import twitter4j.Status;
- import twitter4j.Twitter;
- import twitter4j.TwitterFactory;
- import twitter4j.TwitterStream;
- import twitter4j.conf.ConfigurationBuilder;
- import twitter4j.StatusDeletionNotice;
- import twitter4j.StatusListener;
- import twitter4j.TwitterStreamFactory;
- public class JosKartEngine {
- Twitter twitter;
- TwitterFactory twitterFactory;
- TwitterStream twitterStream;
- String[] directions = {"MOVEFORWARD", "MOVELEFT", "MOVERIGHT", "REVERSE"};
- String direction = " ";
- double distance = 0;
- double calculatedDistance;
- int secondsPerCM = 1507;
- public void initConfig() {
- ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
- configurationBuilder.setDebugEnabled(true)
- .setOAuthConsumerKey(" ") //you will need to use your own Twitter Dev credentials.
- .setOAuthConsumerSecret(" ")
- .setOAuthAccessToken(" ")
- .setOAuthAccessTokenSecret(" ");
- twitterStream = new TwitterStreamFactory(configurationBuilder.build()).getInstance();
- println("CONFIGS ARE DONE");
- }
- //get a number from the tweet
- public String getDistanceFrom (String theTweet)
- {
- if(theTweet == null || theTweet.isEmpty()) {return "0";}
- StringBuilder stringBuilder = new StringBuilder();
- boolean foundDistance = false;
- for(char c : theTweet.toCharArray()){
- if(Character.isDigit(c)){
- stringBuilder.append(c);
- foundDistance = true;
- } else if (foundDistance) {break;}
- }
- return stringBuilder.toString();
- }
- public void stopMovementAfter(int actualDistance)
- {
- delay(actualDistance);
- serial.write(stopMoving());
- println("Distance covered...skirr");//I shouldn't have this here
- }
- public void listenOnTweets()
- {
- StatusListener statusListener = new StatusListener(){
- @Override
- public void onException(Exception ex) {
- System.out.println("ERRRORR: " + ex);
- }
- @Override
- public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
- System.out.println("LIMIT: " + numberOfLimitedStatuses);
- }
- @Override
- public void onStatus(Status status) {
- String theStatus = status.getText().toUpperCase();
- //the distance
- try { distance = Integer.parseInt(getDistanceFrom(theStatus));
- } catch (NumberFormatException ex) {
- System.out.println("OOPSS...numbers game: " + ex);
- }
- // the most magic happens on line 84 and 85
- calculatedDistance = (distance/28.571) * 1000; //28.. is the estimated speed of the motors on full throttle
- Integer timeLapse = Integer.valueOf((int) Math.round(calculatedDistance));//T = D/V * 1000 seconds
- System.out.println("\n\n-------------NEW TWEET-----------------");
- System.out.println("\nTWEET: " + status.getText() + " BY: " + status.getUser().getScreenName());
- if (theStatus.contains(directions[0]))
- {
- println("\n\n--------Extracted Data-----------");
- println("Direction: " + directions[0] + "\nDistance: " + distance + "\nTravel Time: " + timeLapse + " milliseconds");
- serial.write(moveForward());
- stopMovementAfter(timeLapse);
- } else if(theStatus.contains(directions[1]))
- {
- println("Direction: " + directions[0] + "\nDistance: " + distance + "\nTravel Time: " + timeLapse + " milliseconds");
- serial.write(moveLeft());
- stopMovementAfter(timeLapse);
- } else if(theStatus.contains(directions[2]))
- {
- println("Direction: " + directions[0] + "\nDistance: " + distance + "\nTravel Time: " + timeLapse + " milliseconds");
- serial.write(moveRight());
- stopMovementAfter(timeLapse);
- } else if(theStatus.contains(directions[3]))
- {
- println("Direction: " + directions[0] + "\nDistance: " + distance + "\nTravel Time: " + timeLapse + " milliseconds");
- serial.write(moveBackward());
- stopMovementAfter(timeLapse);
- } else {
- System.out.println("CAN'T READ DIRECTION & Distance (maybe)");
- }
- System.out.println("\n-------------END TWEET-----------------");
- }
- @Override
- public void onStallWarning(StallWarning warning) {
- System.out.println("STALLING: " + warning);
- }
- @Override
- public void onScrubGeo(long userId, long upToStatusId) {
- System.out.println("USER: " + userId + " : " + upToStatusId);
- }
- @Override
- public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
- System.out.println("DELETING STATUS: " + statusDeletionNotice);
- }
- };
- //the magic is here..a bit of it
- FilterQuery filterQuery = new FilterQuery();
- String keyWord = "#redbullbasement"; //you can use any keyword of choice.
- filterQuery.track(keyWord);
- twitterStream.addListener(statusListener);
- twitterStream.filter(filterQuery);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement