miniatura 0.3.4 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ffe72fc7dd04b59bd7714bcc0aa44bd762f43a4
4
- data.tar.gz: d4d1a4f3eb993e84612ca65a42a706125e8d9411
3
+ metadata.gz: a94c30b0898a4bffe0850ff5852de1d5bd7a8249
4
+ data.tar.gz: d213a6e19002f89344c69419be9425803cb593a7
5
5
  SHA512:
6
- metadata.gz: c59cc152233270a136a9736d5827004c66e925651a614d69541992080c41ed66f5d7ce6ec9276be89ed7df7236b3384cbbf42da6d0d283a31158ff2f862c588f
7
- data.tar.gz: 9130434bfeeabb619f0c8b56d63755a327f9a66f64d07638fedcf2db2c9c1b31421cbfaaf5bbb4dbb1b2eadb15316b332d89369c1f3909dd9af00ce78d94f8f0
6
+ metadata.gz: 6f025aa6cb718d6764f4ba269b57a304290289d50be1cc2478e3aae33fcea98244af2d35163302bdff6d518f8c55732d007af840856e79ddb2afd501d71294e9
7
+ data.tar.gz: 59bb4e8aa970fa81d20aba457dd175d743d68d87bc781817f65d7029733c424885b5df7a0948078a749ab5d7d859b7e81e2cfa803ba248fd918f9894641e3eb9
@@ -1,14 +1,9 @@
1
1
  module Miniatura
2
- class Logger
3
- attr_reader :logger
2
+ class Logger
3
+ attr_reader :logger
4
4
 
5
- def initialize options
6
- if options.has_key? :logger
7
- @logger = options[:logger]
8
- else
9
- @logger = Logger.new(STDOUT)
10
- @logger.level = Logger::INFO
11
- end
12
- end
13
- end
5
+ def initialize
6
+ @logger = Rails.logger
7
+ end
8
+ end
14
9
  end
@@ -14,18 +14,16 @@ module Miniatura
14
14
  end
15
15
 
16
16
  def to_options
17
- result = @options.map do |k, v|
18
- send(k.to_s, v)
19
- end
17
+ result = @options.map { |k, v| send(k.to_s, v) }
20
18
  result << '-vframes 1'
21
19
  result.join(' ')
22
20
  end
23
21
 
24
22
  def file_extension(value)
25
23
  case value
26
- when 'jpeg' then
24
+ when 'jpeg'
27
25
  '-c mjpeg'
28
- when 'png' then
26
+ when 'png'
29
27
  '-c png'
30
28
  else
31
29
  ''
@@ -34,11 +32,11 @@ module Miniatura
34
32
 
35
33
  def rotate(value)
36
34
  case value
37
- when 90 then
35
+ when 90
38
36
  '-vf transpose=1'
39
- when 180 then
37
+ when 180
40
38
  '-vf hflip '
41
- when 270 then
39
+ when 270
42
40
  '-vf transpose=2'
43
41
  else
44
42
  ''
@@ -1,3 +1,3 @@
1
1
  module Miniatura
2
- VERSION = '0.3.4'
2
+ VERSION = '0.3.7'
3
3
  end
data/lib/miniatura.rb CHANGED
@@ -6,31 +6,28 @@ require 'miniatura/generate_command'
6
6
 
7
7
  module Miniatura
8
8
  def generate_thumb(options = {})
9
+ @exit_code, @error = nil
10
+ raise Errno::ENOENT unless File.exist?(current_path)
9
11
  options[:file_extension] ||= 'jpeg'
10
- options[:logger] = Rails.logger
11
- size = options[:size]
12
12
  options[:rotate] = 0
13
- video = MiniExiftool.new(current_path)
14
- orientation = video.rotation
15
- image_width, image_height = video_dimension(orientation, video.imagewidth, video.imageheight, size)
16
- options[:size] = "#{image_width.to_i}" + "x" + "#{image_height.to_i}"
17
- tmp_path = File.join(File.dirname(current_path), "tmpfile.#{options[:file_extension]}")
18
- thumbnail = GenerateCommand.new(current_path, tmp_path)
19
- cmd = thumbnail.generate_command(options)
20
- logger = Miniatura::Logger.new(options).logger
21
- logger.info("Running command: #{cmd}")
22
- exit_code, error = nil
23
- raise Errno::ENOENT unless File.exist?(current_path)
24
- Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
25
- error = stderr.read
26
- exit_code = wait_thr.value
27
- end
28
- handle_exit_code(exit_code, error, logger)
13
+ options[:size] = determine_thumb_dimension_ratio_from_uploaded_video(options[:size])
14
+ tmp_path = generate_temp_file(options[:file_extension])
15
+ cmd = generate_command_for_thumbnail(options, tmp_path)
16
+ show_logs(cmd)
17
+ execute_command(cmd)
18
+ handle_exit_code(@exit_code, @error)
29
19
  File.rename tmp_path, current_path
30
20
  end
31
21
 
32
22
  private
33
23
 
24
+ def determine_thumb_dimension_ratio_from_uploaded_video(size)
25
+ video = MiniExiftool.new(current_path)
26
+ orientation = video.rotation
27
+ image_width, image_height = video_dimension(orientation, video.imagewidth, video.imageheight, size)
28
+ return "#{image_width.to_i}" + 'x' + "#{image_height.to_i}"
29
+ end
30
+
34
31
  def video_dimension(orientation, video_width, video_height, size)
35
32
  case orientation
36
33
  when 0, 180
@@ -55,12 +52,33 @@ module Miniatura
55
52
  return image_width, image_height
56
53
  end
57
54
 
58
- def handle_exit_code(exit_code, error, logger)
55
+ def generate_temp_file(file_extension)
56
+ File.join(File.dirname(current_path), "tmpfile.#{file_extension}")
57
+ end
58
+
59
+ def generate_command_for_thumbnail(options, temp_file_path)
60
+ thumbnail = GenerateCommand.new(current_path, temp_file_path)
61
+ return thumbnail.generate_command(options)
62
+ end
63
+
64
+ def show_logs(command)
65
+ logger = Miniatura::Logger.new.logger
66
+ logger.info("Running command: #{command}")
67
+ end
68
+
69
+ def execute_command(command)
70
+ Open3.popen3(command) do |stdin, stdout, stderr, wait_thr|
71
+ @error = stderr.read
72
+ @exit_code = wait_thr.value
73
+ end
74
+ end
75
+
76
+ def handle_exit_code(exit_code, error)
77
+ logger = Miniatura::Logger.new.logger
59
78
  if exit_code == 0
60
79
  logger.info 'Success!'
61
80
  else
62
81
  logger.error "Failure due to following error: #{error}"
63
82
  end
64
- exit_code
65
83
  end
66
84
  end
data/miniatura.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.13'
22
- spec.add_development_dependency 'rake', '~> 10.5'
21
+ spec.add_development_dependency 'bundler', '~> 1.14'
22
+ spec.add_development_dependency 'rake', '~> 12.0'
23
23
  spec.add_development_dependency 'rspec', '~> 3.5'
24
24
  spec.add_development_dependency 'carrierwave-video', '~> 0.5.6'
25
25
  spec.add_development_dependency 'mini_exiftool', '~> 2.8'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miniatura
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - ssooraj
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.13'
19
+ version: '1.14'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.13'
26
+ version: '1.14'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.5'
33
+ version: '12.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.5'
40
+ version: '12.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement