Skip to content

Instantly share code, notes, and snippets.

@rtanglao
Created September 9, 2010 04:02
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rtanglao/571353 to your computer and use it in GitHub Desktop.
Save rtanglao/571353 to your computer and use it in GitHub Desktop.
get Roland's Gastown's photos
#!/usr/bin/env ruby
require 'json'
require 'net/http'
require 'pp'
require 'Time'
require 'uri'
require 'parseconfig'
flickr_config = ParseConfig.new('flickr.conf').params
api_key = flickr_config['api_key']
user_id = flickr_config['user_id']
# get photos taken before september 1, 2010
sep12010 = Time.local(2010, 9, 1, 0, 0) # may want Time.utc if you don't want local time
max_taken_date = sep12010.to_i.to_s
woe_id = "26332810" # Gastown http://www.flickr.com/places/info/26332810
tags = "cameraphone%2Cvancouver"
content_type = "1" # photos only
per_page = "250" # geo photos limited by flickr to only 250 per page
extras="original_format,date_taken,geo,tags,o_dims,views,url_sq,url_t,url_s,url_m,url_o" # get all the meta data!
page = 1
def getResponse(url)
http = Net::HTTP.new("api.flickr.com",80)
request = Net::HTTP::Get.new(url)
resp = http.request(request)
if resp.code != "200"
$stderr.puts "Error: #{resp.code} from:#{url}"
raise JSON::ParserError # This is a kludge. Should return a proper exception instead!
end
result = JSON.parse(resp.body)
return result
end
photos_to_retrieve = 250
first_page = true
photos_per_page = 0
while photos_to_retrieve > 0
search_url = "/services/rest/?method=flickr.photos.search&api_key="+api_key+"&format=json&nojsoncallback=1&content_type="+content_type+"&tags="+tags+"&woe_id="+woe_id+"&per_page="+per_page+"&user_id="+user_id+"&extras="+extras+"&max_taken_date="+max_taken_date+"&page="+page.to_s
photos_on_this_page = getResponse(search_url)
if first_page
first_page = false
photos_per_page = photos_on_this_page["photos"]["perpage"].to_i
photos_to_retrieve = photos_on_this_page["photos"]["total"].to_i - photos_per_page
else
photos_to_retrieve -= photos_per_page
end
page += 1
$stderr.puts photos_on_this_page
print JSON.generate(photos_on_this_page)
end
@rtanglao
Copy link
Author

you can find the output of this program here:
http://dl.dropbox.com/u/361757/gastownphotos.stdout

@rtanglao
Copy link
Author

rtanglao commented Jan 4, 2022

and dropbox broke the link! the link is now:
https://www.dropbox.com/s/5x1i9h60hzdbrch/gastownphotos.stdout?dl=0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment