vtt2ass 0.3.0 → 0.3.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: 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: