Created
February 3, 2014 22:17
-
-
Save petrbela/8793592 to your computer and use it in GitHub Desktop.
Remove broken assets from Chute album.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'FileUtils' | |
require 'net/http' | |
require 'open-uri' | |
require 'parallel' | |
require 'rest_client' | |
require 'json' | |
print "Chute ID: " | |
chute_id = gets.chomp | |
print "Auth Token: " | |
auth_token = gets.chomp | |
per_page = 50 | |
page = 0 | |
url = "https://api.getchute.com/v2/albums/#{chute_id}/assets?per_page=#{per_page}&oauth_token=#{auth_token}" | |
assets = [] | |
broken_assets = [] | |
begin | |
page = page + 1 | |
response = URI.parse(url).read | |
puts "Checking assets... page #{page}" | |
assets = JSON.parse(response)['data'] | |
Parallel.map(assets, :in_threads => 8) do |asset| | |
begin | |
open(asset['url']).read | |
rescue StandardError => e | |
puts "Broken asset: #{asset['id']} -> #{asset['url']} -> #{e}" | |
broken_assets << asset['id'] | |
end | |
end | |
url = JSON.parse(response)['pagination']['next_page'] | |
end while assets.size == per_page and url | |
if broken_assets.size == 0 | |
puts "No broken assets found." | |
exit | |
end | |
puts "#{(broken_assets.size)} broken assets in total." | |
begin | |
puts "What would you like to do?" | |
puts " 'd': delete all broken assets" | |
puts " 'p': print broken asset ids" | |
puts " 'x': exit the script" | |
print "Your choice [d/p/x]: " | |
cont = gets.chomp | |
puts broken_assets.join(',') if cont.downcase == 'p' | |
exit if cont.downcase == 'x' | |
end while cont.downcase != 'd' | |
puts "Deleting assets, please wait..." | |
RestClient.post "https://api.getchute.com/v2/albums/#{chute_id}/remove_assets?oauth_token=#{auth_token}", { asset_ids: broken_assets }.to_json, content_type: :json | |
puts "Assets were successfully removed." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment