vtt2ass 0.3.0 → 0.3.3

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
  SHA256:
3
- metadata.gz: 725876fe775e13997b8bfea4f1f8d1bd87fe18420c4adfabebc7aa6eced12464
4
- data.tar.gz: 13ebdd5f0542f75a9a886e028afb3f93621e68c6b61304d8976320d804d447f8
3
+ metadata.gz: d3959903aff7b00e3544a9656edf9a17f9508445db041d28518549926cca7a09
4
+ data.tar.gz: 51359298d3ff0ed985ce10f48b18c5f2b84eec19b267e0781cd2b6ef12320e22
5
5
  SHA512:
6
- metadata.gz: 1656502fd7ff8f0b180a8826d593d763e855641e780b70f3e9f320a05c385c5ebfca97b5f037f87bacadabbbe86c35f9718fb6e9a5dd828bd3d9c7b2ede3ac37
7
- data.tar.gz: a6099e227e52f45783a9462b3041b272bbe01ff76c87f10c44508df3711a61559865dd180f06ea38c02b2db245a6a9ed48732626e8ef4dd95b664d1f3177ac8f
6
+ metadata.gz: ae929a40df7f483e8bd76cc43920177d299756cfe9774fc850f0e7a66b877d74c40314d2d8647cabf6ba5b2c7e0743533ce9236873d28c86203a76c74c9628d8
7
+ data.tar.gz: 1a280a2a76c87e2678c6275b65c1226779799e61abd8b2909816897e5e44b18a649d0c0f364ae97249044593656120e823edf80f06836703963840321449d088
data/README.md CHANGED
@@ -43,6 +43,8 @@ Options:
43
43
  -f, [--font-family=FONT_FAMILY] # Specify a font family for the subtitles
44
44
  # Default: Open Sans Semibold
45
45
  -c, [--css=CSS] # Specify a CSS file path for Hidive subs
46
+ -l, [--line-offset=N] # Specify a line offset for the main dialog (e.g. 50 lowers the text line by 50px of the total height)
47
+ # Default: 0
46
48
  -q, [--quiet], [--no-quiet] # Don't output to the console
47
49
 
48
50
  Run the VTT to ASS conversion for the specified file(s)
@@ -1,6 +1,6 @@
1
1
  # Relative imports
2
- require_relative 'VTTFile'
3
- require_relative 'ASSFile'
2
+ require_relative 'vtt_file'
3
+ require_relative 'ass_file'
4
4
 
5
5
  ##
6
6
  # Main application class that manages all the operations.
@@ -21,8 +21,9 @@ class Application
21
21
  end
22
22
  @quiet = options[:quiet]
23
23
  if options[:css] then
24
- @css = options[:css].gsub('\\', '/')
24
+ @css = options[:css].gsub('\\', '/').delete_suffix('/')
25
25
  end
26
+ @line_offset = options[:line_offset]
26
27
  end
27
28
 
28
29
  ##
@@ -53,14 +54,23 @@ class Application
53
54
  # This method creates a new VTTFile object from the file path provided and convert its content
54
55
  # inside a new ASSFile object.
55
56
  def vtt_to_ass(file_path)
57
+ base_file_name = File.basename(file_path).gsub('.vtt', '')
58
+ css_file = nil
59
+ if defined?(@css) and File.directory?(@css) then
60
+ css_file = "#{@css}/#{base_file_name}.css"
61
+ elsif File.file?("#{file_path.gsub('.vtt', '')}.css") then
62
+ css_file = "#{file_path.gsub('.vtt', '')}.css"
63
+ else
64
+ css_file = @css
65
+ end
56
66
  vtt_file = VTTFile.new(file_path, @width, @height)
57
67
  ass_file = ASSFile.new(
58
- (defined?(@title) ? @title : File.basename(file_path).gsub('.vtt', '')),
68
+ (defined?(@title) ? @title : base_file_name),
59
69
  @width,
60
70
  @height,
61
- defined?(@css) ? @css : nil
71
+ css_file
62
72
  )
63
- ass_file.convertVTTtoASS(vtt_file, @font_family, @font_size)
73
+ ass_file.convertVTTtoASS(vtt_file, @font_family, @font_size, @line_offset)
64
74
  return ass_file
65
75
  end
66
76
 
