Script Instagram API da Shell

Ciao ragazzi, sto provando a utilizzare le API di Instagram per fare uno
script che funzioni solo da shell.
Sto incontrando due problemi:

  1. Non riesco/non so come fare una chiamata ad un url leggere un URL di
    risposta da dove mi ricavo il “code” e per poi ottenere il token
  2. Non riesco a capire dove sbaglio per ottenere la lista degli userd id
    di chi seguo (follow) su instagram.

Di seguito vi copio il codice:

instagram_from_shell.rb ------------------------------------------

require ‘oauth2’
require “instagram”

puts “Write your CONSUMER KEY:”
@consumer_key = gets.strip
puts “Write your CONSUMER SECRET:”
@consumer_secret = #gets.strip

CALLBACK_URL = “http://localhost:9393/oauth/callback

client = OAuth2::Client.new(@consumer_key, @consumer_secret, {
:site => “http://instagram.com/”,
:request_token_path => “/oauth/request_token”,
:access_token_path => “/oauth/access_token”,
:authorize_path => “/oauth/authenticate?response_type=code”,})

???

Come e dove inserisco le credenziali (username e psw) per accedere al

servizio e autorizzare l’app?

???

autorizzare l’app

uri = client.auth_code.authorize_url(:redirect_uri => CALLBACK_URL)

???

Come faccio a leggere l’url di risposta con il “code”?

???

estrapolo il “code” dall’ url

uri =
URI(“http://localhost:9393/oauth/callback?code=xxxxxxxxxxxxxxxxxxxxxxxxxxx”)
code = uri.query.split(“=”).last

???

con il “code” devo chiedere il token e qui NON ho trovato il modo per

avercelo

@access_token = client.auth_code.get_token(code, :redirect_uri =>

CALLBACK_URL )) #non corretto

???

Instagram.configure do |config|
config.client_id = @consumer_key
config.client_secret = @consumer_secret
config.access_token = @access_token
end

Funzione/metodo

def get_followers_id

following_ids = []
next_cursor = 0

while next_cursor
page = Instagram.user_follows(:cursor => next_cursor).each do |user|
following_ids << user.id
end
puts “valore next_cursor = #{page.pagination.next_cursor} , n° id
presenti = #{page.count} e #{following_ids.count} id salvati”
next_cursor = page.pagination.next_cursor
end

puts(“saved #{following_ids.count} users id”)

end

--------------------------------------------------------------

Se faccio partire la funzione/metodo la console mi da questo risultato

valore next_cursor = 1356908804645 , n id presenti = 50 e 50 id salvati
valore next_cursor = 1353145392700 , n id presenti = 50 e 100 id salvati
valore next_cursor = 1347420191755 , n id presenti = 49 e 149 id salvati
valore next_cursor = 1330765947348 , n id presenti = 29 e 178 id salvati
valore next_cursor = 1311898349798 , n id presenti = 4 e 182 id salvati
valore next_cursor = 1299688462476 , n id presenti = 25 e 207 id salvati
valore next_cursor = , n id presenti = 17 e 224 id salvati

Non riesco a capire perchè:

  1. Io su Instagram seguo 321 utenti, invece qui me ne da solo 224 tot.
  2. perchè a volte le pagine sono composte da 50 risultati mentre alcune
    ne hanno di meno (addirittura 4)

Avete mai usato le API di Instagram? Anche a voi avete notato questa
cosa?
Grazie in anticipo

Alberto (@albybisy)