flickr_collage 0.0.1
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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +115 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/flickr_collage +92 -0
- data/flickr_collage.gemspec +30 -0
- data/lib/flickr_collage.rb +94 -0
- data/lib/flickr_collage/dictionary.rb +20 -0
- data/lib/flickr_collage/errors.rb +10 -0
- data/lib/flickr_collage/file_loader.rb +51 -0
- data/lib/flickr_collage/initializer.rb +7 -0
- data/lib/flickr_collage/version.rb +3 -0
- data/tmp/fruits.jpg +0 -0
- metadata +162 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d78399ff56392a3bdfacaf3244e7356d908d7cac
|
4
|
+
data.tar.gz: 82b1183d716173fd484273a4af791c33e266d2ee
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8a4463481021797101d80eb3f013f608557394ff939ee1d1a81247fb368eaeb9aa49aacb7ea079fab872f5a61dfd80507d3923eab0a1374dc97cd183285a54b3
|
7
|
+
data.tar.gz: 38ab241bd196260b65c2cf958339699ee0400e240688d122c0323595507d042d8c10e1bffa5190beea07838a0ea8fae9f132afe32a2ea9ed9a264894a7a76631
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Ingo Plaschczek
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
# Flickr Collage
|
2
|
+
|
3
|
+
**Flickr Collage** queries the Flickr API for the top-rated image by search keywords and assembles a collage grid from this images to a new file.
|
4
|
+
|
5
|
+

