screenkit 0.0.9 → 0.0.11
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/DOCUMENTATION.md +75 -9
- data/lib/screenkit/callout/styles/base.rb +1 -100
- data/lib/screenkit/cli/base.rb +1 -1
- data/lib/screenkit/cli/episode.rb +21 -4
- data/lib/screenkit/config.rb +92 -0
- data/lib/screenkit/content_type.rb +2 -1
- data/lib/screenkit/core_ext/hash.rb +27 -0
- data/lib/screenkit/core_ext/json.rb +6 -0
- data/lib/screenkit/core_ext.rb +1 -0
- data/lib/screenkit/exporter/episode.rb +32 -47
- data/lib/screenkit/exporter/intro.rb +94 -60
- data/lib/screenkit/exporter/playwright.rb +33 -0
- data/lib/screenkit/exporter/segment.rb +23 -3
- data/lib/screenkit/generators/episode/config.yml.erb +2 -2
- data/lib/screenkit/generators/project/.gitignore +1 -0
- data/lib/screenkit/generators/project/screenkit.yml +12 -7
- data/lib/screenkit/generators/project.rb +1 -0
- data/lib/screenkit/image_magick.rb +106 -0
- data/lib/screenkit/parallel_processor.rb +6 -6
- data/lib/screenkit/schemas/{project.json → config.json} +9 -2
- data/lib/screenkit/schemas/refs/intro.json +7 -3
- data/lib/screenkit/schemas/refs/playwright.json +13 -0
- data/lib/screenkit/text_style.rb +42 -0
- data/lib/screenkit/version.rb +1 -1
- data/lib/screenkit.rb +4 -4
- metadata +14 -12
- data/lib/screenkit/callout/text_style.rb +0 -44
- data/lib/screenkit/config/base.rb +0 -58
- data/lib/screenkit/config/episode.rb +0 -48
- data/lib/screenkit/config/project.rb +0 -54
- data/lib/screenkit/schemas/episode.json +0 -26
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: screenkit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nando Vieira
|
|
@@ -304,16 +304,14 @@ files:
|
|
|
304
304
|
- lib/screenkit/callout/styles/inline_block.rb
|
|
305
305
|
- lib/screenkit/callout/styles/shadow_block.rb
|
|
306
306
|
- lib/screenkit/callout/styles/social.rb
|
|
307
|
-
- lib/screenkit/callout/text_style.rb
|
|
308
307
|
- lib/screenkit/cli.rb
|
|
309
308
|
- lib/screenkit/cli/base.rb
|
|
310
309
|
- lib/screenkit/cli/episode.rb
|
|
311
310
|
- lib/screenkit/cli/root.rb
|
|
312
|
-
- lib/screenkit/config
|
|
313
|
-
- lib/screenkit/config/episode.rb
|
|
314
|
-
- lib/screenkit/config/project.rb
|
|
311
|
+
- lib/screenkit/config.rb
|
|
315
312
|
- lib/screenkit/content_type.rb
|
|
316
313
|
- lib/screenkit/core_ext.rb
|
|
314
|
+
- lib/screenkit/core_ext/hash.rb
|
|
317
315
|
- lib/screenkit/core_ext/json.rb
|
|
318
316
|
- lib/screenkit/core_ext/string.rb
|
|
319
317
|
- lib/screenkit/duration.rb
|
|
@@ -322,6 +320,7 @@ files:
|
|
|
322
320
|
- lib/screenkit/exporter/image.rb
|
|
323
321
|
- lib/screenkit/exporter/intro.rb
|
|
324
322
|
- lib/screenkit/exporter/outro.rb
|
|
323
|
+
- lib/screenkit/exporter/playwright.rb
|
|
325
324
|
- lib/screenkit/exporter/segment.rb
|
|
326
325
|
- lib/screenkit/exporter/video.rb
|
|
327
326
|
- lib/screenkit/generators/episode.rb
|
|
@@ -331,6 +330,7 @@ files:
|
|
|
331
330
|
- lib/screenkit/generators/episode/scripts/001.txt
|
|
332
331
|
- lib/screenkit/generators/project.rb
|
|
333
332
|
- lib/screenkit/generators/project/.github/screenkit.yml
|
|
333
|
+
- lib/screenkit/generators/project/.gitignore
|
|
334
334
|
- lib/screenkit/generators/project/Gemfile.erb
|
|
335
335
|
- lib/screenkit/generators/project/resources/backtracks/default.aac
|
|
336
336
|
- lib/screenkit/generators/project/resources/fonts/open-sans/OFL.txt
|
|
@@ -344,6 +344,7 @@ files:
|
|
|
344
344
|
- lib/screenkit/generators/project/resources/sounds/whoosh.mp3
|
|
345
345
|
- lib/screenkit/generators/project/screenkit.yml
|
|
346
346
|
- lib/screenkit/http.rb
|
|
347
|
+
- lib/screenkit/image_magick.rb
|
|
347
348
|
- lib/screenkit/logfile.rb
|
|
348
349
|
- lib/screenkit/parallel_processor.rb
|
|
349
350
|
- lib/screenkit/path_lookup.rb
|
|
@@ -370,8 +371,7 @@ files:
|
|
|
370
371
|
- lib/screenkit/schemas/callout_styles/social.json
|
|
371
372
|
- lib/screenkit/schemas/callouts/inline_block.json
|
|
372
373
|
- lib/screenkit/schemas/callouts/shadow_block.json
|
|
373
|
-
- lib/screenkit/schemas/
|
|
374
|
-
- lib/screenkit/schemas/project.json
|
|
374
|
+
- lib/screenkit/schemas/config.json
|
|
375
375
|
- lib/screenkit/schemas/refs/anchor.json
|
|
376
376
|
- lib/screenkit/schemas/refs/animation.json
|
|
377
377
|
- lib/screenkit/schemas/refs/background.json
|
|
@@ -384,6 +384,7 @@ files:
|
|
|
384
384
|
- lib/screenkit/schemas/refs/intro.json
|
|
385
385
|
- lib/screenkit/schemas/refs/logo.json
|
|
386
386
|
- lib/screenkit/schemas/refs/outro.json
|
|
387
|
+
- lib/screenkit/schemas/refs/playwright.json
|
|
387
388
|
- lib/screenkit/schemas/refs/position.json
|
|
388
389
|
- lib/screenkit/schemas/refs/scenes.json
|
|
389
390
|
- lib/screenkit/schemas/refs/size.json
|
|
@@ -401,6 +402,7 @@ files:
|
|
|
401
402
|
- lib/screenkit/sound.rb
|
|
402
403
|
- lib/screenkit/spacing.rb
|
|
403
404
|
- lib/screenkit/spinner.rb
|
|
405
|
+
- lib/screenkit/text_style.rb
|
|
404
406
|
- lib/screenkit/time_formatter.rb
|
|
405
407
|
- lib/screenkit/transition.rb
|
|
406
408
|
- lib/screenkit/tts/base.rb
|
|
@@ -418,10 +420,10 @@ metadata:
|
|
|
418
420
|
rubygems_mfa_required: 'true'
|
|
419
421
|
homepage_uri: https://github.com/fnando/screenkit
|
|
420
422
|
bug_tracker_uri: https://github.com/fnando/screenkit/issues
|
|
421
|
-
source_code_uri: https://github.com/fnando/screenkit/tree/v0.0.
|
|
422
|
-
changelog_uri: https://github.com/fnando/screenkit/tree/v0.0.
|
|
423
|
-
documentation_uri: https://github.com/fnando/screenkit/tree/v0.0.
|
|
424
|
-
license_uri: https://github.com/fnando/screenkit/tree/v0.0.
|
|
423
|
+
source_code_uri: https://github.com/fnando/screenkit/tree/v0.0.11
|
|
424
|
+
changelog_uri: https://github.com/fnando/screenkit/tree/v0.0.11/CHANGELOG.md
|
|
425
|
+
documentation_uri: https://github.com/fnando/screenkit/tree/v0.0.11/README.md
|
|
426
|
+
license_uri: https://github.com/fnando/screenkit/tree/v0.0.11/LICENSE.md
|
|
425
427
|
rdoc_options: []
|
|
426
428
|
require_paths:
|
|
427
429
|
- lib
|
|
@@ -436,7 +438,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
436
438
|
- !ruby/object:Gem::Version
|
|
437
439
|
version: '0'
|
|
438
440
|
requirements: []
|
|
439
|
-
rubygems_version:
|
|
441
|
+
rubygems_version: 4.0.0
|
|
440
442
|
specification_version: 4
|
|
441
443
|
summary: Terminal to screencast, simplified
|
|
442
444
|
test_files: []
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ScreenKit
|
|
4
|
-
class Callout
|
|
5
|
-
class TextStyle
|
|
6
|
-
attr_reader :color, :size, :font_path, :align
|
|
7
|
-
|
|
8
|
-
def initialize(source:, **kwargs)
|
|
9
|
-
@source = source
|
|
10
|
-
|
|
11
|
-
kwargs.each do |key, value|
|
|
12
|
-
value = case key.to_sym
|
|
13
|
-
when :font_path
|
|
14
|
-
@source.search(value)
|
|
15
|
-
else
|
|
16
|
-
value
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
instance_variable_set(:"@#{key}", value)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Convert hex color (with optional alpha) to RGB + opacity
|
|
24
|
-
# #RRGGBB or #RRGGBBAA
|
|
25
|
-
def rgb_color
|
|
26
|
-
color.match(/#([0-9a-fA-F]{6})/) {|m| m[1] }
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def opacity
|
|
30
|
-
if color.length == 9
|
|
31
|
-
color.match(/#[0-9a-fA-F]{6}([0-9a-fA-F]{2})/) do |m|
|
|
32
|
-
m[1].to_i(16) / 255.0
|
|
33
|
-
end
|
|
34
|
-
else
|
|
35
|
-
1.0
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def as_json(*)
|
|
40
|
-
{color:, size:, font_path:, rgb_color:, opacity:, align:}
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ScreenKit
|
|
4
|
-
module Config
|
|
5
|
-
class Base
|
|
6
|
-
extend SchemaValidator
|
|
7
|
-
|
|
8
|
-
attr_reader :raw_options
|
|
9
|
-
|
|
10
|
-
def self.load_file(path)
|
|
11
|
-
unless File.file?(path)
|
|
12
|
-
raise FileNotFoundError, "Config file not found: #{path}"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
template = File.read(path)
|
|
16
|
-
contents = ERB.new(template).result
|
|
17
|
-
|
|
18
|
-
config = YAML.load(contents, symbolize_names: true)
|
|
19
|
-
load(config)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def self.load(config)
|
|
23
|
-
validate!(config)
|
|
24
|
-
|
|
25
|
-
new(**config)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def initialize(**kwargs)
|
|
29
|
-
@raw_options = kwargs
|
|
30
|
-
|
|
31
|
-
kwargs.each do |key, value|
|
|
32
|
-
value = process(key, value)
|
|
33
|
-
instance_variable_set(:"@#{key}", value)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def process(_key, value)
|
|
38
|
-
value
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def to_h
|
|
42
|
-
instance_variables.each_with_object({}) do |var, hash|
|
|
43
|
-
key = var.to_s.delete_prefix("@").to_sym
|
|
44
|
-
value = instance_variable_get(var)
|
|
45
|
-
|
|
46
|
-
hash[key] =
|
|
47
|
-
if value.respond_to?(:as_json)
|
|
48
|
-
value.as_json
|
|
49
|
-
elsif value.is_a?(Array)
|
|
50
|
-
value.map {|v| v.respond_to?(:as_json) ? v.as_json : v }
|
|
51
|
-
else
|
|
52
|
-
value
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ScreenKit
|
|
4
|
-
module Config
|
|
5
|
-
class Episode < Base
|
|
6
|
-
# The scenes configuration for the episode.
|
|
7
|
-
attr_reader :scenes
|
|
8
|
-
|
|
9
|
-
# The title of the episode.
|
|
10
|
-
attr_reader :title
|
|
11
|
-
|
|
12
|
-
# The episode's TTS engine configuration.
|
|
13
|
-
attr_reader :tts
|
|
14
|
-
|
|
15
|
-
# The episode's backtrack music configuration.
|
|
16
|
-
attr_reader :backtrack
|
|
17
|
-
|
|
18
|
-
# The watermark configuration.
|
|
19
|
-
attr_reader :watermark
|
|
20
|
-
|
|
21
|
-
# The demotape configuration.
|
|
22
|
-
attr_reader :demotape
|
|
23
|
-
|
|
24
|
-
# The callout styles configuration.
|
|
25
|
-
attr_reader :callout_styles
|
|
26
|
-
|
|
27
|
-
def self.schema_path
|
|
28
|
-
@schema_path ||=
|
|
29
|
-
ScreenKit.root_dir.join("schemas/episode.json")
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def initialize(**)
|
|
33
|
-
@scenes = {}
|
|
34
|
-
|
|
35
|
-
super
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def process(key, value)
|
|
39
|
-
case key.to_sym
|
|
40
|
-
when /_(dir|path)$/
|
|
41
|
-
Pathname(value)
|
|
42
|
-
else
|
|
43
|
-
value
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ScreenKit
|
|
4
|
-
module Config
|
|
5
|
-
class Project < Base
|
|
6
|
-
# The directory where episode source files are stored.
|
|
7
|
-
attr_reader :episode_dir
|
|
8
|
-
|
|
9
|
-
# The directory where resources files are stored.
|
|
10
|
-
attr_reader :resources_dir
|
|
11
|
-
|
|
12
|
-
# The output directory for exported files.
|
|
13
|
-
attr_reader :output_dir
|
|
14
|
-
|
|
15
|
-
# Callout styles
|
|
16
|
-
attr_reader :callout_styles
|
|
17
|
-
|
|
18
|
-
# Scene configurations
|
|
19
|
-
attr_reader :scenes
|
|
20
|
-
|
|
21
|
-
# TTS configuration
|
|
22
|
-
attr_reader :tts
|
|
23
|
-
|
|
24
|
-
# The backtrack music configuration.
|
|
25
|
-
attr_reader :backtrack
|
|
26
|
-
|
|
27
|
-
# The watermark configuration.
|
|
28
|
-
attr_reader :watermark
|
|
29
|
-
|
|
30
|
-
# The demotape configuration.
|
|
31
|
-
attr_reader :demotape
|
|
32
|
-
|
|
33
|
-
def self.schema_path
|
|
34
|
-
@schema_path ||=
|
|
35
|
-
ScreenKit.root_dir.join("schemas/project.json")
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
private def process(key, value)
|
|
39
|
-
case key.to_sym
|
|
40
|
-
when :resources_dir
|
|
41
|
-
Array(value)
|
|
42
|
-
when /_(dir|path)$/
|
|
43
|
-
Pathname(value)
|
|
44
|
-
else
|
|
45
|
-
value
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def to_h
|
|
50
|
-
raw_options
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
3
|
-
"$id": "https://screenkit.dev/schemas/episode.json",
|
|
4
|
-
"title": "ScreenKit Episode Configuration (config.yml)",
|
|
5
|
-
"type": "object",
|
|
6
|
-
"required": ["title"],
|
|
7
|
-
"properties": {
|
|
8
|
-
"backtrack": { "$ref": "refs/sound.json" },
|
|
9
|
-
"scenes": { "$ref": "refs/scenes.json" },
|
|
10
|
-
"tts": { "$ref": "refs/tts.json" },
|
|
11
|
-
"watermark": { "$ref": "refs/watermark.json" },
|
|
12
|
-
"title": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"description": "The episode title",
|
|
15
|
-
"minLength": 1,
|
|
16
|
-
"pattern": "\\S"
|
|
17
|
-
},
|
|
18
|
-
"demotape": { "$ref": "refs/demotape.json" },
|
|
19
|
-
"callout_styles": {
|
|
20
|
-
"type": "object",
|
|
21
|
-
"additionalProperties": {
|
|
22
|
-
"$ref": "refs/callout_style.json"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|