words_to_image 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cca0cf3ff67d38ada24d0e54af212cb0d441b0b6
4
- data.tar.gz: e083dc22715bb2b12551fe524c6e476ad9403385
3
+ metadata.gz: 43c4e471e23ff83c4903aad01736bc63a8a8474d
4
+ data.tar.gz: 4684f555138e2f375d00eca16ebbfd3851796bcc
5
5
  SHA512:
6
- metadata.gz: 71428f5b5562691eba5ac2afcae5507109ea5586d844e95b3472d98cc1d4b50a4866e6d144791edb0a53e6fe8ffb0e1b05be6a076b0d0a1550de8305482598cc
7
- data.tar.gz: a1634ec4b5725c5b85c58fa7d1e8bc417861ea88e5f20e9406f8f64dc85e3b4cdcb7d89555f8939844255db69545c1a7fb245a442e56d17bd8cb752244262754
6
+ metadata.gz: 8de8a6ec645815f75d5de92b67062f283ad251f0bedd74166efd768040172b6acef151e2f6a9d87f19e046252cf53cff6f5753ccc97033d46076c683b6cf9d63
7
+ data.tar.gz: c7af09a4641eecc17512a2691f275e3d4e3e950c4c6e4ff8c6018fe939d3ce76944f2e18798944d8dd4dd1f6872a7d595624743f2ba71e83e55013d243c33665
data/README.md CHANGED
@@ -1,9 +1,22 @@
1
- # Wokds To Image
1
+ # Words To Image
2
2
 
3
- TODO: Write a gem description
3
+ a Ruby command line application that
4
+
5
+ * accepts a list of search keywords as arguments
6
+ * queries the Flickr API for the top-rated image for each keyword
7
+ * downloads the results
8
+ * crops them rectangularly
9
+ * assembles a collage grid from ten images and
10
+ * writes the result to a user-supplied filename
11
+
12
+ If given less than ten keywords, or if any keyword fails to
13
+ result in a match, retrieve random words from a dictionary
14
+ source such as `/usr/share/dict/words`. Repeat as necessary
15
+ until you have gathered ten images.
4
16
 
5
17
  ## Installation
