fccc 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 79bc017cdb587c605747522ec0b5f1986b61b511
4
+ data.tar.gz: a2dd7933534c9859a4760a29c381bd49137e0e86
5
+ SHA512:
6
+ metadata.gz: bc62dcfc92434dc2da86ed4961879c73ba360a035c88a560d3b511edda582baf5b0a0ca0f50fc6506377deb77c6a2f42a6eaea7ec287b94d5e2b2699fa8b05ce
7
+ data.tar.gz: 1d432d0108f552faa6231a78e3a546110c542855aa0d5d14a038c3082376540f52a618cd5aa6e7ebca084c0592c53cd7935845c08d290c34fe507d058b179fe4
data/.gitignore ADDED
@@ -0,0 +1,113 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/
9
+ Rakefile
10
+ LiCENSE.txt
11
+ /spec/reports/
12
+ /tmp/
13
+ *.jpg
14
+ .rspec
15
+ .travis.yml
16
+ /release/
17
+ credentials.yml
18
+
19
+ # Created by https://www.gitignore.io/api/vim,ruby,osx
20
+
21
+ ### Vim ###
22
+ # swap
23
+ [._]*.s[a-w][a-z]
24
+ [._]s[a-w][a-z]
25
+ # session
26
+ Session.vim
27
+ # temporary
28
+ .netrwhist
29
+ *~
30
+ # auto-generated tag files
31
+ tags
32
+
33
+
34
+ ### Ruby ###
35
+ *.gem
36
+ *.rbc
37
+ /.config
38
+ /coverage/
39
+ /InstalledFiles
40
+ /pkg/
41
+ /spec/reports/
42
+ /spec/examples.txt
43
+ /test/tmp/
44
+ /test/version_tmp/
45
+ /tmp/
46
+
47
+ # Used by dotenv library to load environment variables.
48
+ # .env
49
+
50
+ ## Specific to RubyMotion:
51
+ .dat*
52
+ .repl_history
53
+ build/
54
+ *.bridgesupport
55
+ build-iPhoneOS/
56
+ build-iPhoneSimulator/
57
+
58
+ ## Specific to RubyMotion (use of CocoaPods):
59
+ #
60
+ # We recommend against adding the Pods directory to your .gitignore. However
61
+ # you should judge for yourself, the pros and cons are mentioned at:
62
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
63
+ #
64
+ # vendor/Pods/
65
+
66
+ ## Documentation cache and generated files:
67
+ /.yardoc/
68
+ /_yardoc/
69
+ /doc/
70
+ /rdoc/
71
+
72
+ ## Environment normalization:
73
+ /.bundle/
74
+ /vendor/bundle
75
+ /lib/bundler/man/
76
+
77
+ # for a library or gem, you might want to ignore these files since the code is
78
+ # intended to run in multiple environments; otherwise, check them in:
79
+ # Gemfile.lock
80
+ # .ruby-version
81
+ # .ruby-gemset
82
+
83
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
84
+ .rvmrc
85
+
86
+
87
+ ### OSX ###
88
+ *.DS_Store
89
+ .AppleDouble
90
+ .LSOverride
91
+
92
+ # Icon must end with two \r
93
+ Icon
94
+
95
+
96
+ # Thumbnails
97
+ ._*
98
+
99
+ # Files that might appear in the root of a volume
100
+ .DocumentRevisions-V100
101
+ .fseventsd
102
+ .Spotlight-V100
103
+ .TemporaryItems
104
+ .Trashes
105
+ .VolumeIcon.icns
106
+ .com.apple.timemachine.donotpresent
107
+
108
+ # Directories potentially created on remote AFP share
109
+ .AppleDB
110
+ .AppleDesktop
111
+ Network Trash Folder
112
+ Temporary Items
113
+ .apdisk
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.1
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fccc.gemspec
4
+ # gemspec
5
+
6
+ gem 'thor', '~> 0.19.1'
7
+ gem 'flickraw', '~> 0.9.8'
8
+ gem 'rmagick', '~> 2.15', '>= 2.15.4'
9
+ gem 'random-word', '~> 1.3'
data/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # fccc - Flickr Collage Coding Challenge
2
+
3
+ [![Code Climate](https://codeclimate.com/github/AkihikoITOH/fccc/badges/gpa.svg)](https://codeclimate.com/github/AkihikoITOH/fccc)
4
+
5
+ ## Features
6
+
7
+ ### Basic
8
+ Ruby command line application that
9
+
10
+ * [x] accepts a list of search keywords as arguments
11
+ * [x] queries the Flickr API for the top-rated image for each keyword
12
+ * [x] downloads the results
13
+ * [x] crops them rectangularly
14
+ * [x] assembles a collage grid from ten images and
15
+ * [x] writes the result to a user-supplied filename
16
+ * [x] adds suffix to filename if user-supplied one already exists.
17
+ * [x] If given less than ten keywords, or if any keyword fails to result in a match, retrieves random words from a dictionary source and repeats as necessary until it has gathered ten images.
18
+
19
+ ### Additional features
20
+
21
+ * [x] Wrapped in a Gem and installable from Github repo.
22
+ * [x] You can provide keywords either as arguments or from a file.
23
+
24
+ ## Installation
25
+
26
+ ### Requirements
27
+
28
+ - Ruby `2.2.x` or `2.3.x`
29
+ * `apt-get install ruby ruby-dev` (Ubuntu)
30
+ - [ImageMagick](http://www.imagemagick.org/script/binary-releases.php)
31
+ * `brew install imagemagick && brew install pkg-config` (Mac OSX)
32
+ * `apt-get install imagemagick libmagickcore-dev libmagickwand-dev` (Ubuntu)
33
+ - [Bundler](http://bundler.io/)
34
+ * `gem install bundler`
35
+
36
+ ### Install fccc
37
+ There are three ways to install fccc:
38
+
39
+ - Install from Github (Recommended)
40
+ - Install locally
41
+ - Just as a Ruby script
42
+
43
+ #### Install from Github
44
+ First, create `Gemfile` in your current directory.
45
+ `Gemfile` should be like this.
46
+ ```ruby
47
+ # Gemfile
48
+ source 'https://rubygems.org'
49
+ gem 'fccc', :git => 'http://github.com/AkihikoITOH/fccc.git'
50
+ ```
51
+
52
+ Then, run
53
+ ```bash
54
+ $ bundle install
55
+ ```
56
+ to install fccc.
57
+
58
+ #### Install locally
59
+ You can also build gem and install it locally.
60
+ ```bash
61
+ $ git clone https://github.com/AkihikoITOH/fccc.git
62
+ $ cd fccc && gem build fccc.gemspec
63
+ $ gem install fccc-0.1.0.gem
64
+ ```
65
+
66
+ #### Just as a ruby script
67
+ You can also use fccc by simply downloading file from Github.
68
+ ```bash
69
+ $ git clone https://github.com/AkihikoITOH/fccc.git
70
+ $ cd fccc
71
+ $ ruby lib/fccc.rb
72
+ ```
73
+
74
+ ## Usage
75
+
76
+ First, you need to put `credentials.yml` containing `api_key` and `shared_secret` of Flickr API in your current directory(in which you will run `fccc` command).
77
+
78
+ `credentials.yml` should be like this.
79
+ ```yaml
80
+ api_key: yourapikeyhere
81
+ shared_secret: yoursecretkeyhere
82
+ ```
83
+
84
+ ```bash
85
+ # As a command line application
86
+ $ fccc collage [keyword1, keyword2, ..., keyword10] --output [output_filename]
87
+ # If it doesn't work, you can try another way
88
+ $ bundle exec fccc collage [keyword1, keyword2, ..., keyword10] --output [output_filename]
89
+
90
+ # As a Ruby script
91
+ $ cd fccc/
92
+ $ ruby lib/fccc.rb collage keyword1, keyword2, ..., keyword10 --output filename
93
+ ```
94
+
95
+ ### Example
96
+ ```bash
97
+ # Basic
98
+ $ fccc collage dog, cat, lion, tiger, beetle, bee, salmon, mackerel, Kyoto, Hamburg --output mycollage
99
+
100
+ # If you have a list of keywords in a file, you can use it as input instead of giving them as arguments.
101
+ $ fccc collage --input keywords.txt --credential credentials.yml --output mycollage
102
+ ```
103
+
104
+ `keywords.txt` should be like this.
105
+ ```
106
+ dog
107
+ cat
108
+ lion
109
+ tiger
110
+ beetle
111
+ bee
112
+ salmon
113
+ mackerel
114
+ Kyoto
115
+ Hamburg
116
+ ```
117
+
118
+ ## License
119
+
120
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "fccc"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/fccc ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby -wU
2
+ # -*- encoding: utf-8 -*-
3
+
4
+ require 'fccc'
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exe/fccc ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "fccc"
data/fccc.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fccc/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "fccc"
8
+ spec.version = Fccc::VERSION
9
+ spec.authors = ["Akihiko ITOH"]
10
+ spec.email = ["itoh@ai.soc.i.kyoto-u.ac.jp"]
11
+
12
+ spec.summary = "Search images on Flickr for given keywords and create a collage with them."
13
+ spec.description = "Description: Search images on Flickr for given keywords and create a collage with them."
14
+ spec.homepage = "https://github.com/AkihikoITOH/fccc"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.12"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rspec", "~> 3.0"
33
+
34
+ spec.add_dependency "thor", "~> 0.19.1"
35
+ spec.add_dependency "flickraw", "~> 0.9.8"
36
+ spec.add_dependency "rmagick", "~> 2.15", ">= 2.15.4"
37
+ spec.add_dependency "random-word", "~> 1.3"
38
+ end
data/keywords.txt ADDED
@@ -0,0 +1,10 @@
1
+ dog
2
+ cat
3
+ lion
4
+ tiger
5
+ beetle
6
+ bee
7
+ salmon
8
+ mackerel
9
+ Kyoto
10
+ Hamburg
data/lib/fccc.rb ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- encoding: utf-8 -*-
3
+
4
+ $:.unshift File.dirname(__FILE__)
5
+ require 'fccc/version'
6
+ require 'fccc/cli'
7
+
8
+ Fccc::CLI.start(ARGV)
data/lib/fccc/cli.rb ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- encoding: utf-8 -*-
3
+
4
+ $:.unshift File.dirname(__FILE__)
5
+ require 'time'
6
+ require 'thor'
7
+ require 'utils'
8
+
9
+ SMALL_WIDTH = 160
10
+ SMALL_HEIGHT = 160
11
+ COLLAGE_WIDTH = 5
12
+ COLLAGE_HEIGHT = 2
13
+ NUM_KEYWORDS = 10 # Expected number of keywords
14
+
15
+ module Fccc
16
+ class CLI < Thor
17
+ desc "collage keyword1, keyword2, ..., keyword#{NUM_KEYWORDS}", "This will search a top-rated image for each keyword and create collage with them."
18
+ option :output
19
+ option :input
20
+ def collage(*keywords)
21
+ collage = Utils::Collage.new(SMALL_WIDTH, SMALL_HEIGHT, COLLAGE_WIDTH, COLLAGE_HEIGHT, NUM_KEYWORDS)
22
+ if !options[:input].nil?
23
+ # Get keywords from a file
24
+ keywords = File.readlines(File.join(Dir.pwd, "#{options[:input]}")).map do |line|
25
+ line.strip if line.strip != ""
26
+ end
27
+ end
28
+ # Clean up keywords
29
+ keywords = keywords.map do |kw|
30
+ kw.gsub(/[,]/ ,"").strip
31
+ end
32
+ # Force resize keywords array.
33
+ # If it has more than NUM_KEYWORDS elements, just ignore extra elements.
34
+ # If it has less than NUM_KEYWORDS elements, fill the rest with nil.
35
+ keywords = Array.new(NUM_KEYWORDS).zip(keywords).map(&:last)
36
+ # Download images
37
+ collage.download_images_by_keywords(keywords)
38
+ # Create and save collage
39
+ output = options[:output]
40
+ if output.nil?
41
+ # Default filename with timestamp
42
+ output_file = File.join(Dir.pwd, "collage-#{Time.now.utc.iso8601.gsub(/[:]/ ,"-")}.jpg")
43
+ else
44
+ # User-supplied filename
45
+ output_file = File.join(Dir.pwd, "#{output}.jpg")
46
+ while File.exist?(output_file) do
47
+ # Increment suffix if the file exists
48
+ output_file = Utils.increment_filename(output_file)
49
+ end
50
+ end
51
+ collage.create_collage(output_file)
52
+ end
53
+ end
54
+ end
data/lib/fccc/utils.rb ADDED
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- encoding: utf-8 -*-
3
+
4
+ require 'yaml'
5
+ require 'flickraw'
6
+ require 'rmagick'
7
+ require 'random-word'
8
+
9
+ CREDENTIALS_PATH = File.join(Dir.pwd, "credentials.yml")
10
+
11
+ module Utils
12
+ class Collage
13
+ def initialize(small_width, small_height, collage_width, collage_height, num_images)
14
+ # Size of each image in collage in pixel
15
+ @small_width = small_width
16
+ @small_height = small_height
17
+ # Number of columns and rows of a collage
18
+ @collage_width = collage_width
19
+ @collage_height = collage_height
20
+ @num_images = num_images
21
+ Utils.load_credentials(CREDENTIALS_PATH)
22
+ end
23
+
24
+ def download_images_by_keywords(keywords)
25
+ # Get image url for each keyword
26
+ img_urls = Array.new()
27
+ keywords.each do |kw|
28
+ # Apparently no image without keyword
29
+ kw.nil? ? img = nil : img = flickr.photos.search(text: kw, per_page: 1)[0]
30
+ while img.nil? do
31
+ # Randomly pick an English word and search top-rated image for the word
32
+ puts "*** Image for '#{kw}' not found. Trying a randomly picked word. ***"
33
+ kw = RandomWord.nouns.next.strip
34
+ img = flickr.photos.search(text: kw, per_page: 1)[0]
35
+ end
36
+ url = FlickRaw.url(img)
37
+ puts "Image for '#{kw}' => #{url}"
38
+ img_urls.push(url)
39
+ end
40
+ # Download images
41
+ puts "Downloading images..."
42
+ @images = img_urls.map do |url|
43
+ Magick::Image.read(url).first
44
+ end
45
+ end
46
+
47
+ def create_collage(output_path)
48
+ # Create collage
49
+ puts "Creating collage..."
50
+ # Prepare a base image
51
+ @collage = Magick::Image.new(@small_width * @collage_width, @small_height * @collage_height) do
52
+ self.background_color = "black"
53
+ end
54
+ # Add rectangularly resized images to the base image
55
+ @images.each_with_index do |img, idx|
56
+ @collage.composite!(img.resize_to_fill!(@small_width, @small_height),
57
+ @small_width * (idx % @collage_width),
58
+ @small_height * (idx / @collage_width),
59
+ Magick::OverCompositeOp
60
+ )
61
+ end
62
+ # Save collage to a designated path
63
+ @collage.write(output_path)
64
+ puts "Collage saved to #{output_path} ."
65
+ end
66
+ end
67
+
68
+ def self.increment_filename(path)
69
+ _, filename, count, extension = *path.match(/(\A.*?)(?:_#(\d+))?(\.[^.]*)?\Z/)
70
+ count = (count || '0').to_i + 1
71
+ return "#{filename}_##{count}#{extension}"
72
+ end
73
+
74
+ def self.load_credentials(path)
75
+ credentials = YAML.load_file(path)
76
+ FlickRaw.api_key = credentials["api_key"]
77
+ FlickRaw.shared_secret = credentials["shared_secret"]
78
+ end
79
+ end
@@ -0,0 +1,3 @@
1
+ module Fccc
2
+ VERSION = "0.1.2"
3
+ end
metadata ADDED
@@ -0,0 +1,164 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fccc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Akihiko ITOH
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-06-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.19.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.19.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: flickraw
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.9.8
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.9.8
83
+ - !ruby/object:Gem::Dependency
84
+ name: rmagick
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.15'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 2.15.4
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '2.15'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.15.4
103
+ - !ruby/object:Gem::Dependency
104
+ name: random-word
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.3'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.3'
117
+ description: 'Description: Search images on Flickr for given keywords and create a
118
+ collage with them.'
119
+ email:
120
+ - itoh@ai.soc.i.kyoto-u.ac.jp
121
+ executables:
122
+ - fccc
123
+ extensions: []
124
+ extra_rdoc_files: []
125
+ files:
126
+ - ".gitignore"
127
+ - ".ruby-version"
128
+ - Gemfile
129
+ - README.md
130
+ - bin/console
131
+ - bin/fccc
132
+ - bin/setup
133
+ - exe/fccc
134
+ - fccc.gemspec
135
+ - keywords.txt
136
+ - lib/fccc.rb
137
+ - lib/fccc/cli.rb
138
+ - lib/fccc/utils.rb
139
+ - lib/fccc/version.rb
140
+ homepage: https://github.com/AkihikoITOH/fccc
141
+ licenses:
142
+ - MIT
143
+ metadata: {}
144
+ post_install_message:
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ requirements: []
159
+ rubyforge_project:
160
+ rubygems_version: 2.5.1
161
+ signing_key:
162
+ specification_version: 4
163
+ summary: Search images on Flickr for given keywords and create a collage with them.
164
+ test_files: []