scattered, shimmering, finding other approximations
This commit is contained in:
parent
2f00bea974
commit
7a01c6f55e
2 changed files with 174 additions and 2 deletions
|
@ -1,2 +1,3 @@
|
||||||
2014-photo-analysis
|
### 2014-photo-analysis
|
||||||
===================
|
|
||||||
|
A summary of the photset [02014 (365)](https://www.flickr.com/photos/zzkt/sets/72157639545946114/) using the Flickr API. (previous versions can be found for [02013 (365)](https://github.com/zzkt/2013-photo-analysis), [2012](https://www.flickr.com/photos/zzkt/sets/72157628790897103/) and [2011](https://www.flickr.com/photos/zzkt/sets/72157625725814116/)
|
||||||
|
|
171
shimmering.rb
Normal file
171
shimmering.rb
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
# -*- mode: enh-ruby encoding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Image and metadata analysis for photoset 02014 (365)
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 FoAM vzw
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# as published by the Free Software Foundation; either version 2
|
||||||
|
# of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# Authors
|
||||||
|
# - nik gaffney <nik@fo.am>
|
||||||
|
#
|
||||||
|
# Requirements
|
||||||
|
# - flickraw
|
||||||
|
#
|
||||||
|
# Commentary
|
||||||
|
# - Flickr docs and reference http://www.rubydoc.info/github/hanklords/flickraw
|
||||||
|
#
|
||||||
|
# Changes
|
||||||
|
# 2014-12-07
|
||||||
|
# - mostly working port from racket
|
||||||
|
|
||||||
|
require 'flickraw'
|
||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
CONFIG = YAML.load_file("config.yml")
|
||||||
|
|
||||||
|
FlickRaw.api_key = CONFIG['api_key']
|
||||||
|
FlickRaw.shared_secret = CONFIG['shared_secret']
|
||||||
|
|
||||||
|
flickr.access_token = CONFIG['access_token']
|
||||||
|
flickr.access_secret = CONFIG['access_secret']
|
||||||
|
|
||||||
|
#FlickRaw.check_certificate = false #assume no malevolence
|
||||||
|
|
||||||
|
# specifics
|
||||||
|
|
||||||
|
photoset_02014 = '72157639545946114'
|
||||||
|
zzkt = {"id"=>"52731283@N06", "username"=>"zzkt"}
|
||||||
|
|
||||||
|
# {pre}authentication (via https://github.com/hanklords/flickraw)
|
||||||
|
|
||||||
|
login = flickr.test.login
|
||||||
|
puts "You are now authenticated as #{login.username}"
|
||||||
|
|
||||||
|
# photsets
|
||||||
|
|
||||||
|
def get_photoset (set_id)
|
||||||
|
flickr.photosets.getPhotos(:photoset_id => set_id, :extras => 'views,tags,date_taken')
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_photo_list (set_id)
|
||||||
|
h = flickr.photosets.getPhotos(:photoset_id => set_id, :extras => 'views,tags,date_taken').to_hash
|
||||||
|
return h.assoc("photo")[1] # => array of hashes or flickr::responses
|
||||||
|
end
|
||||||
|
|
||||||
|
# sorted photolist of photo titles and views
|
||||||
|
|
||||||
|
def sort_by_views (photo_list)
|
||||||
|
sorted = photo_list.sort_by { |photo| photo.views.to_i }
|
||||||
|
return sorted
|
||||||
|
end
|
||||||
|
|
||||||
|
# extract various info re. favourites
|
||||||
|
|
||||||
|
def favourites (photo)
|
||||||
|
favs = Array.new
|
||||||
|
flickr.photos.getFavorites(photo_id: photo.id).to_hash.assoc('person')[1].map do
|
||||||
|
|fav| favs << fav.username
|
||||||
|
end
|
||||||
|
return favs
|
||||||
|
end
|
||||||
|
|
||||||
|
# titles, contexts, views and favourites from a photoset. (e.g photo 15740214669)
|
||||||
|
|
||||||
|
def get_sets (photo)
|
||||||
|
sets = Array.new
|
||||||
|
response=flickr.photos.getAllContexts(photo_id: photo.id).to_hash.assoc('set')
|
||||||
|
if (not response.nil?)
|
||||||
|
response[1].map do
|
||||||
|
|cx| sets << cx.title
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return sets
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_groups (photo)
|
||||||
|
groups = Array.new
|
||||||
|
response=flickr.photos.getAllContexts(photo_id: photo.id).to_hash.assoc('pool')
|
||||||
|
if (not response.nil?)
|
||||||
|
response[1].map do
|
||||||
|
|cx| groups << cx.title
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return groups
|
||||||
|
end
|
||||||
|
|
||||||
|
def titles_and_views (photo_list)
|
||||||
|
photo_list.map do
|
||||||
|
|photo| puts "#{photo.title} views:#{photo.views}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# interestingness
|
||||||
|
|
||||||
|
def most_interesting (user_id)
|
||||||
|
flickr.photos.search(:user_id => user_id,
|
||||||
|
:sort =>'interestingness-desc',
|
||||||
|
:min_taken_date =>'2014-01-01 00:00:00',
|
||||||
|
:per_page => '500',
|
||||||
|
:extras => 'views')
|
||||||
|
end
|
||||||
|
|
||||||
|
# extract tags and tag counts
|
||||||
|
|
||||||
|
def photoset_tags(set_id)
|
||||||
|
tag_count = Hash.new(0)
|
||||||
|
flickr.photosets.getPhotos(photoset_id: set_id, extras: 'views,tags,date_taken').photo.map do
|
||||||
|
|photo| photo.tags.split(" ").each { |name| tag_count[name] += 1 }
|
||||||
|
end
|
||||||
|
return tag_count
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### # # # ## ## ### #
|
||||||
|
#
|
||||||
|
# output / testing
|
||||||
|
#
|
||||||
|
## # ## # #### # #
|
||||||
|
|
||||||
|
|
||||||
|
def exfoliate (set_id)
|
||||||
|
flickr.photosets.getPhotos(photoset_id: set_id, extras: 'views,tags,date_taken').photo.map do
|
||||||
|
|photo|
|
||||||
|
puts "title: #{photo.title} \nviews: #{photo.views}"
|
||||||
|
puts "favourited by: #{favourites(photo)}"
|
||||||
|
puts "in sets: #{get_sets(photo)}"
|
||||||
|
puts "in groups: #{get_groups(photo)}"
|
||||||
|
puts "/// / /"
|
||||||
|
end
|
||||||
|
puts "tags by freq: #{photoset_tags(set_id)}"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def photoset_urls(set_id)
|
||||||
|
flickr.photosets.getPhotos(photoset_id: set_id).photo.map do
|
||||||
|
|photo| FlickRaw.url_b(photo)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
exfoliate('72157639545946114') # 2014
|
||||||
|
|
||||||
|
|
||||||
|
######### # # # # #
|
||||||
|
#
|
||||||
|
# unported, testing and troubled.. .
|
||||||
|
#
|
||||||
|
#### # # # # #
|
Loading…
Reference in a new issue