6
- ---------------> don't forget an instruction for ImageMagick
18
+ [Please initially install ImageMagick](http://www.imagemagick.org/script/binary-releases.php).
19
+
7
20
  Add this line to your application's Gemfile:
8
21
 
9
22
  gem 'words_to_image'
@@ -16,7 +29,9 @@ Or install it yourself as:
16
29
 
17
30
  $ gem install words_to_image
18
31
 
19
- ## Usage
32
+ ## Usage Example
33
+
34
+ words_to_image --keywords="hamburg weihnachtsmarkt alster moin hafen" --result='result.jpg' --count=5 --max_width=150 --dictionary='spec/fixtures/sample_dict'
20
35
 
21
- TODO: Write usage instructions here
36
+ All the options are optional, just `words_to_image` would use defaults and random keywords.
22
37
 
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new('spec')
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'cri'
5
+ Dir.glob('lib/**/*.rb') {|file| require File.basename(file)}
6
+
7
+ command = Cri::Command.define do
8
+ name 'words_to_image'
9
+ usage 'words_to_image [options]'
10
+ summary 'A collage maker based on flickr search results'
11
+ description %q{
12
+ A command line application that:
13
+
14
+ accepts a list of search keywords as arguments,
15
+ queries the Flickr API for the top-rated image for each keyword,
16
+ downloads the results,
17
+ crops them rectangularly,
18
+ assembles a collage grid from ten images and writes the result to a user-supplied filename.
19
+
20
+ If given less than ten keywords, or if any keyword fails to
21
+ result in a match, retrieve random words from a dictionary
22
+ source such as `/usr/share/dict/words`. Repeat as necessary
23
+ until you have gathered ten images.
24
+ }
25
+
26
+ flag :h, :help, 'show help for this command' do |value, cmd|
27
+ puts cmd.help
28
+ exit 0
29
+ end
30
+ option :c, :count, 'images amount (default 10)', argument: :optional
31
+ option :d, :dictionary, 'dictionary file path', argument: :optional
32
+ option :r, :result, 'resulting collage path', argument: :optional
33
+ option :kw, :keywords, 'keywords to search for', argument: :optional
34
+ option :w, :max_width, 'max resulting file width, in px (default 750)', argument: :optional
35
+
36
+ run do |opts, args, cmd|
37
+ local_options = {
38
+ images_count: opts.fetch(:count, nil),
39
+ max_row_width: opts.fetch(:dictionary, nil),
40
+ dictionary_path: opts.fetch(:result, nil),
41
+ result_path: opts.fetch(:max_collage_width, nil)
42
+ }
43
+ keywords = opts.fetch(:keywords, "").split
44
+
45
+ begin
46
+ processor = WordsToImage::Processor.new(local_options)
47
+
48
+ puts "Fetching the top-rated images"
49
+ processor.get_images [*keywords]
50
+
51
+ puts "Downloading the images for keywords: #{processor.words.join(", ")} and creating a collage"
52
+ processor.create_collage
53
+
54
+ puts "Collage successfully created at #{processor.result_path}"
55
+ rescue => e
56
+ puts "Error while execution: #{e.message}"
57
+ end
58
+ end
59
+ end
60
+
61
+ command.run(ARGV)
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "words_to_image"
7
- spec.version = "0.0.2"
7
+ spec.version = "0.0.3"
8
8
  spec.authors = ["Alona Mekhovova"]
9
9
  spec.email = ["alona.tarasova@gmail.com"]
10
10
  spec.summary = "A collage maker based on flickr search results"
@@ -27,12 +27,13 @@ Gem::Specification.new do |spec|
27
27
  spec.license = "MIT"
28
28
 
29
29
  spec.files = `git ls-files -z`.split("\x0")
30
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
30
+ spec.executables = ["words_to_image"]
31
+ spec.test_files = spec.files.grep(%r{^(spec)/})
32
32
  spec.require_paths = ["config", "lib/words_to_image"]
33
33
 
34
34
  spec.add_runtime_dependency "flickraw"
35
35
  spec.add_runtime_dependency "mini_magick"
36
+ spec.add_runtime_dependency "cri"
36
37
 
37
38
  spec.add_development_dependency "bundler", "~> 1.11"
38
39
  spec.add_development_dependency "rake"
@@ -2,11 +2,13 @@ require 'defaults'
2
2
 
3
3
  module WordsToImage
4
4
  class Processor
5
+ attr_reader :words, :result_path
6
+
5
7
  def initialize(local_settings={})
6
- @images_count = local_settings[:images_count] || DEFAULT_SETTINGS[:images_count]
8
+ @images_count = (local_settings[:images_count] || DEFAULT_SETTINGS[:images_count]).to_i
7
9
  @dictionary_path = local_settings[:dictionary_path] || DEFAULT_SETTINGS[:dictionary_path]
8
10
  @result_path = local_settings[:result_path] || DEFAULT_SETTINGS[:result_path]
9
- @max_row_width = [local_settings[:max_row_width] || DEFAULT_SETTINGS[:max_row_width], 150].max
11
+ @max_row_width = [(local_settings[:max_row_width] || DEFAULT_SETTINGS[:max_row_width]).to_i, 150].max
10
12
 
11
13
  @images, @words = [], []
12
14
  @dictionary = Dictionary.new(@dictionary_path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: words_to_image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alona Mekhovova
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cri
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'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -89,7 +103,8 @@ description: "\n command line application that\n\n * accepts a list of sea
89
103
  Repeat as necessary\n until you have gathered ten images.\n "
90
104
  email:
91
105
  - alona.tarasova@gmail.com
92
- executables: []
106
+ executables:
107
+ - words_to_image
93
108
  extensions: []
94
109
  extra_rdoc_files: []
95
110
  files:
@@ -98,6 +113,7 @@ files:
98
113
  - LICENSE.txt
99
114
  - README.md
100
115
  - Rakefile
116
+ - bin/words_to_image
101
117
  - collage.gemspec
102
118
  - config/defaults.rb
103
119
  - config/flickr_init.rb