titlekit 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +3 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +335 -0
- data/Rakefile +8 -0
- data/lib/titlekit/have.rb +90 -0
- data/lib/titlekit/job.rb +446 -0
- data/lib/titlekit/parsers/ass.rb +175 -0
- data/lib/titlekit/parsers/ass.treetop +72 -0
- data/lib/titlekit/parsers/srt.rb +139 -0
- data/lib/titlekit/parsers/srt.treetop +73 -0
- data/lib/titlekit/parsers/ssa.rb +201 -0
- data/lib/titlekit/parsers/ssa.treetop +72 -0
- data/lib/titlekit/specification.rb +131 -0
- data/lib/titlekit/utilities.rb +3 -0
- data/lib/titlekit/version.rb +3 -0
- data/lib/titlekit/want.rb +24 -0
- data/lib/titlekit.rb +9 -0
- data/spec/ass_spec.rb +113 -0
- data/spec/automatic_grouping/automatic_grouping_spec.rb +55 -0
- data/spec/automatic_grouping/dual_tracks/expected.srt +15 -0
- data/spec/automatic_grouping/dual_tracks/one.srt +11 -0
- data/spec/automatic_grouping/dual_tracks/out.srt +15 -0
- data/spec/automatic_grouping/dual_tracks/two.srt +11 -0
- data/spec/automatic_grouping/single_track/expected.srt +24 -0
- data/spec/automatic_grouping/single_track/one.srt +11 -0
- data/spec/automatic_grouping/single_track/out.srt +24 -0
- data/spec/automatic_grouping/single_track/two.srt +11 -0
- data/spec/encoding_detection/a/in.ass +0 -0
- data/spec/encoding_detection/b/in.srt +2389 -0
- data/spec/encoding_detection/b/out.srt +2389 -0
- data/spec/encoding_detection/c/in.srt +5320 -0
- data/spec/encoding_detection/c/out.srt +5320 -0
- data/spec/encoding_detection/encoding_detection_spec.rb +81 -0
- data/spec/files/ass/authentic.ass +0 -0
- data/spec/files/ass/hard.ass +37 -0
- data/spec/files/ass/simple.ass +28 -0
- data/spec/files/srt/authentic.srt +2708 -0
- data/spec/files/srt/coordinates.srt +13 -0
- data/spec/files/srt/simple.srt +12 -0
- data/spec/files/ssa/simple.ssa +26 -0
- data/spec/files/try/unsupported-output.try +0 -0
- data/spec/files/try/unsupported.try +7 -0
- data/spec/format_conversion/ass_srt/expected.srt +2327 -0
- data/spec/format_conversion/ass_srt/in.ass +485 -0
- data/spec/format_conversion/ass_srt/out.srt +2327 -0
- data/spec/format_conversion/format_conversion_spec.rb +112 -0
- data/spec/format_conversion/srt_ass/expected.ass +19 -0
- data/spec/format_conversion/srt_ass/in.srt +12 -0
- data/spec/format_conversion/srt_ass/out.ass +19 -0
- data/spec/format_conversion/srt_ssa/expected.ssa +19 -0
- data/spec/format_conversion/srt_ssa/in.srt +12 -0
- data/spec/format_conversion/srt_ssa/out.ssa +19 -0
- data/spec/format_conversion/ssa_srt/expected.srt +9 -0
- data/spec/format_conversion/ssa_srt/in.ssa +26 -0
- data/spec/format_conversion/ssa_srt/out.srt +9 -0
- data/spec/job_spec.rb +162 -0
- data/spec/simultaneous_subtitles/dual/ass/expected.ass +22 -0
- data/spec/simultaneous_subtitles/dual/ass/out.ass +22 -0
- data/spec/simultaneous_subtitles/dual/one.srt +11 -0
- data/spec/simultaneous_subtitles/dual/srt/expected.srt +27 -0
- data/spec/simultaneous_subtitles/dual/srt/out.srt +27 -0
- data/spec/simultaneous_subtitles/dual/ssa/expected.ssa +22 -0
- data/spec/simultaneous_subtitles/dual/ssa/out.ssa +22 -0
- data/spec/simultaneous_subtitles/dual/two.srt +11 -0
- data/spec/simultaneous_subtitles/simultaneous_subtitles_spec.rb +220 -0
- data/spec/simultaneous_subtitles/triple/ass/expected.ass +25 -0
- data/spec/simultaneous_subtitles/triple/ass/out.ass +25 -0
- data/spec/simultaneous_subtitles/triple/one.srt +11 -0
- data/spec/simultaneous_subtitles/triple/srt/expected.srt +55 -0
- data/spec/simultaneous_subtitles/triple/srt/out.srt +55 -0
- data/spec/simultaneous_subtitles/triple/ssa/expected.ssa +25 -0
- data/spec/simultaneous_subtitles/triple/ssa/out.ssa +25 -0
- data/spec/simultaneous_subtitles/triple/three.srt +11 -0
- data/spec/simultaneous_subtitles/triple/two.srt +11 -0
- data/spec/simultaneous_subtitles/triple_plus/ass/expected.ass +93 -0
- data/spec/simultaneous_subtitles/triple_plus/ass/out.ass +93 -0
- data/spec/simultaneous_subtitles/triple_plus/five.srt +11 -0
- data/spec/simultaneous_subtitles/triple_plus/four.srt +11 -0
- data/spec/simultaneous_subtitles/triple_plus/one.srt +11 -0
- data/spec/simultaneous_subtitles/triple_plus/six.srt +11 -0
- data/spec/simultaneous_subtitles/triple_plus/srt/expected.srt +149 -0
- data/spec/simultaneous_subtitles/triple_plus/srt/out.srt +149 -0
- data/spec/simultaneous_subtitles/triple_plus/ssa/expected.ssa +93 -0
- data/spec/simultaneous_subtitles/triple_plus/ssa/out.ssa +93 -0
- data/spec/simultaneous_subtitles/triple_plus/three.srt +11 -0
- data/spec/simultaneous_subtitles/triple_plus/two.srt +11 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/specifications_spec.rb +138 -0
- data/spec/srt_spec.rb +134 -0
- data/spec/ssa_spec.rb +90 -0
- data/spec/timecode_correction/double_reference/expected.srt +13 -0
- data/spec/timecode_correction/double_reference/in.srt +12 -0
- data/spec/timecode_correction/double_reference/out.srt +13 -0
- data/spec/timecode_correction/framerate/expected.srt +5 -0
- data/spec/timecode_correction/framerate/in.srt +4 -0
- data/spec/timecode_correction/framerate/out.srt +5 -0
- data/spec/timecode_correction/framerate_plus_reference/expected.srt +13 -0
- data/spec/timecode_correction/framerate_plus_reference/in.srt +12 -0
- data/spec/timecode_correction/framerate_plus_reference/out.srt +13 -0
- data/spec/timecode_correction/single_reference/expected.srt +13 -0
- data/spec/timecode_correction/single_reference/in.srt +12 -0
- data/spec/timecode_correction/single_reference/out.srt +13 -0
- data/spec/timecode_correction/timecode_correction_spec.rb +124 -0
- data/spec/transcoding/gb2312-ascii/in.srt +12 -0
- data/spec/transcoding/iso-8859-1_utf-8/expected.srt +12 -0
- data/spec/transcoding/iso-8859-1_utf-8/in.srt +11 -0
- data/spec/transcoding/iso-8859-1_utf-8/out.srt +12 -0
- data/spec/transcoding/transcoding_spec.rb +116 -0
- data/spec/transcoding/utf-8_gbk/expected.srt +12 -0
- data/spec/transcoding/utf-8_gbk/in.srt +11 -0
- data/spec/transcoding/utf-8_gbk/out.srt +12 -0
- data/spec/transcoding/windows-1252_utf-8/expected.srt +12 -0
- data/spec/transcoding/windows-1252_utf-8/in.srt +11 -0
- data/spec/transcoding/windows-1252_utf-8/out.srt +12 -0
- data/titlekit.gemspec +28 -0
- metadata +313 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
require File.join(File.expand_path(__dir__), '../spec_helper')
|
2
|
+
|
3
|
+
describe Titlekit::Job do
|
4
|
+
|
5
|
+
describe 'Format conversion' do
|
6
|
+
|
7
|
+
context 'From ASS to SRT' do
|
8
|
+
before(:all) do
|
9
|
+
@in = File.join(__dir__, 'ass_srt', 'in.ass')
|
10
|
+
@out = File.join(__dir__, 'ass_srt', 'out.srt')
|
11
|
+
@expected = File.join(__dir__, 'ass_srt', 'expected.srt')
|
12
|
+
|
13
|
+
File.delete(@out) if File.exist?(@out)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'runs the job' do
|
17
|
+
job = Titlekit::Job.new
|
18
|
+
|
19
|
+
have = job.have
|
20
|
+
have.file(@in)
|
21
|
+
|
22
|
+
want = job.want
|
23
|
+
want.file(@out)
|
24
|
+
|
25
|
+
expect(job.run).to be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'delivers the expected output' do
|
29
|
+
expect(FileUtils.compare_file(@out, @expected)).to be_true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'From SRT to ASS' do
|
34
|
+
before(:all) do
|
35
|
+
@in = File.join(__dir__, 'srt_ass', 'in.srt')
|
36
|
+
@out = File.join(__dir__, 'srt_ass', 'out.ass')
|
37
|
+
@expected = File.join(__dir__, 'srt_ass', 'expected.ass')
|
38
|
+
|
39
|
+
File.delete(@out) if File.exist?(@out)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'runs the job' do
|
43
|
+
job = Titlekit::Job.new
|
44
|
+
|
45
|
+
have = job.have
|
46
|
+
have.file(@in)
|
47
|
+
|
48
|
+
want = job.want
|
49
|
+
want.file(@out)
|
50
|
+
|
51
|
+
expect(job.run).to be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'delivers the expected output' do
|
55
|
+
expect(FileUtils.compare_file(@out, @expected)).to be_true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'From SRT to SSA' do
|
60
|
+
before(:all) do
|
61
|
+
@in = File.join(__dir__, 'srt_ssa', 'in.srt')
|
62
|
+
@out = File.join(__dir__, 'srt_ssa', 'out.ssa')
|
63
|
+
@expected = File.join(__dir__, 'srt_ssa', 'expected.ssa')
|
64
|
+
|
65
|
+
File.delete(@out) if File.exist?(@out)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'runs the job' do
|
69
|
+
job = Titlekit::Job.new
|
70
|
+
|
71
|
+
have = job.have
|
72
|
+
have.file(@in)
|
73
|
+
|
74
|
+
want = job.want
|
75
|
+
want.file(@out)
|
76
|
+
|
77
|
+
expect(job.run).to be_true
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'delivers the expected output' do
|
81
|
+
expect(FileUtils.compare_file(@out, @expected)).to be_true
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'From SSA to SRT' do
|
86
|
+
before(:all) do
|
87
|
+
@in = File.join(__dir__, 'ssa_srt', 'in.ssa')
|
88
|
+
@out = File.join(__dir__, 'ssa_srt', 'out.srt')
|
89
|
+
@expected = File.join(__dir__, 'ssa_srt', 'expected.srt')
|
90
|
+
|
91
|
+
File.delete(@out) if File.exist?(@out)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'runs the job' do
|
95
|
+
job = Titlekit::Job.new
|
96
|
+
|
97
|
+
have = job.have
|
98
|
+
have.file(@in)
|
99
|
+
|
100
|
+
want = job.want
|
101
|
+
want.file(@out)
|
102
|
+
|
103
|
+
expect(job.run).to be_true
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'delivers the expected output' do
|
107
|
+
expect(FileUtils.compare_file(@out, @expected)).to be_true
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00+
|
3
|
+
|
4
|
+
[V4+ Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
6
|
+
Style: Default,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
7
|
+
Style: Top,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,8,20,20,20,1
|
8
|
+
Style: Middle,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,5,20,20,20,1
|
9
|
+
Style: EDF393,Arial,16,&H0093F3ED,&H0093F3ED,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
10
|
+
Style: F5E665,Arial,16,&H0065E6F5,&H0065E6F5,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
11
|
+
Style: FFC472,Arial,16,&H0072C4FF,&H0072C4FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
12
|
+
Style: FFA891,Arial,16,&H0091A8FF,&H0091A8FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
13
|
+
Style: 89BABE,Arial,16,&H00BEBA89,&H00BEBA89,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.36,0:00:07.30,Default,,0000,0000,0000,,Commencing shaving the yak.
|
18
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,WAT?
|
19
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,- I ...\N- Enough!!!
|
@@ -0,0 +1,19 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00+
|
3
|
+
|
4
|
+
[V4+ Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
6
|
+
Style: Default,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
7
|
+
Style: Top,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,8,20,20,20,1
|
8
|
+
Style: Middle,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,5,20,20,20,1
|
9
|
+
Style: EDF393,Arial,16,&H0093F3ED,&H0093F3ED,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
10
|
+
Style: F5E665,Arial,16,&H0065E6F5,&H0065E6F5,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
11
|
+
Style: FFC472,Arial,16,&H0072C4FF,&H0072C4FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
12
|
+
Style: FFA891,Arial,16,&H0091A8FF,&H0091A8FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
13
|
+
Style: 89BABE,Arial,16,&H00BEBA89,&H00BEBA89,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.36,0:00:07.30,Default,,0000,0000,0000,,Commencing shaving the yak.
|
18
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,WAT?
|
19
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,- I ...\N- Enough!!!
|
@@ -0,0 +1,19 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00
|
3
|
+
|
4
|
+
[V4 Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
|
6
|
+
Style: Default,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
7
|
+
Style: Middle,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,10,70,70,40,0,0
|
8
|
+
Style: Top,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,6,70,70,40,0,0
|
9
|
+
Style: EDF393,Arial,16,9696237,9696237,9696237,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
10
|
+
Style: F5E665,Arial,16,6678261,6678261,6678261,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
11
|
+
Style: FFC472,Arial,16,7521535,7521535,7521535,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
12
|
+
Style: FFA891,Arial,16,9545983,9545983,9545983,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
13
|
+
Style: 89BABE,Arial,16,12499593,12499593,12499593,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.36,0:00:07.30,Default,,0000,0000,0000,,Commencing shaving the yak.
|
18
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,WAT?
|
19
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,- I ...\N- Enough!!!
|
@@ -0,0 +1,19 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00
|
3
|
+
|
4
|
+
[V4 Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
|
6
|
+
Style: Default,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
7
|
+
Style: Middle,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,10,70,70,40,0,0
|
8
|
+
Style: Top,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,6,70,70,40,0,0
|
9
|
+
Style: EDF393,Arial,16,9696237,9696237,9696237,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
10
|
+
Style: F5E665,Arial,16,6678261,6678261,6678261,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
11
|
+
Style: FFC472,Arial,16,7521535,7521535,7521535,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
12
|
+
Style: FFA891,Arial,16,9545983,9545983,9545983,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
13
|
+
Style: 89BABE,Arial,16,12499593,12499593,12499593,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.36,0:00:07.30,Default,,0000,0000,0000,,Commencing shaving the yak.
|
18
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,WAT?
|
19
|
+
Dialogue: 0,0:00:24.00,0:00:37.80,Default,,0000,0000,0000,,- I ...\N- Enough!!!
|
@@ -0,0 +1,26 @@
|
|
1
|
+
[Script Info]
|
2
|
+
; This is a Sub Station Alpha v4 script.
|
3
|
+
; For Sub Station Alpha info and downloads,
|
4
|
+
; go to http://www.eswat.demon.co.uk/
|
5
|
+
; or email kotus@eswat.demon.co.uk
|
6
|
+
Title: Spirited Away
|
7
|
+
Original Script: Ian Roberts
|
8
|
+
Original Translation: Eisuke Ishibashi
|
9
|
+
ScriptType: v4.00
|
10
|
+
Collisions: Normal
|
11
|
+
PlayResY: 480
|
12
|
+
PlayDepth: 0
|
13
|
+
Wav: 0, 28688,H:\3.wav
|
14
|
+
LastWav: 1
|
15
|
+
Timer: 100.0000
|
16
|
+
|
17
|
+
[V4 Styles]
|
18
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
|
19
|
+
Style: ICredit,Gill Sans Condensed,36,16777215,65535,65535,-2147483640,-1,0,1,3,0,2,70,70,40,0,0
|
20
|
+
Style: IDefault,Gill Sans Condensed,30,65535,65535,65535,-2147483640,-1,0,1,3,0,2,70,70,40,0,0
|
21
|
+
Style: IScreenText,Gill Sans Condensed,30,16744576,65535,65535,-2147483640,-1,0,1,3,5,2,70,70,40,0,0
|
22
|
+
|
23
|
+
[Events]
|
24
|
+
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
25
|
+
Dialogue: Marked=0,0:00:06.60,0:00:08.90,IScreenText,,0000,0000,0000,,{\a10}See you again... Best wishes
|
26
|
+
Dialogue: Marked=0,0:00:11.84,0:00:14.74,ICredit,,0000,0000,0100,,{\a2}Story, Script & Direction - MIYAZAKI Hayao
|
data/spec/job_spec.rb
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
require File.join(File.expand_path(__dir__), 'spec_helper')
|
2
|
+
|
3
|
+
describe Titlekit::Job do
|
4
|
+
|
5
|
+
describe '#new' do
|
6
|
+
it 'creates a new instance' do
|
7
|
+
expect(Titlekit::Job.new).to be_a_kind_of(Titlekit::Job)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#have' do
|
12
|
+
context 'without a block' do
|
13
|
+
let(:have) do
|
14
|
+
Titlekit::Job.new.have
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns an instance of Have' do
|
18
|
+
expect(have).to be_a_kind_of(Titlekit::Have)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with a block, passing no variable' do
|
23
|
+
let(:have) do
|
24
|
+
Titlekit::Job.new.have do
|
25
|
+
encoding('utf-8')
|
26
|
+
file('spec/files/srt/simple.srt')
|
27
|
+
fps(25)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'returns an instance of Have' do
|
32
|
+
expect(have).to be_a_kind_of(Titlekit::Have)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'assigns specification properties in the block' do
|
36
|
+
expect(have.encoding).to eq('utf-8')
|
37
|
+
expect(have.file).to be
|
38
|
+
expect(have.fps).to eq(25)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with a block, passing a variable' do
|
43
|
+
let(:have) do
|
44
|
+
Titlekit::Job.new.have do |have|
|
45
|
+
have.encoding('utf-8')
|
46
|
+
have.file('spec/files/srt/simple.srt')
|
47
|
+
have.fps(25)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'returns an instance of Have' do
|
52
|
+
expect(have).to be_a_kind_of(Titlekit::Have)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'assigns specification properties in the block' do
|
56
|
+
expect(have.encoding).to eq('utf-8')
|
57
|
+
expect(have.file).to be
|
58
|
+
expect(have.fps).to eq(25)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#want' do
|
64
|
+
context 'without a block' do
|
65
|
+
let(:want) do
|
66
|
+
Titlekit::Job.new.want
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'returns an instance of Want' do
|
70
|
+
expect(want).to be_a_kind_of(Titlekit::Want)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'with a block, passing no variable' do
|
75
|
+
let(:want) do
|
76
|
+
Titlekit::Job.new.want do
|
77
|
+
encoding('utf-8')
|
78
|
+
file('out.srt')
|
79
|
+
fps(23.976)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'returns an instance of Want' do
|
84
|
+
expect(want).to be_a_kind_of(Titlekit::Want)
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'assigns specification properties in the block' do
|
88
|
+
expect(want.encoding).to eq('utf-8')
|
89
|
+
expect(want.file).to eq('out.srt')
|
90
|
+
expect(want.fps).to eq(23.976)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'with a block, passing a variable' do
|
95
|
+
let(:want) do
|
96
|
+
Titlekit::Job.new.want do |want|
|
97
|
+
want.encoding('utf-8')
|
98
|
+
want.file('out.srt')
|
99
|
+
want.fps(23.976)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'returns an instance of Want' do
|
104
|
+
expect(want).to be_a_kind_of(Titlekit::Want)
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'assigns specification properties in the block' do
|
108
|
+
expect(want.encoding).to eq('utf-8')
|
109
|
+
expect(want.file).to eq('out.srt')
|
110
|
+
expect(want.fps).to eq(23.976)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#run' do
|
116
|
+
|
117
|
+
context 'with input files that don\'t exist' do
|
118
|
+
it 'gracefully aborts the job' do
|
119
|
+
job = Titlekit::Job.new
|
120
|
+
job.have { file('something/that/without/doubt/wont/exist.srt') }
|
121
|
+
job.want { file('something/that/does/not/matter/anyway.ass') }
|
122
|
+
|
123
|
+
expect(job.run).to be_false
|
124
|
+
expect(job.report.join).to include('Failure while reading')
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'with output files that can\'t be created' do
|
129
|
+
it 'gracefully aborts the job' do
|
130
|
+
job = Titlekit::Job.new
|
131
|
+
job.have { file('spec/files/srt/simple.srt') }
|
132
|
+
job.want { file('!@#$%^&*()|?/\\.ass') }
|
133
|
+
|
134
|
+
expect(job.run).to be_false
|
135
|
+
expect(job.report.join).to include('Failure while writing')
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'with an input format that is not supported' do
|
140
|
+
it 'gracefully aborts the job' do
|
141
|
+
job = Titlekit::Job.new
|
142
|
+
job.have { file('spec/files/try/unsupported.try') }
|
143
|
+
job.want { file('!@#$%^&*()|?/\.ass') }
|
144
|
+
|
145
|
+
expect(job.run).to be_false
|
146
|
+
expect(job.report.join).to include('Failure while importing TRY')
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context 'with an output format that is not supported' do
|
151
|
+
it 'gracefully aborts the job' do
|
152
|
+
job = Titlekit::Job.new
|
153
|
+
job.have { file('spec/files/srt/simple.srt') }
|
154
|
+
job.want { file('spec/files/try/unsupported-output.try') }
|
155
|
+
|
156
|
+
expect(job.run).to be_false
|
157
|
+
expect(job.report.join).to include('Failure while exporting TRY')
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00+
|
3
|
+
|
4
|
+
[V4+ Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
6
|
+
Style: Default,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
7
|
+
Style: Top,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,8,20,20,20,1
|
8
|
+
Style: Middle,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,5,20,20,20,1
|
9
|
+
Style: EDF393,Arial,16,&H0093F3ED,&H0093F3ED,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
10
|
+
Style: F5E665,Arial,16,&H0065E6F5,&H0065E6F5,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
11
|
+
Style: FFC472,Arial,16,&H0072C4FF,&H0072C4FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
12
|
+
Style: FFA891,Arial,16,&H0091A8FF,&H0091A8FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
13
|
+
Style: 89BABE,Arial,16,&H00BEBA89,&H00BEBA89,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Default,,0000,0000,0000,,We are using two subtitles simultaneously
|
18
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Top,,0000,0000,0000,,Somos utilizando dos subtítulos simultáneamente
|
19
|
+
Dialogue: 0,0:00:12.00,0:00:20.00,Default,,0000,0000,0000,,That is correct
|
20
|
+
Dialogue: 0,0:00:12.00,0:00:20.50,Top,,0000,0000,0000,,Esto es correcto
|
21
|
+
Dialogue: 0,0:00:22.00,0:00:30.00,Default,,0000,0000,0000,,They are not fully aligned, though
|
22
|
+
Dialogue: 0,0:00:23.00,0:00:31.00,Top,,0000,0000,0000,,No son alineado sin embargo
|
@@ -0,0 +1,22 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00+
|
3
|
+
|
4
|
+
[V4+ Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
6
|
+
Style: Default,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
7
|
+
Style: Top,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,8,20,20,20,1
|
8
|
+
Style: Middle,Arial,16,&H00FFFFFF,&H00FFFFFF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,5,20,20,20,1
|
9
|
+
Style: EDF393,Arial,16,&H0093F3ED,&H0093F3ED,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
10
|
+
Style: F5E665,Arial,16,&H0065E6F5,&H0065E6F5,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
11
|
+
Style: FFC472,Arial,16,&H0072C4FF,&H0072C4FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
12
|
+
Style: FFA891,Arial,16,&H0091A8FF,&H0091A8FF,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
13
|
+
Style: 89BABE,Arial,16,&H00BEBA89,&H00BEBA89,&H40000000,&H40000000,0,0,0,0,100,100,0,0.00,1,3,0,2,20,20,20,1
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Default,,0000,0000,0000,,We are using two subtitles simultaneously
|
18
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Top,,0000,0000,0000,,Somos utilizando dos subtítulos simultáneamente
|
19
|
+
Dialogue: 0,0:00:12.00,0:00:20.00,Default,,0000,0000,0000,,That is correct
|
20
|
+
Dialogue: 0,0:00:12.00,0:00:20.50,Top,,0000,0000,0000,,Esto es correcto
|
21
|
+
Dialogue: 0,0:00:22.00,0:00:30.00,Default,,0000,0000,0000,,They are not fully aligned, though
|
22
|
+
Dialogue: 0,0:00:23.00,0:00:31.00,Top,,0000,0000,0000,,No son alineado sin embargo
|
@@ -0,0 +1,27 @@
|
|
1
|
+
1
|
2
|
+
00:00:02,000 --> 00:00:10,000
|
3
|
+
<font color="#EDF393">We are using two subtitles simultaneously</font>
|
4
|
+
<font color="#F5E665">Somos utilizando dos subtítulos simultáneamente</font>
|
5
|
+
|
6
|
+
2
|
7
|
+
00:00:12,000 --> 00:00:20,000
|
8
|
+
<font color="#EDF393">That is correct</font>
|
9
|
+
<font color="#F5E665">Esto es correcto</font>
|
10
|
+
|
11
|
+
3
|
12
|
+
00:00:20,000 --> 00:00:20,500
|
13
|
+
<font color="#F5E665">Esto es correcto</font>
|
14
|
+
|
15
|
+
4
|
16
|
+
00:00:22,000 --> 00:00:23,000
|
17
|
+
<font color="#EDF393">They are not fully aligned, though</font>
|
18
|
+
|
19
|
+
5
|
20
|
+
00:00:23,000 --> 00:00:30,000
|
21
|
+
<font color="#EDF393">They are not fully aligned, though</font>
|
22
|
+
<font color="#F5E665">No son alineado sin embargo</font>
|
23
|
+
|
24
|
+
6
|
25
|
+
00:00:30,000 --> 00:00:31,000
|
26
|
+
<font color="#F5E665">No son alineado sin embargo</font>
|
27
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
1
|
2
|
+
00:00:02,000 --> 00:00:10,000
|
3
|
+
<font color="#EDF393">We are using two subtitles simultaneously</font>
|
4
|
+
<font color="#F5E665">Somos utilizando dos subtítulos simultáneamente</font>
|
5
|
+
|
6
|
+
2
|
7
|
+
00:00:12,000 --> 00:00:20,000
|
8
|
+
<font color="#EDF393">That is correct</font>
|
9
|
+
<font color="#F5E665">Esto es correcto</font>
|
10
|
+
|
11
|
+
3
|
12
|
+
00:00:20,000 --> 00:00:20,500
|
13
|
+
<font color="#F5E665">Esto es correcto</font>
|
14
|
+
|
15
|
+
4
|
16
|
+
00:00:22,000 --> 00:00:23,000
|
17
|
+
<font color="#EDF393">They are not fully aligned, though</font>
|
18
|
+
|
19
|
+
5
|
20
|
+
00:00:23,000 --> 00:00:30,000
|
21
|
+
<font color="#EDF393">They are not fully aligned, though</font>
|
22
|
+
<font color="#F5E665">No son alineado sin embargo</font>
|
23
|
+
|
24
|
+
6
|
25
|
+
00:00:30,000 --> 00:00:31,000
|
26
|
+
<font color="#F5E665">No son alineado sin embargo</font>
|
27
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00
|
3
|
+
|
4
|
+
[V4 Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
|
6
|
+
Style: Default,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
7
|
+
Style: Middle,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,10,70,70,40,0,0
|
8
|
+
Style: Top,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,6,70,70,40,0,0
|
9
|
+
Style: EDF393,Arial,16,9696237,9696237,9696237,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
10
|
+
Style: F5E665,Arial,16,6678261,6678261,6678261,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
11
|
+
Style: FFC472,Arial,16,7521535,7521535,7521535,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
12
|
+
Style: FFA891,Arial,16,9545983,9545983,9545983,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
13
|
+
Style: 89BABE,Arial,16,12499593,12499593,12499593,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Default,,0000,0000,0000,,We are using two subtitles simultaneously
|
18
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Top,,0000,0000,0000,,Somos utilizando dos subtítulos simultáneamente
|
19
|
+
Dialogue: 0,0:00:12.00,0:00:20.00,Default,,0000,0000,0000,,That is correct
|
20
|
+
Dialogue: 0,0:00:12.00,0:00:20.50,Top,,0000,0000,0000,,Esto es correcto
|
21
|
+
Dialogue: 0,0:00:22.00,0:00:30.00,Default,,0000,0000,0000,,They are not fully aligned, though
|
22
|
+
Dialogue: 0,0:00:23.00,0:00:31.00,Top,,0000,0000,0000,,No son alineado sin embargo
|
@@ -0,0 +1,22 @@
|
|
1
|
+
[Script Info]
|
2
|
+
ScriptType: v4.00
|
3
|
+
|
4
|
+
[V4 Styles]
|
5
|
+
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
|
6
|
+
Style: Default,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
7
|
+
Style: Middle,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,10,70,70,40,0,0
|
8
|
+
Style: Top,Arial,16,16777215,16777215,16777215,-2147483640,0,0,1,3,0,6,70,70,40,0,0
|
9
|
+
Style: EDF393,Arial,16,9696237,9696237,9696237,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
10
|
+
Style: F5E665,Arial,16,6678261,6678261,6678261,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
11
|
+
Style: FFC472,Arial,16,7521535,7521535,7521535,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
12
|
+
Style: FFA891,Arial,16,9545983,9545983,9545983,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
13
|
+
Style: 89BABE,Arial,16,12499593,12499593,12499593,-2147483640,0,0,1,3,0,2,70,70,40,0,0
|
14
|
+
|
15
|
+
[Events]
|
16
|
+
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
17
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Default,,0000,0000,0000,,We are using two subtitles simultaneously
|
18
|
+
Dialogue: 0,0:00:02.00,0:00:10.00,Top,,0000,0000,0000,,Somos utilizando dos subtítulos simultáneamente
|
19
|
+
Dialogue: 0,0:00:12.00,0:00:20.00,Default,,0000,0000,0000,,That is correct
|
20
|
+
Dialogue: 0,0:00:12.00,0:00:20.50,Top,,0000,0000,0000,,Esto es correcto
|
21
|
+
Dialogue: 0,0:00:22.00,0:00:30.00,Default,,0000,0000,0000,,They are not fully aligned, though
|
22
|
+
Dialogue: 0,0:00:23.00,0:00:31.00,Top,,0000,0000,0000,,No son alineado sin embargo
|