Skip to content

Instantly share code, notes, and snippets.

@jonschreiber
Created October 28, 2015 18:50
Show Gist options
  • Save jonschreiber/77fdb85318cc9ae08bba to your computer and use it in GitHub Desktop.
Save jonschreiber/77fdb85318cc9ae08bba to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'net/http'
require 'open-uri'
require 'json'
require "csv"
print "Chute shortcut: "
PATH_NAME = File.expand_path(File.dirname(__FILE__))
csv_output_filename = 'album_data_export.csv'
chute_shortcut = gets.chomp
# #ineednature
# chute_shortcut = 'aJZvqdem'
per_page = 100
page = 0
max_id = nil
assets = []
oauth_token = 'YOUR_TOKEN_HERE'
CSV.open(csv_output_filename, "ab") do |csv|
csv << ["ID", "created_at", "updated_at", "asset shortcut", "caption", "source", "service", "username", "metadata", "tags"]
end
begin
page = page + 1
response = Net::HTTP.get_response(URI("http://api.getchute.com/v2/albums/#{chute_shortcut}/assets?per_page=#{per_page}&oauth_token=#{oauth_token}" + (max_id ? "&max_id=#{max_id}" : "")))
unless response.code == '200'
if response.code == '401'
puts "Error! Invalid auth token."
else
puts "Invalid request."
end
puts response.body
exit
end
puts "Downloading assets... page #{page}"
assets = JSON.parse(response.body)['data']
CSV.open(csv_output_filename, "ab") do |csv|
assets.each do |asset|
begin
next unless asset['source']['import_url']
csv << [
asset['id'],
asset['created_at'],
asset['updated_at'],
asset['shortcut'],
asset['caption'],
asset["source"],
asset["service"],
asset["username"],
asset["metadata"],
asset["tags"]
]
rescue StandardError
puts "Cannot download asset with id=#{asset['id']}, missing data"
end
end
end
max_id = assets.last['chute_asset_id'] if assets.last
end while assets.size == per_page
puts "Finished! #{(page-1)*per_page + assets.size} assets downloaded."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment