vcs_ruby 1.1.10 → 1.1.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 85791e1e6f01c52a62bd1cf9d2464a91be7dfb3e
4
+ data.tar.gz: 7778a25b6432d84a550f851ebcf2b2d19be00a7d
5
+ SHA512:
6
+ metadata.gz: ac320880819e49a35953e424469fd4d923d121362a643358aa23dea1a87c37191673ca5c84162782f12853415efff3dc5eee8ec9d53324880f1253856dfb5192
7
+ data.tar.gz: 96a803da37fc27152ed4295c58b99eecf95cfd1a36f6acf8ee66ae138faff2d8d5e9544bdbf668f10017403841bd5073cde4c3db0371ea4358734d186150cff3
data/lib/FFmpeg/ffmpeg.rb CHANGED
@@ -19,6 +19,7 @@ module VCSRuby
19
19
  @video = video
20
20
  @ffmpeg = Command.new :ffmpeg, 'ffmpeg'
21
21
  @ffprobe = Command.new :ffmpeg, 'ffprobe'
22
+ @libav = nil
22
23
 
23
24
  detect_version if available?
24
25
  end
@@ -41,9 +42,9 @@ module VCSRuby
41
42
 
42
43
  def detect_version
43
44
  info = @ffmpeg.execute('-version')
44
- match = /avconv ([\d|.|-|:]*)/.match(info)
45
+ match = /avconv ([\d|\.|\-|:]*)/.match(info)
45
46
  @libav = !!match
46
- match = /ffmpeg version ([\d|.]*)/.match(info)
47
+ match = /ffmpeg version ([\d|\.]*)/.match(info)
47
48
  if match
48
49
  @version = match[1]
49
50
  end
@@ -61,7 +61,7 @@ module VCSRuby
61
61
 
62
62
  private
63
63
  def format_split line
64
- name = line.strip.split(' ', 2).first
64
+ line.strip.split(' ', 2).first
65
65
  end
66
66
 
67
67
  def check_cache
@@ -0,0 +1,42 @@
1
+ #
2
+ # Mock Implementation for Tests
3
+ #
4
+
5
+ require 'capturer'
6
+ require 'command'
7
+
8
+ module VCSRuby
9
+ class MockCapturer < Capturer
10
+ attr_reader :info, :video_streams, :audio_streams
11
+
12
+ def initialize video
13
+ @video = video
14
+ @info = nil
15
+ @video_streams = nil
16
+ @audio_streams = nil
17
+ end
18
+
19
+ def file_valid?
20
+ true
21
+ end
22
+
23
+ def name
24
+ :mock
25
+ end
26
+
27
+ def available?
28
+ true
29
+ end
30
+
31
+ def grab time, image_path
32
+ end
33
+
34
+ def available_formats
35
+ ['png', 'tiff', 'bmp', 'mjpeg']
36
+ end
37
+
38
+ def to_s
39
+ "Mock 1.0"
40
+ end
41
+ end
42
+ end
data/lib/capturer.rb CHANGED
@@ -2,8 +2,6 @@
2
2
  # Capturer Baseclass
3
3
  #
4
4
 
5
- require 'vcs'
6
-
7
5
  module VCSRuby
8
6
  class Capturer
9
7
  $formats = { :png => 'png', :bmp => 'bmp', :tiff => 'tif', :mjpeg => 'jpg', :jpeg => 'jpg', :jpg => 'jpg' }
@@ -13,8 +11,6 @@ module VCSRuby
13
11
  end
14
12
 
15
13
  def self.initialize_capturers video
16
- capturers = []
17
-
18
14
  puts "Available capturers: #{available_capturers.map{ |c| c.to_s }.join(', ')}" if Tools.verbose?
19
15
  end
20
16
 
data/lib/command.rb CHANGED
@@ -47,4 +47,4 @@ private
47
47
  return nil
48
48
  end
49
49
  end
50
- end
50
+ end
data/lib/configuration.rb CHANGED
@@ -22,6 +22,7 @@ module VCSRuby
22
22
  def initialize
23
23
  default_config_file = File.expand_path("defaults.yml", File.dirname(__FILE__))
24
24
  @config = ::YAML::load_file(default_config_file)
25
+ @verbose = false
25
26
 
26
27
  local_config_files = ['~/.vcs.rb.yml']
27
28
  local_config_files.select{ |f| File.exists?(f) }.each do |local_config_file|
@@ -39,10 +40,10 @@ module VCSRuby
39
40
  profiles = [File.expand_path("#{profile}.yml", File.dirname(__FILE__)), "~/#{profile}.yml"]
40
41
 
41
42
  found = false
42
- profiles.each do |profile|
43
- if File.exists?(profile)
43
+ profiles.each do |p|
44
+ if File.exists?(p)
44
45
  puts "Profile loaded: #{profile}" if verbose?
45
- config = YAML::load_file(profile)
46
+ config = YAML::load_file(p)
46
47
  @config = @config.deep_merge(config)
47
48
  found = true
48
49
  end
@@ -147,4 +148,4 @@ module VCSRuby
147
148
  !!@config['filter']['softshadow']
148
149
  end
149
150
  end
150
- end
151
+ end
data/lib/contact_sheet.rb CHANGED
@@ -6,8 +6,6 @@ require 'fileutils'
6
6
  require 'tmpdir'
7
7
  require 'yaml'
8
8
 
9
- require 'vcs'
10
-
11
9
  module VCSRuby
12
10
  class ContactSheet
13
11
  attr_accessor :signature, :title, :highlight
@@ -254,7 +252,7 @@ private
254
252
  convert << file_path
255
253
  end
256
254
  file_path
257
- end
255
+ end
258
256
 
259
257
  def create_title montage
260
258
  file_path = File::join(@tempdir, 'title.png')
data/lib/font.rb CHANGED
@@ -37,7 +37,7 @@ module VCSRuby
37
37
 
38
38
  def font_by_name name
39
39
  if name =~ /\./
40
- key, font = @@fonts.select{ |key, f| f.glyphs =~ /#{name}\z/ }.first
40
+ _, font = @@fonts.select{ |k, f| f.glyphs =~ /#{name}\z/ }.first
41
41
  return font
42
42
  else
43
43
  @@fonts[name]
data/lib/libAV/libav.rb CHANGED
@@ -39,7 +39,7 @@ module VCSRuby
39
39
 
40
40
  def detect_version
41
41
  info = @avconv.execute('-version')
42
- match = /avconv ([\d|.|-|:]*)/.match(info)
42
+ match = /avconv ([\d|\.|\-|:]*)/.match(info)
43
43
  if match
44
44
  @version = match[1]
45
45
  end
@@ -54,7 +54,7 @@ module VCSRuby
54
54
 
55
55
  colon = ":"
56
56
  if @raw['display_aspect_ratio'].include? colon
57
- w,h = @raw['display_aspect_ratio'].split(colon)
57
+ w,h = @raw['display_aspect_ratio'].split(colon).map { |n| n.to_i }
58
58
  Rational(w,h)
59
59
  else
60
60
  @raw['display_aspect_ratio'].to_f
data/lib/stream.rb CHANGED
@@ -2,8 +2,6 @@
2
2
  # Represents a stream in a video
3
3
  #
4
4
 
5
- require 'vcs'
6
-
7
5
  module VCSRuby
8
6
  class Stream
9
7
  def initialize stream
data/lib/time_index.rb CHANGED
@@ -47,16 +47,12 @@ module VCSRuby
47
47
  end
48
48
 
49
49
  def try_parse_as_number
50
- temp = @to_parse.to_i
50
+ temp = @to_parse.to_f
51
51
  if temp.to_s == @to_parse
52
52
  @total_seconds += temp
53
53
  end
54
54
  end
55
55
 
56
- def total_seconds
57
- @total_seconds
58
- end
59
-
60
56
  def hours
61
57
  (@total_seconds.abs / 3600).to_i
62
58
  end
data/lib/tools.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  #
2
- # Dependencies
2
+ # Various Tool Functions
3
3
  #
4
4
 
5
5
  module VCSRuby
@@ -25,7 +25,7 @@ module VCSRuby
25
25
  MagickVersion = Struct.new(:major, :minor, :revision)
26
26
  def self.magick_version
27
27
  output = %x[convert -version]
28
- m = output.match /(\d+)\.(\d+)\.(\d+)(-(\d+))?/
28
+ m = output.match(/(\d+)\.(\d+)\.(\d+)(-(\d+))?/)
29
29
  MagickVersion.new(m[1].to_i, m[2].to_i, m[3].to_i)
30
30
  end
31
31
 
data/lib/vcs.rb CHANGED
@@ -24,3 +24,4 @@ require 'MPlayer/mplayer'
24
24
  require 'MPlayer/mplayer_audio_stream'
25
25
  require 'MPlayer/mplayer_video_stream'
26
26
  require 'MPlayer/mplayer_meta_info'
27
+ require 'MockCap/mock_capturer'
data/lib/version.info CHANGED
@@ -1 +1 @@
1
- 1.1.10
1
+ 1.1.11
data/lib/video.rb CHANGED
@@ -2,8 +2,6 @@
2
2
  # Represents the video file
3
3
  #
4
4
 
5
- require 'vcs'
6
-
7
5
  module VCSRuby
8
6
  class Video
9
7
  attr_reader :config
@@ -77,7 +75,9 @@ private
77
75
 
78
76
  def capturer
79
77
  result = nil
80
- if Configuration.instance.capturer == :any
78
+ if Configuration.instance.capturer == :mock
79
+ result = MockCapturer.new(self)
80
+ elsif Configuration.instance.capturer == :any
81
81
  result = available_capturers.first
82
82
  else
83
83
  result = available_capturers.select{ |c| c.name == Configuration.instance.capturer }.first
@@ -90,4 +90,4 @@ private
90
90
  return result
91
91
  end
92
92
  end
93
- end
93
+ end
@@ -0,0 +1,13 @@
1
+ require 'minitest'
2
+ require 'vcs'
3
+
4
+ class CommandTest < Minitest::Test
5
+ def test_command
6
+ command = VCSRuby::Command.new 'test_find', 'find'
7
+
8
+ assert_equal 'test_find', command.name
9
+ assert command.available?, 'Command find not found'
10
+
11
+ command.execute '--help'
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ # file: test/test_helper.rb
2
+ require 'minitest/autorun'
3
+ require 'minitest/reporters'
4
+
5
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
@@ -0,0 +1,80 @@
1
+ require 'minitest'
2
+ require 'vcs'
3
+
4
+ class TimeIndexTest < Minitest::Test
5
+ def test_simple_initialisation
6
+ time = VCSRuby::TimeIndex.new 60
7
+
8
+ assert_equal 60, time.total_seconds
9
+ end
10
+
11
+ def test_valid_ffmpeg_parse
12
+ time = VCSRuby::TimeIndex.new '00:59:59'
13
+
14
+ assert_equal 3599, time.total_seconds
15
+ end
16
+
17
+ def test_valid_comma_ffmpeg_parse
18
+ time = VCSRuby::TimeIndex.new '01:09:59.13'
19
+
20
+ assert_equal 4199.13, time.total_seconds
21
+ assert_equal 1, time.hours
22
+ assert_equal 9, time.minutes
23
+ assert_equal 59, time.seconds.to_i
24
+ end
25
+
26
+ def test_invalid_ffmpeg_parse
27
+ time = VCSRuby::TimeIndex.new '59:59'
28
+
29
+ assert_equal 0, time.total_seconds
30
+ end
31
+
32
+ def test_valid_vcs_parse
33
+ time = VCSRuby::TimeIndex.new '5m'
34
+
35
+ assert_equal 300, time.total_seconds
36
+ end
37
+
38
+ def test_complex_vcs_parse
39
+ time = VCSRuby::TimeIndex.new '1h 5m 17s'
40
+
41
+ assert_equal 3917, time.total_seconds
42
+ assert_equal 1, time.hours
43
+ assert_equal 5, time.minutes
44
+ assert_equal 17, time.seconds
45
+ end
46
+
47
+ def test_invalid_string_parse
48
+ time = VCSRuby::TimeIndex.new 'invalid'
49
+
50
+ assert_equal 0, time.total_seconds
51
+ end
52
+
53
+ def test_valid_string_parse
54
+ time = VCSRuby::TimeIndex.new '55.55'
55
+
56
+ assert_equal 55.55, time.total_seconds
57
+ end
58
+
59
+ def test_multiply
60
+ time = VCSRuby::TimeIndex.new '1m 13s'
61
+ five = time * 5
62
+
63
+ assert_equal "0h06m05s", five.to_s
64
+ end
65
+
66
+ def test_addition
67
+ time1 = VCSRuby::TimeIndex.new '1m 13s'
68
+ time2 = VCSRuby::TimeIndex.new 3600
69
+ total = time1 + time2
70
+
71
+ assert_equal "1:01:13", total.to_timestamp
72
+ end
73
+
74
+ def test_valid_substraction
75
+ time = VCSRuby::TimeIndex.new '3h 17m'
76
+ total = time - 20000
77
+
78
+ assert_equal "-2h16m20s", total.to_s
79
+ end
80
+ end
@@ -0,0 +1,14 @@
1
+ require 'minitest'
2
+ require 'vcs'
3
+
4
+ class VideoTest < Minitest::Test
5
+ def setup
6
+ VCSRuby::Configuration.instance.capturer = :mock
7
+ end
8
+
9
+ def test_video_basic_setup
10
+ video = VCSRuby::Video.new 'mock.mpg'
11
+ assert_equal :mock, video.capturer_name
12
+ assert video.valid?
13
+ end
14
+ end
metadata CHANGED
@@ -1,80 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vcs_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.10
5
- prerelease:
4
+ version: 1.1.11
6
5
  platform: ruby
7
6
  authors:
8
7
  - Thomas Bruderer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2017-01-13 00:00:00.000000000 Z
11
+ date: 2017-03-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: mini_magick
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '4.0'
22
- - - ! '>='
20
+ - - ">="
23
21
  - !ruby/object:Gem::Version
24
22
  version: 4.0.0
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ~>
27
+ - - "~>"
31
28
  - !ruby/object:Gem::Version
32
29
  version: '4.0'
33
- - - ! '>='
30
+ - - ">="
34
31
  - !ruby/object:Gem::Version
35
32
  version: 4.0.0
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: bundler
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
- - - ~>
37
+ - - "~>"
42
38
  - !ruby/object:Gem::Version
43
39
  version: '1.5'
44
- - - ! '>='
40
+ - - ">="
45
41
  - !ruby/object:Gem::Version
46
42
  version: 1.5.0
47
43
  type: :development
48
44
  prerelease: false
49
45
  version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
46
  requirements:
52
- - - ~>
47
+ - - "~>"
53
48
  - !ruby/object:Gem::Version
54
49
  version: '1.5'
55
- - - ! '>='
50
+ - - ">="
56
51
  - !ruby/object:Gem::Version
57
52
  version: 1.5.0
58
53
  - !ruby/object:Gem::Dependency
59
54
  name: rake
60
55
  requirement: !ruby/object:Gem::Requirement
61
- none: false
62
56
  requirements:
63
- - - ~>
57
+ - - "~>"
64
58
  - !ruby/object:Gem::Version
65
59
  version: '11.0'
66
- - - ! '>='
60
+ - - ">="
67
61
  - !ruby/object:Gem::Version
68
62
  version: 11.0.0
69
63
  type: :development
70
64
  prerelease: false
71
65
  version_requirements: !ruby/object:Gem::Requirement
72
- none: false
73
66
  requirements:
74
- - - ~>
67
+ - - "~>"
75
68
  - !ruby/object:Gem::Version
76
69
  version: '11.0'
77
- - - ! '>='
70
+ - - ">="
78
71
  - !ruby/object:Gem::Version
79
72
  version: 11.0.0
80
73
  description: Creates a contact sheet, a preview, of a video, usable as library or
@@ -86,60 +79,68 @@ executables:
86
79
  extensions: []
87
80
  extra_rdoc_files: []
88
81
  files:
89
- - lib/frame.rb
90
- - lib/video.rb
91
- - lib/MPlayer/mplayer_video_stream.rb
82
+ - bin/vcs.rb
83
+ - lib/FFmpeg/ffmpeg.rb
84
+ - lib/FFmpeg/ffmpeg_audio_stream.rb
85
+ - lib/FFmpeg/ffmpeg_meta_info.rb
86
+ - lib/FFmpeg/ffmpeg_video_stream.rb
92
87
  - lib/MPlayer/mplayer.rb
93
88
  - lib/MPlayer/mplayer_audio_stream.rb
94
89
  - lib/MPlayer/mplayer_meta_info.rb
90
+ - lib/MPlayer/mplayer_video_stream.rb
91
+ - lib/MockCap/mock_capturer.rb
92
+ - lib/black.yml
93
+ - lib/capturer.rb
94
+ - lib/command.rb
95
+ - lib/configuration.rb
96
+ - lib/contact_sheet.rb
97
+ - lib/defaults.yml
98
+ - lib/font.rb
99
+ - lib/frame.rb
100
+ - lib/libAV/libav.rb
95
101
  - lib/libAV/libav_audio_stream.rb
96
102
  - lib/libAV/libav_meta_info.rb
97
103
  - lib/libAV/libav_video_stream.rb
98
- - lib/libAV/libav.rb
99
- - lib/time_index.rb
100
- - lib/font.rb
104
+ - lib/oldstyle.yml
101
105
  - lib/stream.rb
106
+ - lib/time_index.rb
102
107
  - lib/tools.rb
103
- - lib/contact_sheet.rb
108
+ - lib/vcs.rb
109
+ - lib/version.info
104
110
  - lib/version.rb
111
+ - lib/video.rb
105
112
  - lib/white.yml
106
- - lib/capturer.rb
107
- - lib/FFmpeg/ffmpeg_meta_info.rb
108
- - lib/FFmpeg/ffmpeg_video_stream.rb
109
- - lib/FFmpeg/ffmpeg.rb
110
- - lib/FFmpeg/ffmpeg_audio_stream.rb
111
- - lib/version.info
112
- - lib/vcs.rb
113
- - lib/command.rb
114
- - lib/black.yml
115
- - lib/configuration.rb
116
- - lib/oldstyle.yml
117
- - lib/defaults.yml
118
- - bin/vcs.rb
113
+ - test/command_test.rb
114
+ - test/test_helper.rb
115
+ - test/time_index_test.rb
116
+ - test/video_test.rb
119
117
  homepage: https://github.com/FreeApophis/vcs.rb
120
118
  licenses:
121
119
  - GPL3
120
+ metadata: {}
122
121
  post_install_message:
123
122
  rdoc_options: []
124
123
  require_paths:
125
124
  - lib
126
125
  required_ruby_version: !ruby/object:Gem::Requirement
127
- none: false
128
126
  requirements:
129
- - - ! '>='
127
+ - - ">="
130
128
  - !ruby/object:Gem::Version
131
129
  version: 1.8.6
132
130
  required_rubygems_version: !ruby/object:Gem::Requirement
133
- none: false
134
131
  requirements:
135
- - - ! '>='
132
+ - - ">="
136
133
  - !ruby/object:Gem::Version
137
134
  version: '0'
138
135
  requirements:
139
136
  - libav or ffmpeg or mplayer
140
137
  rubyforge_project:
141
- rubygems_version: 1.8.23
138
+ rubygems_version: 2.6.10
142
139
  signing_key:
143
- specification_version: 3
140
+ specification_version: 4
144
141
  summary: Generates contact sheets of videos
145
- test_files: []
142
+ test_files:
143
+ - test/video_test.rb
144
+ - test/command_test.rb
145
+ - test/time_index_test.rb
146
+ - test/test_helper.rb