@@ -1,8 +1,8 @@
1
1
  # Relative imports
2
- require_relative 'ASSLine'
3
- require_relative 'ASSStyle'
4
- require_relative 'CSSFile'
5
- require_relative 'CSSRule'
2
+ require_relative 'ass_line'
3
+ require_relative 'ass_style'
4
+ require_relative 'css_file'
5
+ require_relative 'css_rule'
6
6
 
7
7
  ##
8
8
  # This class defines an ASS subtitle file.
@@ -45,10 +45,12 @@ class ASSFile
45
45
  # This method receives a VTTFile object and font arguments creates new ASSLine with the params of
46
46
  # each VTTLine. All those ASSLine are stored in an array. It also creates an array of ASSStyle that
47
47
  # will be used in the ASS style list.
48
- def convertVTTtoASS(vtt_file, font_family, font_size)
48
+ def convertVTTtoASS(vtt_file, font_family, font_size, line_offset = 0)
49
49
  fs = font_size
50
- font_color = '&H00FFFFFF'
51
50
  vtt_file.lines.each do |line|
51
+ font_color = '&H00FFFFFF'
52
+ is_italic = false
53
+ is_bold = false
52
54
  @ass_lines.push(ASSLine.new(line.style, line.time_start, line.time_end, line.text))
53
55
  style_exists = false
54
56
  @ass_styles.each do |style|
@@ -74,11 +76,19 @@ class ASSFile
74
76
  font_size = (fs * em_size).to_i
75
77
  when 'color'
76
78
  font_color = ASSStyle.convert_color(property[:value])
79
+ when 'font-weight'
80
+ if property[:value].eql? 'bold' then
81
+ is_bold = true
82
+ end
83
+ when 'font-style'
84
+ if property[:value].eql? 'italic' then
85
+ is_italic = true
86
+ end
77
87
  end
78
88
  end
79
89
  end
80
90
  end
81
- @ass_styles.push(ASSStyle.new(line.style, line.params, font_family, font_size, font_color, @width, @height))
91
+ @ass_styles.push(ASSStyle.new(line.style, line.params, font_family, font_size, font_color, is_bold, is_italic, line_offset, @width, @height))
82
92
  end
83
93
  end
84
94
  end
File without changes
@@ -1,6 +1,6 @@
1
1
  # Relative imports
2
- require_relative 'ASSStyleParams'
3
- require_relative 'Validator'
2
+ require_relative 'ass_style_params'
3
+ require_relative 'validator'
4
4
  require 'redgreenblue'
5
5
 
6
6
  ##
@@ -15,7 +15,7 @@ class ASSStyle
15
15
  # * Requires +params+, a string of VTT styling as input.
16
16
  # * Requires a video +width+ as input.
17
17
  # * Requires a video +height+ as input.
18
- def initialize(style_name, params, font_family, font_size, font_color, width, height)
18
+ def initialize(style_name, params, font_family, font_size, font_color, is_bold, is_italic, line_offset, width, height)
19
19
  @width = width
20
20
  @height = height
21
21
  @font_family = font_family
@@ -26,12 +26,18 @@ class ASSStyle
26
26
  if style_name.eql? 'MainTop' then
27
27
  @s_params.vertical_margin = 50
28
28
  end
29
+ if style_name.include? 'Subtitle' then
30
+ @s_params.vertical_margin -= line_offset
31
+ end
32
+ @is_italic = is_italic
33
+ @is_bold = is_bold
29
34
  end
30
35
 
31
36
  ##
32
37
  # This method assigns the object values to an ASS style line and outputs it.
33
38
  def to_s
34
- return "Style: #{@style_name},#{@font_family},#{@font_size},#{@font_color},&H000000FF,&H00020713,&H00000000,-1,0,0,0,100,100,0,0,1,2.0,2.0,#{@s_params.alignment},#{@s_params.horizontal_margin},0,#{@s_params.vertical_margin},1"
39
+ # Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
40
+ return "Style: #{@style_name},#{@font_family},#{@font_size},#{@font_color},&H000000FF,&H00020713,&H00000000,#{@is_bold ? '-1' : '0'},#{@is_italic ? '-1' : '0'},0,0,100,100,0,0,1,2.0,2.0,#{@s_params.alignment},#{@s_params.horizontal_margin},0,#{@s_params.vertical_margin},1"
35
41
  end
