jeudi 31 décembre 2009

La suite des manipulations des API #twitter et #Ruby

Dans ce post j'explique comment récupérer les informations publiques d'un utilisateur sur twitter.
Pour cela j'utilise l'API :
"http://twitter.com/users/show.json?user_id=nnnnn"
.

Dans le post précedent j'exposais comment faire correspondre un nom twitter avec l'user_id.



germanlinux: "25286531"
woork: "9689232"


Ces informations sont stockées dans un fichier au format yaml et le programme suivant va l'exploiter comme ceci :

require 'rubygems'
require 'json'
require 'tweet'
require 'net/http'
require 'uri'

twitters = open('radar.yaml') do |input|
YAML.load input
end
my_array = Array.new
twitters.each_value do |id_user|
my_id_user= id_user.to_i
cible = "http://twitter.com/users/show.json?user_id=" + id_user
response = Net::HTTP.get URI.parse(cible)
jo= JSON.parse(response)
my_tweet=Tweet.new do |t|
t.tweet = jo
end
ma_chaine= my_tweet.resume(['screen_name','name','friends_count','followers_count','statuses_count','created_at','profile_image_url?','url?','verified'])
puts ma_chaine
end



La méthode tweet#resume va faire un appel de méthode éponyme pour chaque clé.


def resume(fields)
my_string=""
fields.each do |a_field|
my_string+= self.send(a_field).to_s
my_string+=","
end
my_string
end

Le point d'interrogation ajouté à un nom de méthode permet de retourner un booléen sur la présence ou non d'une valeur associée à une clé. J'implemente ce sucre de syntaxe comme ceci :

def method_missing(m, *args, &block)

meth= "#{m}"
if meth[-1].chr == '?' then
meth.slice!(-1)
if @tweet[meth] then true.to_s else false.to_s end
else
@tweet["#{m}"]
end

end


Les Clés disponibles sont :

#profile_sidebar_fill_color ==> e0ff92
#name
#profile_background_tile ==> false
#profile_sidebar_border_color ==> 87bc44
#created_at ==> Sat Jun 27 12:59:27 +0000 2009
#location ==> Paris
#profile_image_url ==> http://a3.twimg.com
#profile_link_color ==> 0000ff
#url ==> http://
#favourites_count ==> 0
#utc_offset ==> -10800
#id ==> 51431032
#followers_count ==> 565
#protected ==> false
#profile_text_color ==> 000000
#profile_background_color ==> 9ae4e8
#geo_enabled ==> false
#verified ==> false
#notifications ==> false
#description ==>
#time_zone ==> Greenland
#friends_count ==> 5
#statuses_count ==> 0
#profile_background_image_url ==> http://s.twimg.com/a/1261519751/images/themes/theme1/bg.png
#screen_name ==> Er
#following ==> false

L'excécution du programme donne:


germanlinux,eric german,32,29,168,Thu Mar 19 13:01:16 +0000 2009,true,true,false,
Woork,Antonio Lupetti,133,12952,135,Thu Oct 25 17:38:34 +0000 2007,true,true,false

Il ne reste plus qu'a exporter ces lignes dans un tableur pour s'amuser à faire des statistiques.

Aucun commentaire: