transcode 1.0.2 → 1.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
  SHA256:
3
- metadata.gz: ae3f7763cf145e6b4351e665a1f324e1a324060c9117cbe739a44f5c51619e32
4
- data.tar.gz: 3534289d109e82b54f5f9d259348737c606edafb56e304890bb9c4a17da5fdbd
3
+ metadata.gz: b226e860131744a93fe08350592d1ea68fe654bff97d29d16ecbc0a71120aed5
4
+ data.tar.gz: 5e4e5db31ef304fbe5936cf9bc549d760ae0a43df5de0b7588a4cb7d4e5bf0ab
5
5
  SHA512:
6
- metadata.gz: 2090ebf12e25dfcec5e1986a824847ca8ba9641f2ebb947db148e3552410303fbc9504d4fa35399a833aa73a697bbe5e245fe00a21bc661d9e7a96d56dfe592a
7
- data.tar.gz: 780b74d991767203c1a3fc56566390aae8bc23260ab069f169ac925155ad19b05a3d3aa5a0fc0c7ec9a90d1c7ee5e4a16a5234f807a641f8f3c5d19d79aacb6e
6
+ metadata.gz: aa1c762d5a4b78c11427376fb4d137609d2260ffc74ca34106d1f795fbb5d5baa837ce5eadbb620c532f138bd614e4f2e657ecc9ca843c62237e813ef2809887
7
+ data.tar.gz: b259365085e5a20aa7f2544c46323f7f858b4a1604599493abf8b336cba1d697f977a7bc91d02fb8026c2021e443547588ae47bd5a57fc0c351cc1f55c33b22c
data/Gemfile CHANGED
@@ -6,8 +6,11 @@
6
6
  source 'https://rubygems.org'
7
7
  ruby '~>2.6'
8
8
 
9
+ gem 'minitest', '5.11.3'
9
10
  gem 'pidfile', '0.3.0'
10
11
  gem 'rake', '13.0.1'
11
12
  gem 'rubocop', '0.76.0'
12
13
  gem 'terminal-table', '1.8.0'
13
14
  gem 'video_transcoding', '0.25.3'
15
+
16
+ # gemspec
File without changes
data/README.md CHANGED
@@ -1,12 +1,16 @@
1
1
  # Transcode
2
- Tool to transcode batch of video files
2
+ Tool to transcode batch of video files.
3
3
 
4
4
  [![Build
5
5
  Status](https://travis-ci.org/rdavid/transcode.svg)](https://travis-ci.org/rdavid/transcode)
6
6
  [![Build
7
7
  status](https://ci.appveyor.com/api/projects/status/yqxb43ltxrjj776a?svg=true)](https://ci.appveyor.com/project/rdavid/transcode)
8
+ ![Ruby](https://github.com/rdavid/transcode/workflows/Ruby/badge.svg)
8
9
  [![Gem
9
10
  Version](https://badge.fury.io/rb/transcode.svg)](https://badge.fury.io/rb/transcode)
11
+
12
+ [![Maintainability](https://api.codeclimate.com/v1/badges/5e21a1c1f8a3923584e3/maintainability)](https://codeclimate.com/github/rdavid/transcode/maintainability)
13
+ [![Hits-of-Code](https://hitsofcode.com/github/rdavid/transcode)](https://hitsofcode.com/view/github/rdavid/transcode)
10
14
  [![License](https://img.shields.io/github/license/rdavid/transcode)](https://github.com/rdavid/transcode/blob/master/LICENSE.txt)
11
15
 
12
16
  * [About](#about)
@@ -15,7 +19,7 @@ Version](https://badge.fury.io/rb/transcode.svg)](https://badge.fury.io/rb/trans
15
19
  * [License](#license)
16
20
 
17
21
  ## About
18
- Hi, I'm [David Rabkin](https://www.rabkin.co.il). I created this tool to
22
+ Hi, I'm [David Rabkin](http://davi.drabk.in). I created this tool to
19
23
  enhance [Don Melton](http://donmelton.com/)'s [Video
20
24
  Transcoding](https://github.com/donmelton/video_transcoding/). It applies
21
25
  Video Trascoding to each video file in a directory.
@@ -36,7 +40,7 @@ Use this command to update the package:
36
40
  gem update transcode
37
41
 
38
42
  ### Requirements
39
- See [Video Transcoding requirements](https://github.com/donmelton/video_transcoding/blob/master/README.md?ts=2#requirements).
43
+ See Video Transcoding's [requirements](https://github.com/donmelton/video_transcoding/blob/master/README.md?ts=2#requirements).
40
44
 
41
45
  ## Usage
42
46
  transcode [options]
@@ -49,6 +53,7 @@ See [Video Transcoding requirements](https://github.com/donmelton/video_transcod
49
53
  -u, --aud aud Audio stream numbers.
50
54
  -t, --sub sub Subtitle stream numbers.
51
55
  -w, --wid wid Width of the table.
56
+ -v, --version Show version.
52
57
 
53
58
  ### Example
54
59
  transcode -d <source> -o <destination> -u 1,3,1 -t 2,1,3
@@ -57,5 +62,5 @@ It converts three files from source with certain audio and subtitle streams.
57
62
  Inspect first with `-s` option to see audio and subtitle streams.
58
63
 
59
64
  ## License
60
- Transcode is copyright [David Rabkin](http://www.rabkin.co.il/) and
65
+ Transcode is copyright [David Rabkin](http://davi.drabk.in) and
61
66
  available under a [2-Claus BSD license](https://github.com/rdavid/transcode/blob/master/LICENSE).
data/Rakefile CHANGED
@@ -6,5 +6,5 @@
6
6
  task default: %w[test]
7
7
 
8
8
  task :test do
9
- # ruby 'test/unittest.rb'
9
+ ruby 'test/test_utils.rb'
10
10
  end
@@ -21,14 +21,22 @@ module Transcode
21
21
  ['-w', '--wid wid', 'Width of the table.', Integer, :wid]
22
22
  ].freeze
23
23
  EXT = %i[
24
- avi flv m4v mkv mp4 mpg mpeg ts webm vob wmv
24
+ avi flv m4v mkv mp4 mpg mpeg mov ts webm vob wmv
25
25
  ].map(&:to_s).join(',').freeze
26
26
 
27
+ def add(opt)
28
+ opt.on('-v', '--version', 'Show version.') do
29
+ puts "#{File.basename($PROGRAM_NAME)} #{VERSION} #{DATE}"
30
+ exit
31
+ end
32
+ end
33
+
27
34
  def initialize
28
35
  @options = {}
29
36
  OptionParser.new do |o|
30
37
  o.banner = "Usage: #{File.basename($PROGRAM_NAME)} [options]."
31
38
  DIC.each { |f, p, d, t, k| o.on(f, p, t, d) { |i| @options[k] = i } }
39
+ add(o)
32
40
  end.parse!
33
41
  find_dir
34
42
  find_fil
@@ -36,14 +44,8 @@ module Transcode
36
44
  end
37
45
 
38
46
  def find_dir
39
- if dir.nil?
40
- @options[:dir] = Dir.pwd
41
- else
42
- raise "No such directory: #{dir}." unless File.directory?(dir)
43
-
44
- @options[:dir] = File.expand_path(dir)
45
- end
46
- @options[:out] = File.expand_path(out.nil? ? '~' : out)
47
+ @options[:dir] = File.expand_path(dir.nil? ? Dir.pwd : dir)
48
+ @options[:out] = File.expand_path(out.nil? ? Dir.pwd : out)
47
49
  end
48
50
 
49
51
  def find_fil
@@ -55,18 +57,26 @@ module Transcode
55
57
  end
56
58
 
57
59
  def validate
58
- validate_files
60
+ validate_dir(dir, false)
61
+ validate_dir(out, true)
62
+ validate_fil
59
63
  validate_tit
60
64
  validate_val(aud, :aud)
61
65
  validate_val(sub, :sub)
62
66
  raise "Width of the table should exeeds 14 symbols: #{wid}." if wid < 15
63
67
  end
64
68
 
65
- def validate_files
66
- raise "#{dir} doesn't have #{EXT} files or directories." if files.empty?
69
+ def validate_dir(dir, isw)
70
+ raise "#{dir}: No such directory." unless File.directory?(dir)
71
+
72
+ err = isw ? File.writable?(dir) : File.readable?(dir)
73
+ raise "#{out}: Permission denied." unless err
74
+ end
67
75
 
76
+ def validate_fil
68
77
  bad = files.reject { |f| File.readable?(f) }
69
- raise "Unable to read #{bad} files." unless bad.empty?
78
+ raise "#{dir} doesn't have #{EXT} files or directories." if files.empty?
79
+ raise "#{bad.join(',')}: Permission denied." unless bad.empty?
70
80
  end
71
81
 
72
82
  def validate_tit # rubocop:disable Metrics/AbcSize
@@ -84,6 +94,7 @@ module Transcode
84
94
  def validate_val(val, tag)
85
95
  f = files.size
86
96
  (@options[tag] = Array.new(f, '0')).nil? || return if val.nil?
97
+
87
98
  s = val.size
88
99
  if s == 1
89
100
  @options[tag] = Array.new(f, val.first)
@@ -5,20 +5,27 @@
5
5
 
6
6
  # All methods are static.
7
7
  class Utils
8
+ @sep = '~'
8
9
  class << self
9
- SEP = '~'
10
+ attr_accessor :sep
10
11
  def trim(src, lim)
12
+ return '' if src.nil? || lim.nil?
11
13
  return src if src.length <= lim
12
14
 
13
- beg = fin = (lim - SEP.length) / 2
15
+ beg = fin = (lim - @sep.length) / 2
14
16
  beg -= 1 if lim.odd?
15
- src[0..beg] + SEP + src[-fin..-1]
17
+ src[0..beg] + @sep + src[-fin..-1]
16
18
  end
17
19
  end
18
20
  end
19
21
 
20
22
  # Returns string with humanized time interval.
21
23
  class Timer
24
+ @less_sec = 'less than a second'
25
+ class << self
26
+ attr_reader :less_sec
27
+ end
28
+
22
29
  DIC = [
23
30
  [60, :seconds, :second],
24
31
  [60, :minutes, :minute],
@@ -35,7 +42,8 @@ class Timer
35
42
  end
36
43
 
37
44
  def humanize(sec)
38
- return 'less than a second' if sec < 1
45
+ return '' if sec.nil?
46
+ return Timer.less_sec if sec < 1
39
47
 
40
48
  DIC.map do |cnt, nms, nm1|
41
49
  next if sec <= 0
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # vi:ts=2 sw=2 tw=79 et lbr wrap
4
- # Copyright 2018-present David Rabkin
4
+ # Copyright 2020-present David Rabkin
5
5
 
6
6
  module Transcode
7
- VERSION = '1.0.2'
7
+ VERSION = '1.0.3'
8
+ DATE = '2020-11-04'
8
9
  end
@@ -7,6 +7,7 @@ require 'transcode'
7
7
  Gem::Specification.new do |s|
8
8
  s.name = 'transcode'
9
9
  s.version = Transcode::VERSION
10
+ s.date = Transcode::DATE
10
11
  s.required_ruby_version = '~> 2.6'
11
12
  s.summary = 'Tools to transcode batch of video files.'
12
13
  s.description = <<-HERE
@@ -18,11 +19,12 @@ Gem::Specification.new do |s|
18
19
  s.homepage = 'https://github.com/rdavid/transcode'
19
20
  s.files = Dir['{bin,lib}/**/*'] + Dir['[A-Z]*'] + ['transcode.gemspec']
20
21
  s.executables = ['transcode']
21
- s.extra_rdoc_files = ['LICENSE', 'README.md']
22
+ s.extra_rdoc_files = ['LICENSE.txt', 'README.md']
22
23
  s.require_paths = ['lib']
23
24
  s.add_runtime_dependency 'pidfile', '0.3.0'
24
25
  s.add_runtime_dependency 'terminal-table', '1.8.0'
25
26
  s.add_runtime_dependency 'video_transcoding', '0.25.3'
27
+ s.add_development_dependency 'minitest', '5.11.3'
26
28
  s.add_development_dependency 'rake', '13.0.1'
27
29
  s.add_development_dependency 'rubocop', '0.76.0'
28
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transcode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rabkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-10 00:00:00.000000000 Z
11
+ date: 2020-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pidfile
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.25.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 5.11.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 5.11.3
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,12 +100,11 @@ executables:
86
100
  - transcode
87
101
  extensions: []
88
102
  extra_rdoc_files:
89
- - LICENSE
103
+ - LICENSE.txt
90
104
  - README.md
91
105
  files:
92
106
  - Gemfile
93
- - Gemfile.lock
94
- - LICENSE
107
+ - LICENSE.txt
95
108
  - README.md
96
109
  - Rakefile
97
110
  - appveyor.yml
@@ -1,39 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- ast (2.4.0)
5
- jaro_winkler (1.5.4)
6
- parallel (1.19.1)
7
- parser (2.7.1.3)
8
- ast (~> 2.4.0)
9
- pidfile (0.3.0)
10
- rainbow (3.0.0)
11
- rake (13.0.1)
12
- rubocop (0.76.0)
13
- jaro_winkler (~> 1.5.1)
14
- parallel (~> 1.10)
15
- parser (>= 2.6)
16
- rainbow (>= 2.2.2, < 4.0)
17
- ruby-progressbar (~> 1.7)
18
- unicode-display_width (>= 1.4.0, < 1.7)
19
- ruby-progressbar (1.10.1)
20
- terminal-table (1.8.0)
21
- unicode-display_width (~> 1.1, >= 1.1.1)
22
- unicode-display_width (1.6.1)
23
- video_transcoding (0.25.3)
24
-
25
- PLATFORMS
26
- ruby
27
-
28
- DEPENDENCIES
29
- pidfile (= 0.3.0)
30
- rake (= 13.0.1)
31
- rubocop (= 0.76.0)
32
- terminal-table (= 1.8.0)
33
- video_transcoding (= 0.25.3)
34
-
35
- RUBY VERSION
36
- ruby 2.6.3p62
37
-
38
- BUNDLED WITH
39
- 2.1.4