screenscrot 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|