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 +7 -0
- data/.gitignore +113 -0
- data/.ruby-version +1 -0
- data/Gemfile +9 -0
- data/README.md +120 -0
- data/bin/console +14 -0
- data/bin/fccc +4 -0
- data/bin/setup +8 -0
- data/exe/fccc +3 -0
- data/fccc.gemspec +38 -0
- data/keywords.txt +10 -0
- data/lib/fccc.rb +8 -0
- data/lib/fccc/cli.rb +54 -0
- data/lib/fccc/utils.rb +79 -0
- data/lib/fccc/version.rb +3 -0
- metadata +164 -0
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
data/README.md
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
# fccc - Flickr Collage Coding Challenge
|
2
|
+
|
3
|
+
[](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
data/bin/setup
ADDED
data/exe/fccc
ADDED
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
data/lib/fccc.rb
ADDED
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
|
data/lib/fccc/version.rb
ADDED
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: []
|