|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
You have to install **ImageMagick**. On Ubuntu for example, you can run:
|
10
|
+
|
11
|
+
```
|
12
|
+
sudo apt-get install libmagickwand-dev
|
13
|
+
```
|
14
|
+
|
15
|
+
For more details take a look at (https://github.com/rmagick/rmagick#prerequisites).
|
16
|
+
|
17
|
+
**Installing via Bundler**
|
18
|
+
|
19
|
+
Add this line to your application's Gemfile:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
gem 'flickr_collage'
|
23
|
+
```
|
24
|
+
|
25
|
+
And then execute:
|
26
|
+
|
27
|
+
```console
|
28
|
+
bundle
|
29
|
+
```
|
30
|
+
|
31
|
+
**Installing via Rubygems**
|
32
|
+
|
33
|
+
```console
|
34
|
+
gem install flickr_collage
|
35
|
+
```
|
36
|
+
|
37
|
+
**Installing from github**
|
38
|
+
|
39
|
+
```console
|
40
|
+
git clone https://github.com/plaschczek/flickr_collage
|
41
|
+
cd flickr_collage
|
42
|
+
bundle
|
43
|
+
rake install
|
44
|
+
```
|
45
|
+
|
46
|
+
## Usage
|
47
|
+
|
48
|
+
First you have to initialize FlickRaw.api_key and FlickRaw.shared_secred.<br />
|
49
|
+
For example export the following env vars:
|
50
|
+
|
51
|
+
```console
|
52
|
+
export FLICKR_API_KEY='... Your API key ...'
|
53
|
+
export FLICKR_SHARED_SECRET='... Your shared secret ...'
|
54
|
+
```
|
55
|
+
|
56
|
+
Or in your Ruby file:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
require 'flickr_collage'
|
60
|
+
|
61
|
+
FlickRaw.api_key="... Your API key ..."
|
62
|
+
FlickRaw.shared_secret="... Your shared secret ..."
|
63
|
+
```
|
64
|
+
|
65
|
+
### Examples
|
66
|
+
|
67
|
+
To create a collage with 10 random images, instantiate a new FlickrCollage and save the image:
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
FlickrCollage.new.save
|
71
|
+
```
|
72
|
+
|
73
|
+
Full options example (9 images, 4 by keyword, 5 random in 2 rows as squares, saved as 'tmp/fruits_example.jpg'):
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
FlickrCollage.new(
|
77
|
+
keywords: ['strawberry', 'kiwi', 'cherry', 'limes'],
|
78
|
+
filename: 'fruits_example.jpg',
|
79
|
+
dir: 'tmp',
|
80
|
+
no_of_images: 9,
|
81
|
+
rows: 2,
|
82
|
+
squares: true
|
83
|
+
).save
|
84
|
+
```
|
85
|
+
|
86
|
+
### Command Line Examples
|
87
|
+
|
88
|
+
The same full options example as before:
|
89
|
+
|
90
|
+
```console
|
91
|
+
flickr_collage -k strawberry,kiwi,cherry,limes -f fruits_example.jpg -d tmp -n 9 -r 2 -s
|
92
|
+
```
|
93
|
+
|
94
|
+
And the command line help:
|
95
|
+
|
96
|
+
```console
|
97
|
+
flickr_collage -h
|
98
|
+
```
|
99
|
+
|
100
|
+
### Options
|
101
|
+
|
102
|
+
```
|
103
|
+
FlickrCollage.new(keywords:, filename:, dir:, no_of_images:, rows:, squares:)
|
104
|
+
|
105
|
+
keywords: Array with keywords
|
106
|
+
filename: collage filename, default 'collage.jpg'
|
107
|
+
dir: directory to save the collage, has to exist, default '.'
|
108
|
+
no_of_images: number of images, default number of keywords and without keywords 10
|
109
|
+
rows: number of collage rows, default sqrt(no_of_images).floor
|
110
|
+
squares: boolean, if true images squared
|
111
|
+
```
|
112
|
+
|
113
|
+
## License
|
114
|
+
|
115
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "flickr_collage"
|
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/setup
ADDED
data/exe/flickr_collage
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'flickr_collage'
|
4
|
+
require 'highline'
|
5
|
+
require 'cri'
|
6
|
+
|
7
|
+
command = Cri::Command.define do
|
8
|
+
name 'flickr_collage'
|
9
|
+
usage 'flickr_collage [options]'
|
10
|
+
summary 'Makes a collage of Flickr images by keywords'
|
11
|
+
description '
|
12
|
+
Flickr Collage queries the Flickr API for the top-rated image by search
|
13
|
+
keywords and assembles a collage grid from this images to a new file.
|
14
|
+
|
15
|
+
Example:
|
16
|
+
flickr_collage -k strawberry,kiwi,cherry,limes -f fruits.jpg -s
|
17
|
+
'
|
18
|
+
|
19
|
+
option :d, :dir, 'directory to store collage', argument: :optional
|
20
|
+
option :f, :filename, 'filename for collage', argument: :optional
|
21
|
+
option :k, :keywords, 'keywords to search for, comma seperated', argument: :optional
|
22
|
+
option :n, :no_of_images, 'number of images (default number of keywords or 10)', argument: :optional
|
23
|
+
option :r, :rows, "number of collage's rows", argument: :optional
|
24
|
+
option :s, :squares, 'images squared on collage'
|
25
|
+
|
26
|
+
flag :h, :help, 'show help for this command' do |_value, cmd|
|
27
|
+
puts cmd.help
|
28
|
+
exit 0
|
29
|
+
end
|
30
|
+
|
31
|
+
run do |opts, _args, _cmd|
|
32
|
+
cli = HighLine.new
|
33
|
+
|
34
|
+
exit 0 unless opts[:keywords] ||
|
35
|
+
cli.agree('Random collage without keywords? (Type `flickr_collage -h` for help.) [y/n]')
|
36
|
+
|
37
|
+
options = { keywords: opts.fetch(:keywords, '').split(',') }
|
38
|
+
|
39
|
+
options[:dir] = opts.fetch(:dir) if opts[:dir]
|
40
|
+
options[:filename] = opts.fetch(:filename) if opts[:filename]
|
41
|
+
options[:no_of_images] = opts.fetch(:no_of_images).to_i if opts[:no_of_images]
|
42
|
+
options[:rows] = opts.fetch(:rows).to_i if opts[:rows]
|
43
|
+
options[:squares] = opts.key?(:squares) if opts[:squares]
|
44
|
+
|
45
|
+
begin
|
46
|
+
puts 'Searching and loading images'
|
47
|
+
flickr_collage = FlickrCollage.new(**options)
|
48
|
+
|
49
|
+
rescue FlickrCollage::Errors::DictionaryNotFound
|
50
|
+
puts "Dictionary not found for #{FlickrCollage::Dictionary.path}"
|
51
|
+
dict_path = cli.ask('Enter path for dictionary or leave it blank to cancel.')
|
52
|
+
exit 0 if dict_path == ''
|
53
|
+
FlickrCollage::Dictionary.path = dict_path
|
54
|
+
retry
|
55
|
+
|
56
|
+
rescue => e
|
57
|
+
puts "Error while execution: #{e.message}"
|
58
|
+
exit 1
|
59
|
+
end
|
60
|
+
|
61
|
+
if flickr_collage.unsuccessful_keywords
|
62
|
+
keys = flickr_collage.unsuccessful_keywords.keys & options[:keywords]
|
63
|
+
puts "Note: No image found for the following keyword(s): #{keys.join(', ')}" if keys.any?
|
64
|
+
end
|
65
|
+
|
66
|
+
begin
|
67
|
+
flickr_collage.save
|
68
|
+
|
69
|
+
rescue FlickrCollage::Errors::DirNotFound
|
70
|
+
puts "Directory #{flickr_collage.dir} not found, please ensure that the directory exists."
|
71
|
+
|
72
|
+
rescue FlickrCollage::Errors::FileExist
|
73
|
+
if cli.agree("File exists. Overwrite #{File.join(flickr_collage.dir, flickr_collage.filename)}? [y/n]")
|
74
|
+
flickr_collage.save!
|
75
|
+
else
|
76
|
+
filename = cli.ask("Enter new filename (dir: #{flickr_collage.dir}) or leave it blank to cancel.")
|
77
|
+
exit 0 if filename == ''
|
78
|
+
flickr_collage.filename = filename
|
79
|
+
retry
|
80
|
+
end
|
81
|
+
|
82
|
+
rescue FlickrCollage::Errors::FileCannotBeSaved
|
83
|
+
puts 'Error: File could no be saved.'
|
84
|
+
exit 1
|
85
|
+
|
86
|
+
rescue => e
|
87
|
+
puts "Error while execution: #{e.message}"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
command.run(ARGV)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'flickr_collage/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'flickr_collage'
|
8
|
+
spec.version = FlickrCollage::VERSION
|
9
|
+
spec.authors = ['Ingo Plaschczek']
|
10
|
+
spec.email = ['github@plaschczek.de']
|
11
|
+
|
12
|
+
spec.summary = %q{Makes a collage of Flickr images by keywords}
|
13
|
+
spec.description = %q{Flickr Collage queries the Flickr API for the top-rated image by search keywords and assembles a collage grid from this images to a new file.}
|
14
|
+
spec.homepage = 'https://github.com/plaschczek/flickr_collage'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = 'exe'
|
19
|
+
spec.executables = ['flickr_collage']
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.add_dependency 'flickraw'
|
23
|
+
spec.add_dependency 'rmagick'
|
24
|
+
spec.add_dependency 'highline'
|
25
|
+
spec.add_dependency 'cri'
|
26
|
+
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.12'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
30
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'flickr_collage/version'
|
2
|
+
require 'flickr_collage/errors'
|
3
|
+
require 'flickr_collage/dictionary'
|
4
|
+
require 'flickr_collage/file_loader'
|
5
|
+
|
6
|
+
require 'rmagick'
|
7
|
+
require 'flickraw'
|
8
|
+
|
9
|
+
require 'flickr_collage/initializer'
|
10
|
+
|
11
|
+
class FlickrCollage
|
12
|
+
attr_accessor :keywords, :random_keywords, :unsuccessful_keywords, :image_list, :collage, :dir, :filename, :squares
|
13
|
+
|
14
|
+
def initialize(keywords: [], filename: 'collage.jpg', dir: '.', no_of_images: nil, rows: nil, squares: false)
|
15
|
+
@filename = filename
|
16
|
+
@dir = dir
|
17
|
+
@squares = squares
|
18
|
+
@no_of_images = no_of_images || (keywords.empty? ? 10 : keywords.length)
|
19
|
+
assign_and_extend_keywords(keywords)
|
20
|
+
|
21
|
+
@image_list, @unsuccessful_keywords = FileLoader.image_list(@keywords)
|
22
|
+
|
23
|
+
create_collage(rows: rows || Math.sqrt(@no_of_images).floor)
|
24
|
+
end
|
25
|
+
|
26
|
+
def save(force: false)
|
27
|
+
path = prepare_and_check_path(force)
|
28
|
+
@collage.write(path)
|
29
|
+
rescue Errors::DirNotFound, Errors::FileExist
|
30
|
+
raise
|
31
|
+
rescue => e
|
32
|
+
raise Errors::FileCannotBeSaved, "#{e.class}: #{e.message}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def save!
|
36
|
+
save(force: true)
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def assign_and_extend_keywords(keywords)
|
42
|
+
@random_keywords = []
|
43
|
+
(@no_of_images - keywords.length).times { @random_keywords << Dictionary.words.sample }
|
44
|
+
@keywords = keywords + @random_keywords
|
45
|
+
end
|
46
|
+
|
47
|
+
def create_collage(rows: 3, width: 1200)
|
48
|
+
@image_list.scene = 0
|
49
|
+
collage_list = Magick::ImageList.new
|
50
|
+
|
51
|
+
height = 0
|
52
|
+
rows.times do |i|
|
53
|
+
row = create_image_row(no_of_images: images_per_row(rows, i))
|
54
|
+
collage_list << row.scale(width.to_f / row.columns)
|
55
|
+
collage_list.page = Magick::Rectangle.new(0, 0, 0, height)
|
56
|
+
height += collage_list.rows
|
57
|
+
end
|
58
|
+
|
59
|
+
@collage = collage_list.mosaic
|
60
|
+
end
|
61
|
+
|
62
|
+
def create_image_row(no_of_images:, height: 300)
|
63
|
+
row = Magick::ImageList.new
|
64
|
+
|
65
|
+
width = 0
|
66
|
+
no_of_images.times do
|
67
|
+
row << (@squares ? @image_list.resize_to_fill(height) : @image_list.scale(height.to_f / @image_list.rows))
|
68
|
+
row.page = Magick::Rectangle.new(0, 0, width, 0)
|
69
|
+
width += row.columns
|
70
|
+
increment_image_list_scene
|
71
|
+
end
|
72
|
+
|
73
|
+
row.mosaic
|
74
|
+
end
|
75
|
+
|
76
|
+
def increment_image_list_scene
|
77
|
+
@image_list.scene += 1
|
78
|
+
rescue
|
79
|
+
@image_list.scene = 0
|
80
|
+
end
|
81
|
+
|
82
|
+
def images_per_row(rows, i)
|
83
|
+
@no_of_images / rows + (i.positive? && i <= @no_of_images % rows ? 1 : 0)
|
84
|
+
end
|
85
|
+
|
86
|
+
def prepare_and_check_path(force)
|
87
|
+
raise Errors::DirNotFound unless File.directory?(dir.to_s)
|
88
|
+
|
89
|
+
path = File.join(dir, filename)
|
90
|
+
raise Errors::FileExist if !force && File.exist?(path)
|
91
|
+
|
92
|
+
path
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class FlickrCollage
|
2
|
+
class Dictionary
|
3
|
+
@path = '/usr/share/dict/words'
|
4
|
+
|
5
|
+
class << self
|
6
|
+
attr_reader :path
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.path=(value)
|
10
|
+
@words = nil
|
11
|
+
@path = value
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.words
|
15
|
+
@words ||= File.open(@path.to_s).read.to_s.split("\n")
|
16
|
+
rescue
|
17
|
+
raise Errors::DictionaryNotFound
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class FlickrCollage
|
2
|
+
class Errors
|
3
|
+
class DictionaryNotFound < StandardError; end
|
4
|
+
class DirNotFound < StandardError; end
|
5
|
+
class FileCannotBeSaved < StandardError; end
|
6
|
+
class FileExist < StandardError; end
|
7
|
+
class NoFlickRawURLMethod < StandardError; end
|
8
|
+
class NoImageFound < StandardError; end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
class FlickrCollage
|
4
|
+
class FileLoader
|
5
|
+
FLICK_RAW_URL_METHODS = %w(url url_m url_s url_t url_b url_z url_q url_n url_c url_o).freeze
|
6
|
+
|
7
|
+
attr_accessor :unsuccessful_keywords
|
8
|
+
|
9
|
+
def self.image_list(keywords)
|
10
|
+
FileLoader.new.load_flickr_files(keywords)
|
11
|
+
end
|
12
|
+
|
13
|
+
def load_flickr_files(keywords, image_list: Magick::ImageList.new, url_method: 'url_b')
|
14
|
+
keywords.each { |k| image_list.push(load_flickr_file(k, url_method)) }
|
15
|
+
|
16
|
+
[image_list, @unsuccessful_keywords]
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def load_flickr_file(keyword, url_method)
|
22
|
+
open(flickr_file_url(keyword, url_method)) do |uri|
|
23
|
+
raise Errors::NoImageFound unless uri.is_a? ::Tempfile
|
24
|
+
return Magick::Image.from_blob(uri.read).first
|
25
|
+
end
|
26
|
+
rescue Errors::NoImageFound
|
27
|
+
(@unsuccessful_keywords ||= {})[keyword] = Dictionary.words.sample
|
28
|
+
keyword = @unsuccessful_keywords[keyword]
|
29
|
+
retry
|
30
|
+
end
|
31
|
+
|
32
|
+
def flickr_file_url(keyword, url_method)
|
33
|
+
raise Errors::NoFlickRawURLMethod unless FLICK_RAW_URL_METHODS.include?(url_method)
|
34
|
+
|
35
|
+
FlickRaw.send(url_method, flickr_photo_search(keyword))
|
36
|
+
end
|
37
|
+
|
38
|
+
def flickr_photo_search(keyword)
|
39
|
+
photo_search = flickr.photos.search(
|
40
|
+
tags: [keyword],
|
41
|
+
sort: 'interestingness-desc',
|
42
|
+
content_type: 1,
|
43
|
+
per_page: 1
|
44
|
+
)
|
45
|
+
|
46
|
+
raise Errors::NoImageFound unless photo_search.first
|
47
|
+
|
48
|
+
photo_search.first
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/tmp/fruits.jpg
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flickr_collage
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ingo Plaschczek
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: flickraw
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rmagick
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: highline
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cri
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.12'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.12'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '10.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '10.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.0'
|
111
|
+
description: Flickr Collage queries the Flickr API for the top-rated image by search
|
112
|
+
keywords and assembles a collage grid from this images to a new file.
|
113
|
+
email:
|
114
|
+
- github@plaschczek.de
|
115
|
+
executables:
|
116
|
+
- flickr_collage
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- ".gitignore"
|
121
|
+
- ".rspec"
|
122
|
+
- ".travis.yml"
|
123
|
+
- Gemfile
|
124
|
+
- LICENSE.txt
|
125
|
+
- README.md
|
126
|
+
- Rakefile
|
127
|
+
- bin/console
|
128
|
+
- bin/setup
|
129
|
+
- exe/flickr_collage
|
130
|
+
- flickr_collage.gemspec
|
131
|
+
- lib/flickr_collage.rb
|
132
|
+
- lib/flickr_collage/dictionary.rb
|
133
|
+
- lib/flickr_collage/errors.rb
|
134
|
+
- lib/flickr_collage/file_loader.rb
|
135
|
+
- lib/flickr_collage/initializer.rb
|
136
|
+
- lib/flickr_collage/version.rb
|
137
|
+
- tmp/fruits.jpg
|
138
|
+
homepage: https://github.com/plaschczek/flickr_collage
|
139
|
+
licenses:
|
140
|
+
- MIT
|
141
|
+
metadata: {}
|
142
|
+
post_install_message:
|
143
|
+
rdoc_options: []
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
requirements: []
|
157
|
+
rubyforge_project:
|
158
|
+
rubygems_version: 2.6.7
|
159
|
+
signing_key:
|
160
|
+
specification_version: 4
|
161
|
+
summary: Makes a collage of Flickr images by keywords
|
162
|
+
test_files: []
|