Ruby tweetstream gem
Access to the Twitter streaming API
notes
This gem looks to be a possible solution for connecting Max to Google Maps. I’m guessing that the code will look very similar to the ruby code which uses the twitter gem for status updates.
https://github.com/tweetstream/tweetstream
Here’s a blog entry:
http://thechangelog.com/tweetstream-easily-access-the-twitter-streaming-api/
Client documentation:
http://rdoc.info/github/intridea/tweetstream/TweetStream/Client
Here’s the Twitter documentation on whats getting returned:
https://dev.twitter.com/docs/platform-objects/tweets
Google Maps auto refresh
Getting started with Google Maps
Installed working example at:
http://zerokidz.com/gmap/map-simple.html
The Google static map API:
https://developers.google.com/maps/documentation/staticmaps/#quick_example
The tracks API:
https://developers.google.com/maps/documentation/tracks/
Simple Google Maps example from Jayway:
http://www.jayway.com/2012/04/02/simple-google-maps-api-example/
Yet another example using geolocation:
http://www.sitepoint.com/working-with-geolocation-and-google-maps-api/
Got this one working, sort of, here:
http://zerokidz.com/gmap/geolocation.html
Ruby geocoder
Control Max patches via websites
Scan the entire Internet in 6 minutes
A Mass IP port scanner.
Please read the warning before you try it…
By Robert David Graham
Max Twitter client using ruby
Send and receive Tweets using Max via OSC to a background ruby server.
An advantage of this method is that both the patch and the server are compact and easy to understand. The Max patch does things in a Max way. And likewise with the ruby scripts.
download
https://github.com/tkzic/internet-sensors
folder: twitter-ruby
files
Max
- twitter-client.maxpat
ruby
- twitter-server-send.rb (for sending Tweets)
- twitter-server-get.rb (for receiving Tweets)
ruby gems
The ruby script requires installation of the following gems
- json
- osc-ruby
For example:
# sudo gem install twitter
Twitter authorization
In addition to having a Twitter account, you will need to set up a Twitter application from the developer site here:
Good instructions on how to do this can be found in this stackoverflow.com post under this heading: So you want to use the Twitter v1.1 API?
When you get to step 5 – in the instructions – instead of writing your own code, just use a text editor to copy your access tokens into these ruby programs:
- twitter-server-send.rb
- twitter-server-get.rb
Replace the strings in this line of code by copying and pasting the appropriate ones from your Twitter application:
twitterClient = Twitter::REST::Client.new do |config| config.consumer_key = "mqQtoYh16343tDFG3BK7QQ" config.consumer_secret = "X0KexjlK49fhhrnn9EztapZfATCQqWCc5fXVJH2pE" config.oauth_token = "205589709-5krgh9FR3KkLGRDnewiU7GKKBMA6i2La84c" config.oauth_token_secret = "LNARAeooN2vkklkF006GRdihQ5D8YYkm8dYvEs68M" end
instructions
(note: currently running with ruby version 2.0) Display your ruby version by typing: ruby –version
Sending Tweets
- Open the Max patch: twitter-client.maxpat
- In a terminal window run the ruby script:
# ./twitter-server-send.rb
- In the Max patch, type in a Tweet. Press the green button to send.
- When you have tweeted enough, end the ruby server program by typing <ctrl-c>
Receiving Tweets
- Open the Max patch: twitter-client.maxpat
- In a terminal window run the ruby script:
- From Twitter, send a Tweet to the user name embedded in the server
# ./twitter-server-get.rb
Both ruby servers can run at the same time.
What’s next?
- Parse incoming Tweets into various components
- Combine the 2 Ruby servers
revision history
- 5/21/2014 – refactored app names. Added receive server
- 5/19/2004 – moved to twitter-ruby folder
- 1/18/2014 – minor fixes to ruby server for current ruby version 2.0
- 9/7/2013 – uses oauth to communicate directly to Twitter from ruby
Send Tweets with a Little Tikes piano
This project uses the Max fzero~ object to detect which key of the piano gets pressed and send a pre-written Tweet like “Signs point to yellow” based on the color of the key.
It works with the Internet sensors project that sends Tweets from Max using Ruby. https://reactivemusic.net/?p=7013
download
https://github.com/tkzic/internet-sensors
folder: twitter-ruby
instructions
- Follow instructions here to send Tweets using Max and Ruby: https://reactivemusic.net/?p=7013
- At this point you will have a Max patch open and a Ruby server running in a terminal window.
- Now open little-tikes.maxpat
- Carefully play individual tones on the Little Tikes piano.
notes
fzero~ is probably not the best choice for this. It doesn’t work above 2500hz which means it won’t probably distinguish between the lowest and highest key which are an octave apart. In fact the Little-Tikes piano, for a pitched instrument, is difficult to analyze. Due to relatively equal weight of partials to fundamental, and the quick decay. Other choices, would be pitch~ (Jehan) fiddle~ (Pucket…)
I remember seeing an Arduino project where somebody did this in reverse – actually built a motorized striker to play the piano)
… insert link to video here…
Tweet from Max with ruby
Update 6/2014: working version here: https://reactivemusic.net/?p=7013
notes
The zapier.com trigger method of sending tweets from Max is limited by number of tweets and sync rate. So it would be nice to set up another intermediary server program in ruby or php which eliminates the middle-man and just sends tweets directly.
Or you could use the mxj searchTweet program, which has been updated to do this on the search side.
twitter gem
update: Got it working with this gem: https://github.com/sferik/twitter. Its much easier than dealing with xively.
docs: http://rdoc.info/gems/twitter
how to destroy a tweet: http://stackoverflow.com/questions/10640811/twitter-gem-how-to-get-the-id-of-a-new-tweet
how to get a timeline: http://bobbyprabowo.wordpress.com/2010/01/01/simple-twitter-gem-tutorial/
example of error handling code:
MAX_ATTEMPTS = 3 num_attempts = 0 begin num_attempts += 1 retweets = Twitter.retweeted_by_user("sferik") rescue Twitter::Error::TooManyRequests => error if num_attempts <= MAX_ATTEMPTS # NOTE: Your process could go to sleep for up to 15 minutes but if you # retry any sooner, it will almost certainly fail with the same exception. sleep error.rate_limit.reset_in retry else raise end end
Another useful SO post: http://stackoverflow.com/questions/16618037/twitter-rate-limit-hit-while-requesting-friends-with-ruby-gem/16620639#16620639