screenscrot 0.1.0
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 +7 -0
- data/bin/screenscrot +46 -0
- data/lib/screenscrot/version.rb +5 -0
- data/lib/screenscrot.rb +103 -0
- metadata +95 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bc37a5ede10e26e8da5d5cceba93a4b2d15a15d9ccfae80bd7ad363e300a9a22
|
4
|
+
data.tar.gz: d512bd19e7dc9820084cf1615410639e150240af95a7489f5c1dd3bd0f459f6f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bdbf0d667085956c51e4d27d5df623c4f1041d72d4fa2472af04187a9b8c76d73db7a8b06886d2940af54bb51dc5e7c2d3d3f643edb5974085703e1d8c0e4345
|
7
|
+
data.tar.gz: f94a5a1e69b16c1870c88b4cc3ede26077e3bd2be9b0b1f9c2d67187c513ee6a7b31e10f61725dee210cb23c616694340f652b3a7f843b9f3c722e996c5fc73a
|
data/bin/screenscrot
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require_relative '../lib/screenscrot'
|
5
|
+
|
6
|
+
puts 'Start Recording Screenshots...'
|
7
|
+
|
8
|
+
ScreenScrot.setup do |screen|
|
9
|
+
screen.title = ARGV[1] || 'ScreenScrot'
|
10
|
+
screen.ext = 'png'
|
11
|
+
screen.path = Dir.pwd
|
12
|
+
end
|
13
|
+
|
14
|
+
@screen = ScreenScrot.new(ScreenScrot.title)
|
15
|
+
|
16
|
+
system 'clear'
|
17
|
+
|
18
|
+
cnt = 5
|
19
|
+
cnt.times do
|
20
|
+
puts "Starting in #{cnt -= 1}"
|
21
|
+
sleep 1
|
22
|
+
system 'clear'
|
23
|
+
end
|
24
|
+
|
25
|
+
puts '[Screenshot Recording Started]'
|
26
|
+
|
27
|
+
str_time = Time.now
|
28
|
+
max_time = ARGV[0].to_i unless ARGV.empty?
|
29
|
+
|
30
|
+
display = ARGV.include?('--all') ? :all : :active
|
31
|
+
display = '--select' if ARGV.include?('--select')
|
32
|
+
|
33
|
+
until (Time.now - str_time).to_i >= max_time
|
34
|
+
@screen.capture(display)
|
35
|
+
sleep 0.5
|
36
|
+
end
|
37
|
+
|
38
|
+
print '[Screenshot Recording Stopped] after '
|
39
|
+
puts "#{(Time.now - str_time).to_f.round(2)} seconds"
|
40
|
+
puts "Captured frames -> [#{@screen.frames}]"
|
41
|
+
puts ' > making GIF animation...'
|
42
|
+
|
43
|
+
@screen.to_gif
|
44
|
+
|
45
|
+
print "[GIF CREATED!] - File saved as #{@screen.title}.gif in #{@screen.directory}"
|
46
|
+
puts
|
data/lib/screenscrot.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'screenscrot/version'
|
4
|
+
|
5
|
+
##
|
6
|
+
# Capture screenshots with SCROT and create .gif animation
|
7
|
+
#
|
8
|
+
class ScreenScrot
|
9
|
+
attr_accessor :title, :ext, :path, :directory, :frames
|
10
|
+
|
11
|
+
alias extension ext
|
12
|
+
alias dir directory
|
13
|
+
|
14
|
+
##
|
15
|
+
# Set default configuration for title, image extension and path directory.
|
16
|
+
#
|
17
|
+
class << self
|
18
|
+
attr_accessor :title, :path, :ext
|
19
|
+
|
20
|
+
def configure
|
21
|
+
init
|
22
|
+
yield(ScreenScrot) if block_given?
|
23
|
+
return true if title && path && ext
|
24
|
+
|
25
|
+
false
|
26
|
+
end
|
27
|
+
|
28
|
+
alias config configure
|
29
|
+
alias setup configure
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def init
|
34
|
+
@title ||= 'ScreenScrot'
|
35
|
+
@path ||= Dir.pwd
|
36
|
+
@ext ||= 'png'
|
37
|
+
true
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# @example
|
43
|
+
# screen = ScreenScrot.new 'title', 'path_to_dir', 'image_extension'
|
44
|
+
# @return [ScreenScrot] ScreenScrot instance object.
|
45
|
+
#
|
46
|
+
def initialize(title = nil, path = nil, ext = nil)
|
47
|
+
ScreenScrot.configure
|
48
|
+
@frames = 0
|
49
|
+
@title = title || ScreenScrot.title
|
50
|
+
@path = path || ScreenScrot.path
|
51
|
+
@ext = ext || ScreenScrot.ext
|
52
|
+
[@title, @path, @ext].select do |type|
|
53
|
+
raise 'Configuration data must be string!' unless type.is_a?(String)
|
54
|
+
end
|
55
|
+
@path += '/' unless @path.end_with?('/')
|
56
|
+
@filename = "#{@title}_#{rand(999)}"
|
57
|
+
@directory = "#{@path}#{@filename}/"
|
58
|
+
system "mkdir -p #{@directory}" unless Dir.exist?(@directory)
|
59
|
+
Dir.chdir(@directory)
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# Capture screenshot with `SCROT`
|
64
|
+
#
|
65
|
+
# @example Capture active window (default)
|
66
|
+
# screen.capture
|
67
|
+
#
|
68
|
+
# @example Capture all screen
|
69
|
+
# screen.capture :all
|
70
|
+
#
|
71
|
+
# @example Capture selected with mouse
|
72
|
+
# screen.capture :select
|
73
|
+
#
|
74
|
+
def capture(win = :active, quality: 75)
|
75
|
+
scr = case win.to_sym
|
76
|
+
when :all
|
77
|
+
'' # rec everything
|
78
|
+
when :select
|
79
|
+
'-s' # select with mouse
|
80
|
+
else
|
81
|
+
'-u' # active window (default)
|
82
|
+
end
|
83
|
+
screenshot = @directory + Time.now.to_f.to_s.gsub!('.', '')
|
84
|
+
exec = "scrot #{scr} -q #{quality} #{screenshot + @frames.to_s}.#{@ext}"
|
85
|
+
system exec
|
86
|
+
# captured frames counter
|
87
|
+
@frames += 1
|
88
|
+
end
|
89
|
+
|
90
|
+
def to_gif(title = nil, opts = {})
|
91
|
+
title ||= @filename
|
92
|
+
opts[:dir] ||= @directory
|
93
|
+
opts[:ext] ||= @ext
|
94
|
+
opts[:delay] ||= 20
|
95
|
+
opts[:loop] ||= 2
|
96
|
+
Dir.chdir(opts[:dir])
|
97
|
+
title += '.gif' unless title.end_with? '.gif'
|
98
|
+
exec = "convert -delay #{opts[:delay]} -loop #{opts[:loop]} *.#{opts[:ext]} #{title}"
|
99
|
+
system exec
|
100
|
+
rescue StandardError
|
101
|
+
false
|
102
|
+
end
|
103
|
+
end
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: screenscrot
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alx3Dev
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-01-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pry
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.14.1
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.14.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 13.0.1
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 13.0.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.10.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.10.0
|
55
|
+
description: |
|
56
|
+
Get screenshots with Scrot, and convert into GIF. Simple terminal
|
57
|
+
recording with Ruby and Scrot.
|
58
|
+
email: alx3dev@gmail.com
|
59
|
+
executables:
|
60
|
+
- screenscrot
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- bin/screenscrot
|
65
|
+
- lib/screenscrot.rb
|
66
|
+
- lib/screenscrot/version.rb
|
67
|
+
homepage: https://www.github.com/alx3dev/screenscrot
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata:
|
71
|
+
homepage_uri: https://www.github.com/alx3dev/screenscrot
|
72
|
+
source_code_uri: https://www.github.com/alx3dev/screenscrot
|
73
|
+
changelog_uri: https://www.github.com/alx3dev/screenscrot/CHANGELOG.md
|
74
|
+
documentation_uri: https://rubygems.info/gems/screenscrot/0.1.0
|
75
|
+
rubygems_mfa_required: 'true'
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options: []
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 2.6.0
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
requirements: []
|
91
|
+
rubygems_version: 3.3.6
|
92
|
+
signing_key:
|
93
|
+
specification_version: 4
|
94
|
+
summary: Terminal to GIF recording with Ruby and Scrot.
|
95
|
+
test_files: []
|