36
42
 
37
43
  def self.convert_color(color_value)
@@ -1,5 +1,5 @@
1
1
  require 'css_parser'
2
- require_relative 'CSSRule'
2
+ require_relative 'css_rule'
3
3
 
4
4
  class CSSFile
5
5
  attr_reader :rules
@@ -3,8 +3,8 @@ class CSSRule
3
3
 
4
4
  def initialize(selector, declarations)
5
5
  @name = reduce_selector(selector)
6
+ @properties = []
6
7
  declarations.split(/;\s?/).each do |dec|
7
- @properties = []
8
8
  temp = dec.split(/:\s?/)
9
9
  @properties.push(
10
10
  { key: temp.first, value: temp.last}
File without changes
@@ -4,5 +4,5 @@ module Vtt2ass
4
4
  ##
5
5
  # This is the version of the application.
6
6
  # This needs to be changed for each gem release.
7
- VERSION = "0.3.0"
7
+ VERSION = "0.3.3"
8
8
  end
@@ -1,5 +1,5 @@
1
1
  # Relative imports
2
- require_relative 'VTTLine'
2
+ require_relative 'vtt_line'
3
3
 
4
4
  ##
5
5
  # This class defines a VTT subtile file.
File without changes
data/lib/vtt2ass.rb CHANGED
@@ -3,7 +3,7 @@ require 'thor'
3
3
 
4
4
  # Relative imports
5
5
  require_relative 'vtt2ass/version'
6
- require_relative 'vtt2ass/Application'
6
+ require_relative 'vtt2ass/application'
7
7
 
8
8
  class MainCommand < Thor
9
9
  def self.exit_on_failure?
@@ -16,6 +16,7 @@ class MainCommand < Thor
16
16
  method_option :font_size, :aliases => '-s', :desc => 'Specify a font size for the subtitles', :default => 52, :type => :numeric
17
17
  method_option :font_family, :aliases => '-f', :desc => 'Specify a font family for the subtitles', :default => 'Open Sans Semibold', :type => :string
18
18
  method_option :css, :aliases => '-c', :desc => 'Specify a CSS file path for Hidive subs', :type => :string
19
+ method_option :line_offset, :aliases => '-l', :desc => 'Specify a line offset for the main dialog (e.g. 50 lowers the text line by 50px of the total height)', :default => 0, :type => :numeric
19
20
  method_option :quiet, :aliases => '-q', :desc => 'Don\'t output to the console', :type => :boolean
20
21
  def convert(input)
21
22
  app = Application.new(input, options)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vtt2ass
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis-Philippe Fortin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-30 00:00:00.000000000 Z
11
+ date: 2022-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlentities
@@ -153,17 +153,17 @@ files:
153
153
  - doc/top-level-namespace.html
154
154
  - exe/vtt2ass
155
155
  - lib/vtt2ass.rb
156
- - lib/vtt2ass/ASSFile.rb
157
- - lib/vtt2ass/ASSLine.rb
158
- - lib/vtt2ass/ASSStyle.rb
159
- - lib/vtt2ass/ASSStyleParams.rb
160
- - lib/vtt2ass/Application.rb
161
- - lib/vtt2ass/CSSFile.rb
162
- - lib/vtt2ass/CSSRule.rb
163
- - lib/vtt2ass/VTTFile.rb
164
- - lib/vtt2ass/VTTLine.rb
165
- - lib/vtt2ass/Validator.rb
156
+ - lib/vtt2ass/application.rb
157
+ - lib/vtt2ass/ass_file.rb
158
+ - lib/vtt2ass/ass_line.rb
159
+ - lib/vtt2ass/ass_style.rb
160
+ - lib/vtt2ass/ass_style_params.rb
161
+ - lib/vtt2ass/css_file.rb
162
+ - lib/vtt2ass/css_rule.rb
163
+ - lib/vtt2ass/validator.rb
166
164
  - lib/vtt2ass/version.rb
165
+ - lib/vtt2ass/vtt_file.rb
166
+ - lib/vtt2ass/vtt_line.rb
167
167
  - vtt2ass.gemspec
168
168
  homepage: https://gitlab.com/dkb-weeblets/vtt2ass
169
169
  licenses: