dundo.farm/db/seeds.rb

36 lines
1.1 KiB
Ruby

require 'instagram_basic_display_api'
require 'sinatra/activerecord'
require 'net/http'
current_token = File.open('/home/steve/.ig_token', &:readline)
refresh_uri = URI('https://graph.instagram.com/refresh_access_token')
refresh_params = { grant_type: 'ig_refresh_token', access_token: current_token}
refresh_uri.query = URI.encode_www_form(refresh_params)
response = Net::HTTP.get_response(refresh_uri)
token = JSON.parse(response.body)['access_token']
File.write('/home/steve/.ig_token', token)
client = InstagramBasicDisplayAPI.client(access_token: token)
media = client.user_recent_media[:data].reduce([]) do |media, media_item|
if media_item[:media_type] == 'CAROUSEL_ALBUM'
media.concat client.media_children(media_item[:id])[:data]
media
else
media.append media_item
end
end
media.each do |media_item|
model = IGMedia.find_or_create_by(id: media_item[:id])
model.update(
media_url: media_item[:media_url],
media_type: media_item[:media_type],
thumbnail_url: media_item[:thumbnail_url],
permalink: media_item[:permalink],
caption: media_item[:caption],
timestamp: DateTime.parse(media_item[:timestamp])
)
end